Як поділитися процесором або оперативною пам’яттю?


21

У мережі ми ділимося файлом (драйвером диска) або базами даних. Але як ми можемо ділити процесор чи оперативну пам’ять по мережі.


3
Проблема з цим полягає в тому, що порівняно з затримками в масштабі наносекунди між процесором та оперативною пам’яттю мережа неймовірно повільна!
Фосі

@Phoshi: Навіть із затримками, доданими мережею, таке налаштування може бути швидшим, ніж обмін на основі диска.
Пісквор

@Piskvor: Але, як хто-небудь може сказати вам, своп на основі диска - це досить масштабний хіт!
Phoshi

@Phoshi: Я згоден - це дійсно так, і оптимальним рішенням є "додати більше фізичної пам'яті". Все, що я говорю, - це те, що виклик на швидкий пристрій (наприклад, рамбдиск) через швидку мережу все ж може бути швидшим, ніж виклик на фізичний диск. Іншими словами: це може бути швидшим пристроєм для заміни, ніж свопом на фізичному носії, навіть якщо це буде на багато порядків повільніше, ніж фізична ОЗУ.
Пісквор

1
@Piskvor: Цілком правдоподібно, і навіть якщо ви помиляєтесь, це, безумовно, однаковий порядок, тому в гіршому випадку не було б значно гірше. Я припускаю, що, мабуть, просто дешевше мати більше місцевого фізичного сховища!
Phoshi

Відповіді:


21

