У мережі ми ділимося файлом (драйвером диска) або базами даних. Але як ми можемо ділити процесор чи оперативну пам’ять по мережі.
У мережі ми ділимося файлом (драйвером диска) або базами даних. Але як ми можемо ділити процесор чи оперативну пам’ять по мережі.
Відповіді:
Для цього програми, що мають доступ до ресурсів CPU / RAM, повинні бути спеціально розроблені для доступу до цих ресурсів. Система, створена таким чином, називається кластером, а типовим способом спільного використання ресурсів є протокол під назвою MPI (інтерфейс передачі повідомлень). Це безкоштовне завантаження та використання його за допомогою Linux може дати потужний кластер (можливо навіть суперкомп'ютер) за мінімальні витрати, але знову ж таки марно, якщо у вас немає програм, які були спеціально розроблені для використання MPI. Є кілька хороших навчальних посібників для кластерів, якщо ви все ще зацікавлені, ви можете перевірити їх.
Редагувати:
Я б рекомендував тут підручник, якщо ви хочете створити кластер. Я створив кластер, дотримуючись цього підручника близько року тому, і він спрацював досить добре. Підручник трохи старий, тому деякі файли можуть бути не там, де в підручнику написано, що вони є (іноді файли переміщуються в інших / новіших дистрибутивах Linux), але якщо ви найменше знайомі з Linux, це не повинно бути проблемою. Підручник використовує старішу версію MPI, але я використовував найновішу версію і не мав проблем, які легко вирішити. Залежно від того, що ви робите там, насправді там може бути програма, яка може скористатися MPI. Я знаю, що є кілька програм кодування відео та скорочення чисел, які використовують MPI, які можна завантажити з універсальних джерел.
Ви можете ділитися оперативною пам’яттю за допомогою RAM-дисків, але це схоже на обмін звичайними дисками, за винятком того, що вони знаходяться в оперативній пам’яті іншого комп'ютера. Немає прямого способу використання одного ОЗУ іншого комп'ютера так, як якщо б це була його власна ОЗУ, але є деякі способи використання ОЗУ іншого комп'ютера. Детальніше про це в наступному параграфі.
Що стосується спільного використання процесора, він можливий, але єдиного стандарту для нього немає. Ви не можете просто поділитися ним та дозволити іншому комп'ютеру брати потрібні ресурси. Натомість вам потрібно мати спеціально розроблені програми, які можуть працювати на кількох комп'ютерах одночасно. Це часто називають розподіленими обчисленнями і використовується в деяких дослідницьких проектах, таких як SETI @ Home, Einstein @ Home, Climateprediction.net та багатьох інших.
В основному програми працюють таким чином, що існує один центральний сервер, який розподіляє роботу, яку потрібно виконати. Комп'ютери в мережі завантажують робочі блоки з центрального комп'ютера і обробляють їх. Після цього центральний комп'ютер отримує результати від клієнтів і об'єднує їх в один згуртований результат. Таким чином комп'ютери "діляться" ресурсами процесора та оперативної пам'яті через мережу. Мінус цього полягає в тому, що програми потрібно робити так, щоб працювати через мережу, і зараз розподілені обчислення недостатньо популярні серед загальних програм для використання комп'ютера, тому підтримує його лише невелика кількість спеціалізованих програм. З іншого боку, його зазвичай використовують у наукових цілях, оскільки дешевше отримати велику кількість персональних комп'ютерів чи ігрових станцій 3, ніж це отримати доступ до основного комп'ютера.
Ви потрапили в XY-проблему , і ви не повинні запитувати "як я можу ділитися процесорами процесорних і операційних комп'ютерів", а "як я можу використовувати декілька комп'ютерів, щоб швидше зробити свої рендери з використання ZZZZZ?"
Це дуже залежить від того, яке програмне забезпечення ви використовуєте, і що ви рендеруєте (чи перекодуєте ви відео, чи рендеруєте 3D-модель / відео?).
Щоб вибрати кілька прикладів, безкоштовне 3D-програмне забезпечення Blender підтримує розподілену візуалізацію, де ви можете мати багато комп'ютерів, які працюють разом, щоб генерувати один вихід. Якщо ви робите відео-рендерінг, якийсь швидкий googling знайшов проект з відкритим кодом MediaEncodingCluster, який дозволяє відтворювати відео та аудіофайли за допомогою декількох комп'ютерів.
Єдина мені відома операційна система, яка дозволяє ділитися процесором / оперативною пам’яттю - план9. Там ви можете експортувати / монтувати майже все, що завгодно. Це, звичайно, не означає, що вистави хороші.
Було б непогано ділитися процесором / ram для виконання завдань по мережі. В даний час ми все ще обмежені давніми уявленнями про те, щоб тримати програми у вікні, де це відбувається, але ми можемо дозволити декільком процесорам на одній машині отримати доступ до одного фрагмента коду. У нас є один метод (принаймні), який робить щось подібне. java на веб-сторінках працює, використовуючи і сервер, і клієнт, але він все ще заблокований у спосіб сервер-клієнт, щоб робити речі (де сервер зберігає більшість даних). Що нам потрібно, щоб мати можливість задавати завдання машинам приблизно так само, як це робимо, коли у нас є декілька процесорів (за винятком машини, яка виконує роботу, потрібно призначити фрагмент програми та фрагмент даних. Це робить більш важке навантаження на мережу, хоча якщо самі завдання не мають простого характеру і це може призвести до утворення нових вузьких місць. Мені подобається ідея, де це "