2 raspberry pi = 1 сервер
-
Возникла идея, объединить 2 компьютера raspberry pi в один, типа 2-хядерного компа. Скажите, это реально реализовать? Например, для игрового сервера одной такой вещи будет маловать, а 2 в самый раз.
P.S. Покупать системник не вариант, так как это выходит пока дешевле)
-
у двуядерного процессора оба ядра имеют одинаковые возможности по доступу к общей для них памяти. То есть что первое ядро, что второе -- оба одинаково могут обращаться к одной и той же ячейке в памяти. В памяти могут находиться как какие-то данные, так и код программ.
Причем в настоящих многоядерных процах каждое ядро 100 раз в секунду переключается на работу со следующей задачей. Вот, сколько в системе создано потоков, в стольких местах и работают ядра процессора. Обычно в системах нет привязки ядер к задачам. Просто существует одна очередь задач и существует два ядра. Какому ядру при очередном переключении задач достанется задача -- не имеет значения. Для задачи, ядра абсолютно одинаковы.
Теперь, рассмотрим Ваш вариант. У нас имеется две платы RPi. На каждой плате имеется свой (одноядерный) процессор и своя память. Вопрос -- как процессор сможет переключиться на задачу, которая находится в памяти на другой плате? Как процессор на другой плате узнает о том, что эту задачу сейчас будет исполнять проц с первой платы, и ему не надо ее сейчас трогать, а нужно переключиться на третью задачу?
Скорость доступа к собственной памяти составляет единицы-десяткии наносекунд. Скорость получения (допустим, по сети) копии памяти с соеднего компа составляет время от нескольких миллисекунд до сотен секунд. (Сколько времени у вас копируется фильм на флешку, а-а?)
Иначе говоря, предложенный вариант двуядерного исполнения задачи на двух компах -- не возможен.
Конечно, если вы сможете грамотно написать программу, которая способна исполняться одновременно (параллельно) на двух компах, и при этом компы будут обмениваться между собой по минимуму, то это вполне возможно. Но это будут какие-то очень специфические задачи, типа перебора вариантов сборки протеинов, или поиска биткоинов, или расшифровке сигналов внеземных цивилизаций...
-
получается разбить один процесс на две задачи не получается никак. Спасибо за ответ.
-
Другой вопрос. Ведь есть облачные сервера, как там тогда это реализовано? или я что-то не понимаю.
-
Честно говоря, я не знаю, как там все реализовано. Я знаю, что основная работа "облака" -- это хранение файлов и организация множества никак не связанных друг с другом сдаваемых в аренду www-, ftp- и других серверов.
Справка: сервер -- это не компьютер. Сервер -- это программы, которая предоставляет определенный вид сервиса по сети.
Ни о каком совместном исполнении мега-программы на нескольких ядрах "облака" речи не идет. Для решения мега-задач существуют специальные кластеры, суперкомпьютеры.
Я не могу точно ответить на эти вопросы, поскольку я не занимаюсь такими задачами. Но абсолютно точно могу сказать, что чтобы заставить два компа решать одну и ту же задачу -- нужно написать ДВЕ программы для каждого компа. Возможно, это будут две копии одной и той же программы. Но это будут две программы, которые выполняются на разных компах, а не одна программа, которая выполняется сразу двумя компами.
-
Все, спасибо, теперь немного яснее стало)
-
http://www.southampton.ac.uk/~sjc/raspberrypi/pi_supercomputer_southampton_web.pdf
Здесь инструкция по шагам, как сделать из Raspbery суперкомпьютер. Автор в своей разработке объеденил 64 RPI.
-
Из двух RPi один сервер не собрать. Если сделать все, как описано в статье чуть выше, то получится кластер из двух Rpi. Чтобы эффективно задействовать ресурсы кластера необходимо написать (переписать) серверное ПО под интерфейс MPI: http://ru.wikipedia.org/wiki/Message_Passing_Interface
люди эту технику годами осваивают/отлаживают.