Советы в частных облаках / сетках?
Я хотел бы построить свое собственное частное вычислительное облако или так называемую сетку.
У меня есть доступ к ИТ-классам с кучей быстрых компьютеров, и я хотел бы использовать эту огромную мощность. (Или даже просто используйте 3 маленьких компьютера дома одновременно для одной и той же задачи.)
Было бы замечательно что-то вроде виртуальной машины, работающей на всех ядрах процессора. Так что у меня будет одна (виртуальная) ОС, работающая с ~40 ГБ ОЗУ, эффективной частотой ~120 ГГц и большим объемом дискового пространства. Я знаю, что сеть замедлит все, но если это "объединение ресурсов" не стоит этого из-за медленной сети (хотя на каждой машине она составляет 1 Гбит / с), что-то вроде BOINC, но меньше и проще, то это тоже будет, Что-то, что распределяет рабочие блоки для локальных узлов, чтобы на них работать.
Я бы хотел, чтобы он был бесплатным, возможно с открытым исходным кодом, и работал на узлах Windows и Linux.
Если нет простого способа, могу ли я реализовать свой собственный протокол, предназначенный для каждого вычисления (это может быть что угодно от шахматного ИИ до трассировки лучей, от фрактального рендеринга до вычисления ПИ), я бы хотел сделать? Или использовать BOINC?
Я взглянул на Эвкалипт, но я думаю, что это будет слишком далеко. Разве это не BOINC?
Есть ли у кого-нибудь хорошее программное обеспечение, чтобы рекомендовать меня, с помощью которого я мог бы сделать это?
2 ответа
Я бы имел одну (виртуальную) ОС, работающую с ~40 ГБ ОЗУ, эффективной частотой ~120 ГГц и большим объемом дискового пространства
Не существует без специального оборудования или программного обеспечения. Причина, по которой он не существует, заключается в том, что ваши "быстрые" ссылки 1GbE медленные, как ад, когда вы сравниваете их со скоростями межсоединений внутри любого ПК. Вот несколько примеров:
- PCI - 2 Гбит / с
- AGPx8 - 34 Гбит / с
- PCIex8 - 16 Гбит / с
- Оперативная память PC2-5300 - 85 Гбит / с
- Кэш-память первого уровня процессора ~300 Гбит / с
Теперь вы можете сделать несколько отдельных вещей, которые вы упомянули отдельно. Например, существуют распределенные вычислительные приложения, такие как BOINC/SETI@Home, которые, конечно, полагаются на рабочие нагрузки, которые имеют высокий параллелизм (могут быть обработаны отдельно и объединены позже). Существуют также приложения распределенного хранения, такие как Bittorrent/Brancecache.
Если вы имеете в виду конкретную рабочую нагрузку, которую хотите сократить, и программирование прерывается, взгляните на кластеризацию Beowulf.
Здесь очень важно понять, как расстояние между компонентами влияет на медленную передачу данных между ними. Это фундаментальный принцип вычислений и объясняет многое, в том числе ответ на ваш вопрос. Короткая версия - следующие два компонента находятся друг от друга медленнее, чем их максимальная скорость связи. Посмотрите, как быстро кэш L1 сравнивается с оперативной памятью, а затем сравнивается с жестким диском. Это прямая функция его расстояния от ядра.
Этот вопрос очень широк. В целом, запуск одной ОС общего назначения на нескольких компьютерах - это святой Грааль параллельных / распределенных вычислений, и он не был достигнут каким-либо значимым образом. Если ваша проблемная область легко распараллеливается, то есть много решений для вашей проблемы, включая системы пакетного планирования, такие как Condor, и подходы кластеризации, такие как Eucalyptus, Hadoop и Beowulf. Если это не легко распараллелить, то вам нужно много алгоритмического мышления. Таким образом, для любой данной проблемной области,
- Можете ли вы разделить работу на множество мелких частей?
- Должны ли отдельные работники общаться друг с другом или только с диспетчером?
- Нужен ли отдельным работникам доступ к областям памяти друг друга?