Для цього програми, що мають доступ до ресурсів CPU / RAM, повинні бути спеціально розроблені для доступу до цих ресурсів. Система, створена таким чином, називається кластером, а типовим способом спільного використання ресурсів є протокол під назвою MPI (інтерфейс передачі повідомлень). Це безкоштовне завантаження та використання його за допомогою Linux може дати потужний кластер (можливо навіть суперкомп'ютер) за мінімальні витрати, але знову ж таки марно, якщо у вас немає програм, які були спеціально розроблені для використання MPI. Є кілька хороших навчальних посібників для кластерів, якщо ви все ще зацікавлені, ви можете перевірити їх.

Редагувати:

Я б рекомендував тут підручник, якщо ви хочете створити кластер. Я створив кластер, дотримуючись цього підручника близько року тому, і він спрацював досить добре. Підручник трохи старий, тому деякі файли можуть бути не там, де в підручнику написано, що вони є (іноді файли переміщуються в інших / новіших дистрибутивах Linux), але якщо ви найменше знайомі з Linux, це не повинно бути проблемою. Підручник використовує старішу версію MPI, але я використовував найновішу версію і не мав проблем, які легко вирішити. Залежно від того, що ви робите там, насправді там може бути програма, яка може скористатися MPI. Я знаю, що є кілька програм кодування відео та скорочення чисел, які використовують MPI, які можна завантажити з універсальних джерел.


скажіть, будь ласка, кілька посилань.
MJH

1
@MJH дивіться мою відредаговану відповідь.
ubiquibacon

спасибі.але цей підручник працює на Linux, і я використовую Windows.also цим, програма повинна писати під MPI та його обмеження.
MJH

3
@MJH, якщо ви хочете працювати з Windows, то вам просто потрібна бібліотека MPI, яка працює з Windows, але концепція така ж. MPICH працює з Windows, або ви можете створити свій кластер Windows з Windows HPC (має вбудовану провідність MPI), якщо у вас є монета, яку потрібно скинути. Хоча це дозволяє вам використовувати Windows, вам все одно доведеться користуватися програмами, написаними для MPI, наразі цього немає ніякого шляху.
ubiquibacon

2
Дякуємо за цю відповідь - начебто, згаданий посібник змінив адресу на uiowa.edu/mihpclab/hpcSystsemTechnicalReport/… ... Ура!
sdaau

9

Ви можете ділитися оперативною пам’яттю за допомогою RAM-дисків, але це схоже на обмін звичайними дисками, за винятком того, що вони знаходяться в оперативній пам’яті іншого комп'ютера. Немає прямого способу використання одного ОЗУ іншого комп'ютера так, як якщо б це була його власна ОЗУ, але є деякі способи використання ОЗУ іншого комп'ютера. Детальніше про це в наступному параграфі.

Що стосується спільного використання процесора, він можливий, але єдиного стандарту для нього немає. Ви не можете просто поділитися ним та дозволити іншому комп'ютеру брати потрібні ресурси. Натомість вам потрібно мати спеціально розроблені програми, які можуть працювати на кількох комп'ютерах одночасно. Це часто називають розподіленими обчисленнями і використовується в деяких дослідницьких проектах, таких як SETI @ Home, Einstein @ Home, Climateprediction.net та багатьох інших.

В основному програми працюють таким чином, що існує один центральний сервер, який розподіляє роботу, яку потрібно виконати. Комп'ютери в мережі завантажують робочі блоки з центрального комп'ютера і обробляють їх. Після цього центральний комп'ютер отримує результати від клієнтів і об'єднує їх в один згуртований результат. Таким чином комп'ютери "діляться" ресурсами процесора та оперативної пам'яті через мережу. Мінус цього полягає в тому, що програми потрібно робити так, щоб працювати через мережу, і зараз розподілені обчислення недостатньо популярні серед загальних програм для використання комп'ютера, тому підтримує його лише невелика кількість спеціалізованих програм. З іншого боку, його зазвичай використовують у наукових цілях, оскільки дешевше отримати велику кількість персональних комп'ютерів чи ігрових станцій 3, ніж це отримати доступ до основного комп'ютера.


чи є програмне забезпеченням для використання мого програми в моїй мережі без необхідності в зовнішню мережу (напр я хочу рендеринг файлу, що мій PC робить це в 7 днів, але я поділяю це до моєї мережі і рендеринг скорочення на 1 день?!.?
MJH

@MJH На жаль, я не чув жодної програми, яка могла б зробити це для надання.
AndrejaKo

1
обмін ramdisks - це безглуздо, хоча чи не так? Ви отримуєте мінливість оперативної пам’яті, а повільність мережевого зберігання
Journeyman Geek

1
@AndrejaKo Для прямого перекодування відео я не чув жодного з них (але деякі, які роблять гуглінг, я знайшов 1 чи два проекти в альфа / бета, які це роблять). Однак для 3D-рендерінгу я не бачив програми 3D-рендерінгу з 90-х років, яка не підтримує мережеву візуалізацію .
Скотт Чемберлен

5

чи є програмне забезпечення для спільного використання моєї програми в моїй мережі? без необхідності в іноземній мережі! (наприклад, я хочу зробити файл, щоб мій комп'ютер надавав це за 7 днів, але я поділяюсь цією моєю мережею та зменшуючи показник до 1 дня? - MJH 12 березня 1111 о 1:19

Ви потрапили в XY-проблему , і ви не повинні запитувати "як я можу ділитися процесорами процесорних і операційних комп'ютерів", а "як я можу використовувати декілька комп'ютерів, щоб швидше зробити свої рендери з використання ZZZZZ?"

Це дуже залежить від того, яке програмне забезпечення ви використовуєте, і що ви рендеруєте (чи перекодуєте ви відео, чи рендеруєте 3D-модель / відео?).

Щоб вибрати кілька прикладів, безкоштовне 3D-програмне забезпечення Blender підтримує розподілену візуалізацію, де ви можете мати багато комп'ютерів, які працюють разом, щоб генерувати один вихід. Якщо ви робите відео-рендерінг, якийсь швидкий googling знайшов проект з відкритим кодом MediaEncodingCluster, який дозволяє відтворювати відео та аудіофайли за допомогою декількох комп'ютерів.


5

Єдина мені відома операційна система, яка дозволяє ділитися процесором / оперативною пам’яттю - план9. Там ви можете експортувати / монтувати майже все, що завгодно. Це, звичайно, не означає, що вистави хороші.


0

Було б непогано ділитися процесором / ram для виконання завдань по мережі. В даний час ми все ще обмежені давніми уявленнями про те, щоб тримати програми у вікні, де це відбувається, але ми можемо дозволити декільком процесорам на одній машині отримати доступ до одного фрагмента коду. У нас є один метод (принаймні), який робить щось подібне. java на веб-сторінках працює, використовуючи і сервер, і клієнт, але він все ще заблокований у спосіб сервер-клієнт, щоб робити речі (де сервер зберігає більшість даних). Що нам потрібно, щоб мати можливість задавати завдання машинам приблизно так само, як це робимо, коли у нас є декілька процесорів (за винятком машини, яка виконує роботу, потрібно призначити фрагмент програми та фрагмент даних. Це робить більш важке навантаження на мережу, хоча якщо самі завдання не мають простого характеру і це може призвести до утворення нових вузьких місць. Мені подобається ідея, де це "

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.