Jak współdzielić procesor lub pamięć RAM?

21

W sieci udostępniamy plik (sterownik dysku) lub bazy danych. Ale w jaki sposób możemy współdzielić procesor lub pamięć RAM przez sieć.

MJH
źródło
3
Problem polega na tym, że w porównaniu do opóźnień w skali nanosekundowej między procesorem a pamięcią RAM, sieć jest niesamowicie wolna!
Phoshi,
@ Phoshi: Nawet z opóźnieniami dodanymi przez sieć, taka konfiguracja może być szybsza niż zamiana dyskowa.
Piskvor
@Piskvor: Ale jak każdy może ci powiedzieć, zamiana dysków jest dość ogromnym hitem wydajności!
Phoshi
@ Phoshi: Zgadzam się - rzeczywiście tak jest, a optymalnym rozwiązaniem jest „dodać więcej pamięci fizycznej”. Mówię tylko, że stronicowanie na szybkie urządzenie (np. Ramdysk) w szybkiej sieci może nadal być szybsze niż stronicowanie na dysk fizyczny. Innymi słowy: może to być szybsze urządzenie wymiany niż zamiana na fizycznym nośniku, mimo że będzie o wiele rzędów wielkości wolniejsze niż fizyczna pamięć RAM.
Piskvor
1
@Piskvor: Całkowicie prawdopodobne, a nawet jeśli się mylisz, z pewnością ma ten sam rząd wielkości, więc w najgorszym przypadku nie byłoby znacznie gorzej. Podejrzewam, że prawdopodobnie taniej jest mieć więcej lokalnego magazynu fizycznego!
Phoshi

Odpowiedzi:

21

Aby to zrobić, program (y) uzyskujący dostęp do zasobów procesora / pamięci RAM musi być specjalnie zaprojektowany, aby uzyskać dostęp do wspomnianych zasobów. System skonfigurowany w ten sposób jest nazywany klastrem, a typowym sposobem udostępniania zasobów jest protokół MPI (interfejs przekazywania wiadomości). Jest do pobrania za darmo i używanie go z Linuksem może przynieść potężny klaster (być może nawet superkomputer) przy minimalnych kosztach, ale znowu jest bezużyteczny, chyba że masz programy, które zostały zaprojektowane specjalnie do korzystania z MPI. Istnieje kilka dobrych samouczków klastrowych, jeśli nadal jesteś zainteresowany, powinieneś sprawdzić jeden.

Edytować:

Polecam samouczek tutaj, jeśli chcesz skonfigurować klaster. Zrobiłem klaster, wykonując ten samouczek około rok temu i działał całkiem dobrze. Samouczek jest nieco stary, więc niektóre pliki mogą nie znajdować się dokładnie tam, gdzie sam się mówi (czasem pliki są przenoszone w różnych / nowszych dystrybucjach Linuksa), ale jeśli jesteś choć trochę zaznajomiony z Linuksem, nie powinno to stanowić problemu. Samouczek używa starszej wersji MPI, ale użyłem najnowszej wersji i nie miałem problemów, które nie byłyby łatwe do rozwiązania. W zależności od tego, co robisz, może istnieć program, który może skorzystać z MPI. Wiem, że istnieje kilka programów do kodowania wideo i zmieniania liczb, które wykorzystują MPI, które można pobrać z uniwersalnych źródeł.

ubiquibacon
źródło
proszę powiedz mi jakieś referencje.
MJH,
1
@MJH zobacz moją zredagowaną odpowiedź.
ubiquibacon
dzięki. ale ten samouczek działa w systemie Linux i korzystam z systemu Windows. przez to aplikacja musi pisać pod MPI i jego ograniczeniem.
MJH,
3
@MJH, jeśli chcesz pracować z Windows, potrzebujesz biblioteki MPI, która działa z Windows, ale koncepcja jest taka sama. MPICH współpracuje z Windows, lub możesz zbudować klaster Windows z Windows HPC (ma wbudowaną przewodność MPI), jeśli masz trochę monet do upuszczenia. Chociaż pozwala to na korzystanie z systemu Windows, nadal będziesz musiał korzystać z programów napisanych dla MPI, w tej chwili nie można tego obejść.
ubiquibacon
2
Dzięki za odpowiedź - wydaje się, że wspomniany samouczek zmienił adres na uiowa.edu/mihpclab/hpcSystsemTechnicalReport/ ... ... Pozdrawiam!
sdaau
9

Możesz współdzielić pamięć RAM za pomocą dysków RAM, ale wygląda to tak samo, jak udostępnianie normalnych dysków, z tym wyjątkiem, że znajdują się one w pamięci RAM innego komputera. Nie ma bezpośredniego sposobu, aby jeden komputer używał pamięci RAM innego komputera, tak jakby była to jego własna pamięć RAM, ale istnieją pewne sposoby korzystania z pamięci RAM innego komputera. Więcej na ten temat w następnym akapicie.

