CPU veya RAM nasıl paylaşılır?


21

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.


3
Bunu yapmanın sorunu, CPU ve RAM arasındaki nanosaniye ölçekli gecikmelere kıyasla, bir ağın inanılmaz derecede yavaş olmasıdır!
Phoshi

@ Phoshi: Ağ tarafından eklenen gecikme durumlarında bile, bu tür ayarlar disk tabanlı takas işlemlerinden daha hızlı olabilir .
Piskvor

@Piskvor: Ama herkesin size söyleyebileceği gibi, disk tabanlı takas oldukça büyük bir performans vuruşu!
Phoshi

@ Phoshi: Katılıyorum - gerçekten, ve en uygun çözüm "daha fazla fiziksel bellek eklemek". Tek söylediğim, hızlı bir ağ üzerinden hızlı bir cihaza çağrı yapmak (örneğin bir ramdisk), fiziksel bir diske çağrı yapmaktan daha hızlı olabilir. Başka bir deyişle: bu fiziksel RAM'den daha yavaş bir çok büyüklük sırası olsa bile, fiziksel bir ortamdaki bir takastan daha hızlı bir takas cihazı olabilir.
Piskvor

1
@Piskvor: Tamamen akla yatkın ve yanılıyor olsanız bile, kesinlikle aynı büyüklük sırasına göre, en kötü durumda kesinlikle daha kötü olmazdı. Herhalde daha fazla yerel fiziksel depoya sahip olmak daha ucuza geliyor!
Phoshi

Yanıtlar:


21

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 .


lütfen bana bazı referanslar söyle.
MJH

1
@MJH düzenlediğim cevabı gör.
ubiquibacon

thanks.but bu öğretici çalışma Linux üzerinde ve ben Windows.also kullanıyorum, bununla uygulama MPI altında yazmalı ve onun kısıtlamasını yazmalı.
MJH

3
@MJH Windows ile çalışmak istiyorsanız, o zaman sadece Windows ile çalışan bir MPI kitaplığına ihtiyacınız var, ama kavram aynı. MPICH , Windows ile birlikte çalışır veya düşecek madeni paranız varsa, Windows kümenizi Windows HPC (MPI iletkenliğinde yerleşik) ile oluşturabilirsiniz. Bu, Windows'u kullanmanıza izin verirken, MPI için yazılmış programları kullanmanız gerekecek, şu anda bunun yolu yok.
ubiquibacon

2
Bu cevap için teşekkürler - başvurulan eğitim adresi uiowa.edu/mihpclab/hpcSystsemTechnicalReport/… olarak değiştirildi ... Şerefe!
sdaau

9

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.


Uygulamamı ağımda paylaşmak için bir yazılım var mı? Yabancı ağa gerek duymadan! (örneğin. bir dosyayı oluşturmak istiyorum, bilgisayarımın bunu 7 gün içinde vermesini istiyorum, ancak bunu ağımla paylaşıyorum ve 1 güne indirgeme yapıyorum?
MJH

@MJH Maalesef, oluşturma için bu konuda hiçbir program duymadım.
AndrejaKo

1
ramdisks paylaşmak biraz anlamsız olsa da değil mi? Ağa bağlı depolamanın yavaşlığı ile birlikte koçun oynaklığını alıyorsunuz
Journeyman Geek

1
@AndrejaKo Doğruca video kodlama için hiçbirini duymadım (ama bazıları googling yapıyor, alfa / beta'da 1 veya iki proje buldum). Ancak, 3D render için ben var değil değil 90 beri bir 3D render programı görülen destek ağı oluşturmayı .
Scott Chamberlain

5

Uygulamamı ağımda paylaşmak için bir yazılım var mı? Yabancı ağa gerek duymadan! (örneğin. bir dosyayı oluşturmak istiyorum, bilgisayarımın bunu 7 gün içinde vermesini istiyorum, ancak bunu ağımla paylaşıyorum ve 1 güne indirgeme yapıyorum? - MJH 12: 12'de 11: 19'da

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 .


5

İş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.


0

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…

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.