Показать полную графическую версию : MOSIX - принцип действия домашнего кластера
Дома имеются 3 компа, решил поэкспериментировать с кластеризацией. В качестве софта выбрал MOSIX. Не могу найти точного ответа в его принципе работы. Одни источники описывают работу кластеры как "MOSIX автоматически ищет свободную машину и кидает исполнение процесса на нее, как только освобождается машина с более сильными ресурсами процесс мигрирует на эту систему", в других описаниях звучит так "МОSIX подключает к решению задачи все свободные и не очень загруженные машины, так, к примеру, если выполнять конвертацию видио емких форматов на одной машине это займет 2 часа, а раскинув это на 3-4 системы в вашем домашнем кластере эта задача будет решена за 30-40 мину максиму". Вот и вопрос - как в итоге будет работать MOSIX - перекидывать задачу с системы на систему или подключит все системы для решении задачи одновременно.
Привет.
Сейчас занимаюсь аналогичной проблемой. Как я понял всё зависит от запускаемого приложения. Я читал что в mosix мигрируют только процессы (не потоки). Т.е. если программа написана при помощи библиотеки MPI (она разбивает вычисления на процессы, а не потоки, как например OpenMP), то кластер будет работать над решением одной задачи. Но если программа последовательная, то она целиком будет мигрировать между машинами.
Какие уже есть наработки? Пробовал настраивать mosix? Я пропатчил и собрал ядро, но пока что не смог настроить mosix, возникает следующая ошибка:
anton@ra6fho:~/mosix-2.29.0.2$ mosrun -j1 testload
MOSRUN: failed migrating to 192.168.1.2: not in map
Содержимое файла /etc/mosix/mosix.map:
192.168.1.2 6 o
Еще пробовал так:
1 192.168.1.2 1
2 192.168.1.3 1
3 192.168.1.4 1
4 192.168.1.5 1
5 192.168.1.6 1
6 192.168.1.7 1
Можно попробовать еще использовать вот такую программу:
MOSIXVIEW (http://www.linuxfocus.org/Russian/November2001/article219.shtml)
если программа написана при помощи библиотеки MPI (она разбивает вычисления на процессы, а не потоки, как например OpenMP), то кластер будет работать над решением одной задачи. Но если программа последовательная, то она целиком будет мигрировать между машинами.
Вот это действительно ценная информация, которая дает полную ясность.
Сам хочу пересобрать и пропатичтся на 3 машинах.
cat /proc/$$/lock <------ покажет, могут ли процессы потомки мигрировать с данного узла (0) или нет (1). Если же они заблокированы, то разблокировать их командой
echo 0 > /proc/$$/lock
Тоже самое на другой системе. Должно заработать
Хочу поделиться своим опытом по установке и настройке, может кому то пригодится.
1. Скачиваем самую последнюю версию MOSIX-2.29.0.2 (http://www.mosix.org/mos2/MOSIX-2.29.0.2.for_Linux_kernel-2.6.37.1.tbz)
wget http://www.mosix.org/mos2/MOSIX-2.29.0.2.for_Linux_kernel-2.6.37.1.tbz
2. Скачиваем ядро для этой версии linux-2.6.37.1 (http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.1.tar.bz2)
wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.37.1.tar.bz2
3. Распаковываем оба архива:
tar -xjvf MOSIX-2.29.0.2.for_Linux_kernel-2.6.37.1.tbz
tar xjf linux-2.6.37.1.tar.bz2
4. Переходим в папку с ядром:
cd linux-2.6.37.1
5. Патчим:
patch -p1 < ../mosix-2.29.0.2/other/patch-2.6.37.1
6. Конфигурируем ядро:
make menuconfig
7. Компилируем ядро:
make -jN bzImage
make -jN modules
где N количество ядер в вашей системе + 1
8. Устанавливаем ядро (требуются права суперпользователя):
sudo make modules_install
sudo make install
9. Создаем загрузочный RAM диск:
sudo mkinitramfs /boot/initrd.img-2.6.37.1 2.6.37.1
10. Обновляем загрузчик:
sudo update-grub2
11. Добавляем адреса машин в кластер:
sudo nano /etc/mosix/mosix.map
Прописываем:
192.168.1.2 6 p
В первом столбце указываем ip-адреса машин, во втором кол-во адресов следующих за ним (в моем случае 192.168.1.2, 192.168.1.3, ... , 192.168.1.7), в третьем на находятся ли эти адреса внутри вашей сети или за ее пределами (с этим еще не совсем разобрался). Параметр "p" - внутри сети, параметр "o" - за перделами сети.
13. На этом установки и настройка завершена, можно перезагружаться и переходить к тестированию.
Тестирование:
1. Для запуска необходимо выполнить (на всех машинах кластера):
sudo /etc/init.d/mosix start
2. Запустить несколько копий тестовой программы:
mosrun testload
3. И посмотреть на сколько загружены машины в кластере:
mon
http://www.imagepost.ru/images/792/mon.png
Так же можно посмотреть загрузку процессора на каждой машине:
http://www.imagepost.ru/images/792/sismon.png
http://www.imagepost.ru/images/792/sismon2.png
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.