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ć.
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ć.
Odpowiedzi:
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ł.
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.
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.
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.
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 „