Jeśli chodzi o współużytkowanie procesora, jest to możliwe, ale nie ma dla niego jednego standardu. Nie możesz go po prostu udostępnić i pozwolić, aby inny komputer zabrał potrzebne zasoby. Zamiast tego potrzebujesz specjalnie zaprojektowanych aplikacji, które mogą działać na kilku komputerach jednocześnie. Jest to często nazywane przetwarzaniem rozproszonym i jest wykorzystywane w niektórych projektach badawczych, takich jak SETI @ Home, Einstein @ Home, Climateprediction.net i wiele innych.

Zasadniczo programy działają w taki sposób, że istnieje jeden centralny serwer, który rozdziela pracę, którą należy wykonać. Komputery w sieci pobierają jednostki robocze z komputera centralnego i przetwarzają je. Następnie komputer centralny otrzymuje wyniki od klientów i łączy je w jeden spójny wynik. W ten sposób komputery „dzielą” zasoby procesora i pamięci RAM przez sieć. Wadą tego jest to, że programy muszą być tworzone w taki sposób, aby działały w sieci, a obecnie przetwarzanie rozproszone nie jest wystarczająco popularne wśród typowych zastosowań komputera, więc obsługuje go tylko niewielka liczba specjalistycznych programów. Z drugiej strony jest powszechnie stosowany do celów naukowych, ponieważ taniej jest uzyskać dużą liczbę komputerów osobistych lub playstation 3 niż uzyskać dostęp do komputera mainframe.

AndrejaKo
źródło
czy jest oprogramowanie do udostępniania mojej aplikacji w mojej sieci? bez potrzeby sieci zagranicznej! (np. chcę renderować plik, który mój komputer renderuje w ciągu 7 dni, ale udostępniam to mojej sieci i redukuję renderowanie do 1 dnia?
MJH,
@MJH Niestety, nie słyszałem o żadnych programach, które mogłyby to renderować.
AndrejaKo,
1
dzielenie się ramdyskami jest trochę bezcelowe, prawda? Dostajesz zmienność pamięci RAM i powolność sieciowej pamięci masowej
Journeyman Geek
1
@AndrejaKo Do prostego transkodowania wideo też nie słyszałem (ale niektórzy robiąc googling znalazłem 1 lub dwa projekty w wersji alfa / beta, które to robią). Jednak w przypadku renderowania 3D od lat 90. nie widziałem programu do renderowania 3D, który nie obsługuje renderowania sieciowego .
Scott Chamberlain,
5

czy jest oprogramowanie do udostępniania mojej aplikacji w mojej sieci? bez potrzeby sieci zagranicznej! (np. chcę renderować plik, który mój komputer renderuje w ciągu 7 dni, ale udostępniam to mojej sieci i redukuję renderowanie do 1 dnia? - MJH, 12 marca 11.19

Wpadłeś w problem XY , nie powinieneś pytać „w jaki sposób mogę współdzielić komputery CPU i RAM Accros”, ale „W jaki sposób mogę korzystać z wielu komputerów, aby moje rendery korzystały z ZZZZZ szybciej?”

Jest to w dużym stopniu zależne od używanego oprogramowania i renderowanego materiału (czy transkodujesz wideo, czy renderujesz model / wideo 3D?).

Aby wybrać kilka przykładów, darmowe oprogramowanie 3D Blender obsługuje renderowanie rozproszone, w którym wiele komputerów może pracować razem, aby wygenerować jedno wyjście. Jeśli robisz renderowanie wideo, szybko googlujesz , znalazłem projekt MediaEncodingCluster o otwartym kodzie źródłowym, który pozwala renderować pliki wideo i audio na wielu komputerach.

Scott Chamberlain
źródło
5

Jedynym znanym mi systemem operacyjnym, który pozwala współdzielić procesor / pamięć RAM, jest plan9. Tam możesz eksportować / montować prawie wszystko. Oczywiście nie oznacza to, że występy są dobre.

Heinrich Spindeln
źródło
0

Byłoby miło udostępnić procesor / ram dla zadań przez sieć. Obecnie wciąż jesteśmy trochę przywiązani do utrzymywania programów w polu, w którym coś się dzieje, ale możemy pozwolić wielu procesorom na tym samym komputerze na dostęp do tego samego fragmentu kodu. Mamy jedną metodę (przynajmniej), która robi coś takiego. java na stronach internetowych działa przy użyciu zarówno serwera, jak i klienta, ale nadal jest zablokowany w sposób serwer-klient do robienia rzeczy (gdzie serwer przechowuje większość danych). To, czego potrzebujemy, aby móc przypisywać zadania do komputerów w taki sam sposób, jak to robimy, gdy mamy wiele procesorów (z wyjątkiem komputerów, które wykonują pracę, muszą mieć przypisane programy i dane. To jednak powoduje większe obciążenie sieci jeśli same zadania nie mają prostego charakteru i mogą powodować powstawanie nowych wąskich gardeł. Podoba mi się pomysł, gdzie to „

k9dog
źródło