Ağ iletişiminde Dosya (Disk Sürücüsü) veya Veritabanlarını paylaşıyoruz. Fakat CPU veya RAM'i ağ üzerinden nasıl paylaşabiliriz.
Ağ iletişiminde Dosya (Disk Sürücüsü) veya Veritabanlarını paylaşıyoruz. Fakat CPU veya RAM'i ağ üzerinden nasıl paylaşabiliriz.
Yanıtlar:
Bunu yapmak için CPU / RAM kaynaklarına erişen programların, söz konusu kaynaklara erişmek için özel olarak tasarlanması gerekir. Bu şekilde kurulan bir sisteme küme denir ve kaynakların tipik bir şekilde paylaşılması, MPI (mesaj geçiş arayüzü) adı verilen bir protokoldür. Ücretsiz bir indirme ve Linux ile kullanmak, minimum maliyetle güçlü bir küme (muhtemelen bir süper bilgisayar) sağlayabilir, ancak yine de özellikle MPI'den yararlanmak için tasarlanmış programlar olmadıkça işe yaramaz. Orada bazı iyi küme eğiticileri var, eğer hala ilgileniyorsanız bir tane kontrol etmelisiniz.
Düzenle:
Bir küme oluşturmak istiyorsanız , öğreticiyi burada tavsiye ederim . Bir yıl kadar önce bu öğreticiyi izleyerek bir küme yaptım ve çok iyi çalıştı. Öğretici biraz eskidir, bu nedenle bazı dosyalar öğreticinin tam olarak söylediği yerde olmayabilir (bazen dosyalar farklı / daha yeni Linux dağıtımlarında yer değiştirir) ancak Linux'a aşina olan bir kullanıcıysanız sorun olmamalıdır. Bu eğitimde MPI'nin daha eski bir sürümü kullanılıyor, ancak en yeni sürümü kullandım ve kolayca çözülmeyen hiçbir sorun yoktu. Yaptığınız şeye bağlı olarak, aslında MPI'den yararlanabilecek bir program olabilir. Evrensel kaynaklardan indirilebilen MPI'dan yararlanan bazı video kodlama ve sayı kodlama programları olduğunu biliyorum .
RAM disklerini kullanarak RAM paylaşabilirsiniz, ancak bu normal diskleri paylaşmaya benziyor, ancak bunlar başka bir bilgisayarın RAM'inde. Bir bilgisayarın başka bir bilgisayarın RAM'ını kendi RAM'i gibi kullanması için doğrudan bir yol yoktur, ancak diğer bilgisayarın RAM'ını kullanmanın bazı yolları vardır. Bundan sonraki paragrafta daha fazlası.
CPU paylaşımı için mümkün, ancak bunun için tek bir standart yok. Sadece paylaşamaz ve başka bir bilgisayarın gerekli kaynakları almasına izin veremezsiniz. Bunun yerine, bir kerede birden fazla bilgisayarda çalışabilecek özel olarak tasarlanmış uygulamalara sahip olmanız gerekir. Buna genellikle dağıtık bilgi işlem denir ve SETI @ Home, Einstein @ Home, Climateprediction.net ve diğerleri gibi bazı araştırma projeleri tarafından kullanılır.
Temelde programlar, yapılması gereken işi dağıtan merkezi bir sunucu olacak şekilde çalışır. Ağdaki bilgisayarlar, iş birimlerini merkezi bilgisayardan indirip işler. Bundan sonra, merkezi bilgisayar müşterilerin sonuçlarını alır ve bunları tek bir tutarlı sonuçta birleştirir. Bu şekilde bilgisayarlar CPU ve RAM kaynaklarını ağ üzerinden "paylaşır". Bunun dezavantajı, programların ağ üzerinden çalışacak şekilde yapılması gerektiği ve şu anda dağıtılmış hesaplamanın bir bilgisayar için yaygın olarak kullanılan kullanımlar arasında yeterince popüler olmaması, bu nedenle yalnızca az sayıda özel program desteklemesi. Diğer taraftan, çok sayıda kişisel bilgisayar veya oyun istasyonu 3 elde etmek, bir ana bilgisayara erişmek için olduğundan daha ucuz olduğu için, genellikle bilimsel amaçlar için kullanılır.
Bir XY Problemine düştünüz, “cpu ve ram accros bilgisayarlarını nasıl paylaşabilirim?” Sorusunu sormamalısınız, “Render'ları ZZZZZ'yi daha hızlı kullanmalarını sağlamak için birden fazla bilgisayarı nasıl kullanabilirim?”
Hangi yazılımı kullandığınıza ve ne hazırladığınıza ( video kodunu dönüştürüyor musunuz , yoksa bir 3D model / video mu oluşturuyorsunuz?).
Birkaç örnek seçmek için, ücretsiz 3B yazılımı Blender , birden fazla bilgisayarın bir çıktı oluşturmak üzere birlikte çalışabileceği dağıtılmış görüntülemeyi destekler . Video oluşturma işlemi yapıyorsanız, bazı hızlı googling'lerde, birden fazla bilgisayar kullanarak video ve ses dosyaları oluşturmanıza olanak sağlayan açık kaynaklı MediaEncodingCluster projesi bulundu .
İşlemci / RAM paylaşmayı sağlayan tek işletim sistemi plan9. Orada hemen hemen her şeyi verebilirsiniz. Bu elbette performansların iyi olduğu anlamına gelmez.
Ağ üzerinden görevler için cpu / ram paylaşmak için iyi bir özellik olacaktır. Şu anda, programları olayların gerçekleştiği kutuda tutmak için hala bazı eski kavramlara bağlıyız, ancak aynı makinedeki çoklu cpusların aynı kod parçasına erişmesine izin verebiliriz. Böyle bir şey yapan bir yöntemimiz var (en azından). Web sayfalarındaki java, hem sunucuyu hem de istemciyi kullanarak çalışır, ancak yine de bir şeyleri yapmak için bir sunucu-istemci şeklinde kilitlidir (sunucunun verinin çoğunu tuttuğu yer). Makinelere çok sayıda cpus varken yaptığımız gibi görevler atayabilmemiz için gerekenler (iş yapan program snip ve data snip atanmış olması gereken makine hariç. Ancak bu ağa daha ağır bir yük getirmektedir) Eğer görevlerin kendisi basit bir yapıya sahip değilse ve yeni tıkanıklıkların oluşmasına neden olabilirse…