В сети мы разделяем файл (драйвер диска) или базы данных. Но как мы можем разделить процессор или оперативную память по сети.
В сети мы разделяем файл (драйвер диска) или базы данных. Но как мы можем разделить процессор или оперативную память по сети.
Ответы:
Для этого программа (ы), обращающаяся к ресурсам ЦП / ОЗУ, должна быть специально разработана для доступа к указанным ресурсам. Система, настроенная таким образом, называется кластером, и типичным способом совместного использования ресурсов является протокол, называемый MPI (интерфейс передачи сообщений). Это бесплатная загрузка, и ее использование с Linux может привести к созданию мощного кластера (возможно, даже суперкомпьютера) при минимальных затратах, но, опять же, это бесполезно, если у вас нет программ, специально разработанных для использования преимуществ MPI. Есть несколько хороших кластерных обучающих программ, если вы все еще заинтересованы, вы должны проверить их.
Редактировать:
Я бы порекомендовал учебник здесь, если вы хотите настроить кластер. Я сделал кластер, следуя этому уроку около года назад, и он работал довольно хорошо. Учебное пособие немного старое, поэтому некоторые файлы могут быть не совсем такими, как указано в учебном пособии (иногда файлы перемещаются в других / более новых дистрибутивах Linux), но если вы немного знакомы с Linux, это не должно быть проблемой. В этом руководстве используется более старая версия MPI, но я использовал самую новую версию, и у меня не было проблем, которые не могли быть легко решены. В зависимости от того, что вы делаете, на самом деле может существовать программа, которая может использовать преимущества MPI. Я знаю, что есть несколько программ кодирования видео и обработки чисел, использующих преимущества MPI, которые можно загрузить из универсальных источников.
Вы можете разделять оперативную память, используя диски RAM, но это похоже на совместное использование обычных дисков, за исключением того, что они находятся в оперативной памяти другого компьютера. Для одного компьютера нет прямого способа использовать оперативную память другого компьютера, как если бы это была его собственная память, но есть несколько способов использовать оперативную память другого компьютера. Подробнее об этом в следующем пункте.
Что касается разделения процессора, это возможно, но единого стандарта для него нет. Вы не можете просто поделиться им и позволить другому компьютеру занять необходимые ресурсы. Вместо этого вам нужно иметь специально разработанные приложения, которые могут работать на нескольких компьютерах одновременно. Это часто называют распределенными вычислениями и используется некоторыми исследовательскими проектами, такими как SETI @ Home, Einstein @ Home, Climateprediction.net и многими другими.
В основном программы работают таким образом, что существует один центральный сервер, который распределяет работу, которую необходимо выполнить. Компьютеры в сети загружают рабочие блоки с центрального компьютера и обрабатывают их. После этого центральный компьютер получает результаты от клиентов и объединяет их в единый результат. Таким образом, компьютеры «разделяют» ресурсы ЦП и ОЗУ по сети. Недостатком этого является то, что программы должны создаваться таким образом, чтобы они работали по сети, и в настоящее время распределенные вычисления не достаточно популярны среди обычного использования компьютера, поэтому его поддерживают лишь небольшое количество специализированных программ. С другой стороны, он обычно используется в научных целях, поскольку дешевле получить большое количество персональных компьютеров или игровых приставок 3, чем получить доступ к мэйнфреймовому компьютеру.
Вы столкнулись с проблемой XY , вам не следует спрашивать «как я могу поделиться компьютерами cpu и ram accros», а «как я могу использовать несколько компьютеров, чтобы ускорить рендеринг при использовании ZZZZZ?»
Это сильно зависит от того, какое программное обеспечение вы используете и что вы рендерите ( транскодируете ли вы видео или рендеринге 3D-модели / видео?).
Чтобы привести несколько примеров, бесплатное 3D-программное обеспечение Blender поддерживает распределенный рендеринг, где вы можете иметь несколько компьютеров, работающих вместе, для генерации одного выхода. Если вы занимаетесь рендерингом видео, вы нашли быстрый проект MediaEncodingCluster с открытым исходным кодом, который позволяет вам рендерить видео и аудио файлы, используя несколько компьютеров.
Единственная известная мне операционная система, которая позволяет совместно использовать ЦП / ОЗУ, это plan9. Там вы можете экспортировать / монтировать практически все, что угодно. Это не значит, что спектакли хорошие, конечно.
Было бы неплохо поделиться cpu / ram для задач по сети. В настоящее время мы все еще привязаны к старым представлениям о том, чтобы хранить программы в поле, где что-то происходит, но мы можем позволить нескольким процессорам на одной машине получать доступ к одному и тому же фрагменту кода. У нас есть один метод (по крайней мере), который делает что-то вроде этого. java на веб-страницах работает с использованием как сервера, так и клиента, но он по-прежнему заблокирован сервер-клиентским способом (где сервер хранит большую часть данных). То, что нам нужно, чтобы иметь возможность назначать задачи компьютерам почти так же, как мы делаем, когда у нас несколько процессоров (за исключением машины, которая выполняет работу, для которой должны быть назначены программный фрагмент и фрагмент данных. Это, тем не менее, увеличивает нагрузку на сеть). если сами задачи не имеют простой характер и могут привести к образованию новых узких мест. Мне нравится идея, где это "