20

В сети мы разделяем файл (драйвер диска) или базы данных. Но как мы можем разделить процессор или оперативную память по сети.

5 ответов5

21

Для этого программа (и), обращающаяся к ресурсам ЦП / ОЗУ, должна быть специально разработана для доступа к указанным ресурсам. Система, настроенная таким образом, называется кластером, и типичным способом совместного использования ресурсов является протокол, называемый MPI (интерфейс передачи сообщений). Это бесплатная загрузка, и ее использование с Linux может привести к созданию мощного кластера (возможно, даже суперкомпьютера) при минимальных затратах, но опять же, это бесполезно, если у вас нет программ, специально разработанных для использования MPI. Есть несколько хороших кластерных обучающих программ, если вы все еще заинтересованы, вы должны проверить их.

Редактировать:

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

9

Вы можете совместно использовать ОЗУ с помощью RAM-дисков, но это похоже на совместное использование обычных дисков, за исключением того, что они находятся в ОЗУ другого компьютера. Для одного компьютера нет прямого способа использовать оперативную память другого компьютера, как если бы это была его собственная память, но есть некоторые способы использовать оперативную память другого компьютера. Подробнее об этом в следующем пункте.

Что касается разделения процессора, это возможно, но единого стандарта для него нет. Вы не можете просто поделиться им и позволить другому компьютеру занять необходимые ресурсы. Вместо этого вам нужно иметь специально разработанные приложения, которые могут работать на нескольких компьютерах одновременно. Это часто называют распределенными вычислениями и используется некоторыми исследовательскими проектами, такими как SETI @ Home, Einstein @ Home, Climateprediction.net и многими другими.

В основном программы работают таким образом, что существует один центральный сервер, который распределяет работу, которую необходимо выполнить. Компьютеры в сети загружают рабочие блоки с центрального компьютера и обрабатывают их. После этого центральный компьютер получает результаты от клиентов и объединяет их в единый результат. Таким образом, компьютеры "разделяют" ресурсы ЦП и ОЗУ по сети. Недостатком этого является то, что программы должны создаваться таким образом, чтобы они работали по сети, и в настоящее время распределенные вычисления не достаточно популярны среди распространенных применений для компьютера, поэтому его поддерживают лишь небольшое количество специализированных программ. С другой стороны, он обычно используется в научных целях, поскольку дешевле получить большое количество персональных компьютеров или игровых приставок 3, чем получить доступ к мэйнфреймовому компьютеру.

5

есть ли программное обеспечение для совместного использования моего приложения в моей сети?без необходимости в чужой сети!(например я хочу сделать файл, чтобы мой компьютер отображал его в 7 дней, но я делюсь этим с моей сетью и уменьшу время рендеринга до 1 дня? - MJH 12 марта 2011 года в 1:19

Вы столкнулись с проблемой XY, вам не следует спрашивать "как я могу поделиться компьютерами cpu и ram accros", а «как мне использовать несколько компьютеров, чтобы ускорить рендеринг при использовании ZZZZZ?"

Это сильно зависит от того, какое программное обеспечение вы используете, и что вы рендерите (транскодируете ли вы видео, или вы рендерите 3D-модель / видео?).

Чтобы привести несколько примеров, бесплатное 3D-программное обеспечение Blender поддерживает распределенный рендеринг, где вы можете иметь много компьютеров, работающих вместе, для генерации одного выхода. Если вы занимаетесь рендерингом видео, вы нашли быстрый проект Google MediaEncodingCluster с открытым исходным кодом, который позволяет вам воспроизводить видео и аудио файлы, используя несколько компьютеров.

5

Единственная известная мне операционная система, которая позволяет совместно использовать ЦП / ОЗУ, это plan9. Там вы можете экспортировать / монтировать практически все, что угодно. Конечно, это не значит, что спектакли хорошие.

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .