Pull to refresh

Comments 77

так то ж, виртуальные образы.

В повседневной жизни куда круче доставить пару дебиан-пакетов на уже существующую систему и получить SSI поверх всего вашего хозяйства, а не наоборот :)

да, точно, на их сайте не туда полез)
Кстати, можете подробнее написать как будет использоваться оперативная память и жесткий диск при такой схеме?
жесткий диск по умолчанию на узлах вообще не трогается.
сами же узлы доступаются ко всем дисковым ресурсам по nfs, в том числе и к "/".
память у каждого узла своя.
память используемая процессом не может растянуться по разным узлам — если система посчитала, что надо мигрировать процесс на менее нагруженный узел, то процесс мигрирует со всей своей памятью на новое место жительства.

ДИСКЛАЙМЕР. я вообще лет 5 уже не пользовался никакими SSI, может поменялось чего-нибудь уже! :)
я думал, что kerrighed для балансировочных кластеров. в любом случае, спасибо за труды
я пользовался в прошлом сугубо для HPC
мануалы чего? Kerrighed? OpenSSI? или их приложения к HPC?

тогда для своих HPC я успешно пользовался не Kerrighed, а вот этим:
openssi.org/cgi-bin/view?page=openssi.html
использоывния kerrighed для вычислительных кластеров. в общем нормально. почитаю, спасибо
Много ли места занимает последняя убунта на винте и долго ли будет качаться на 2-мегабитном канале?
А когда можно будет начинать этим пользоваться? И, возможно, уже есть рабочие версии для других дистрибутивов?
пользоваться можно как Kerrighed так и OpenSSI уже давно. Для меня почему-то всегда был самым удобным вариантом использования: «поставил пакет на текущей системе и получил SSI»

а в реалии часто приходилось наоборот: отдельно сначала ставить чистенький линукс, потом на нём SSI поднимать, а потом уже пакеты доставлять.
Просто я только что поставил Ubuntu горя желанием играться с кучей ядер, но, к сожалению, не нашел для неё(убунты) готового пакета. Собирать пока что ручками?
UFO just landed and posted this here
… В процессе оно подтаскивает на / ещё кучу всего и упирается в 4 гига…
Сейчас вынужденно пересел с EEE 1000 с его 8+32 гигами на ЕЕЕ 900 с его 4+16 и всё это наблюдаю не по-наслышке…
На первом — традиционно /, на втором — home, в итоге постоянное нытьё при обновлениях «ой, а у вас на диске места мало! Давайте запустим прогу для показа что у нас и как забито?!»…
Правда на днях по совету знакомых снёс старые версии ядер- получил + 500 мегов места — вроде хоть теперь хватает…
UFO just landed and posted this here
Сделайте еще 'sudo apt-get clean'. И, если есть такая возможность, снесите OpenOffice, заменив его на AbiWord + Gnumeric.
Хорошо, а как у этой штуки с хитрыми интерконнектами вроде Infiniband? Вообще, какие приемущества относительно классического Beowulf?
Beowulf не только не обязывает к SSI, но даже декларирует в рекомендательном тоне.
Просто работает вместе как-то в сети у вас N Линуксов — значит Beowulf. Скучно :)
Ну вот мы сейчас используем почти классический беовульф — несколько сотен линуксов, соединенных Infiniband. А эта штука мне представляется как некая виртуальная MP-система. Умеет она ходить по инфинибэнду?
с Infiniband сам не работал.
если поверх Infiniband можно использовать вместо Ethernet, и по нему весь TCP/IP стек бегает как по Ethernet, то должно работать.

ваш беовульф наверное на MPI или PVM? — это то, чего я *очень* не хотел и почему я собственно и стал пробовать OpenSSI :)
MPI, вестимо. IP-over-IB есть конечно, хотя и медленнее чем RDMA. Собственно смысл IB слегка теряется без таких фишек как RDMA.
> MPI

так я и думал :)

моё мирощущение таково, что люди в 90% имеют задачи со слабо связанными вычислениями (loosely coupled computations). Однако, из-за отсутствия под рукой нормальной инфраструктуры для распараллеливания этого широчайшего и одновременно простейшего семейства вычислений, люди невольно вовлекаются в тяжеловесные MPI/PVM решения.
Ну IB еще имеет очень низкую латентность, чуть ли не приближающуюся к оперативной памяти. Так что теоретически такая штука могла бы поиметь с IB дополнительный профит. А к MPI привязка со стороны коммерческих решателей, увы.
Используя Infiniband можно построить виртуальную систему с общей памятью. Например, использовать vSMP от ScaleMP

MPI использует море программ с открытым кодом. Переписать их под альтернативную технологию очень тяжело
Большое спасибо!

Никогда раньше и не думал, что построение кластеров может быть НАСТОЛЬКО простым, как настройка апача или немногим сложнее.

А машина-донор, я так понимаю, самая главная в этом кластере? она управляет процессами? Что будет, если ее отключить? Можно ли поиметь рабочую станцию на машине-акцепторе, независимо от ее включенности в кластер? Не могли бы вы привести примеры приложений, где такой кластер использовать лучше всего? Т.е. для каких задач подходит эта архитектура? Буду признателен, если ответите хотя бы на часть вопросов.
настройка апача может стать делом всей жизни… а OpenSSI у меня поднимался на ура уже на второй день и я толком не трогал уже настройки!

как пойдет с Kerrighed не знаю. Посмотрим :)
> А машина-донор, я так понимаю, самая главная в этом кластере? она управляет процессами?

нет, все машины более менее равноправны.

> Что будет, если ее отключить?

это как kill -9 процессов, которые бегали на ней :)

> Можно ли поиметь рабочую станцию на машине-акцепторе, независимо от ее включенности в кластер?

хм… не знаю :)

> Не могли бы вы привести примеры приложений, где такой кластер использовать лучше всего? Т.е. для каких задач подходит эта архитектура? Буду признателен, если ответите хотя бы на часть вопросов.

я пользовался успешно в протеомике (молекулярная биология). сейчас другие нужды.

любые loosely coupled computations отлично приживаются на SSI, например переборные задачи. переводя на простой язык, если вы какой-нибудь хакер или ищете чего-нибудь там в космосе — то SSI самое то :)

З.Ы. сорри, надо убежать на час
это как kill -9 процессов, которые бегали на ней

То есть, в упомянутом в заметке сценарии использования, если кто-то один из офисных работников выключит компьютер — то у кого-то другого попадают процессы?
тут, к сожалению, чуда не будет. Убито — значит убито.
Если вы брутально выдернете один процессор с двупроцессорного сервера, то тоже ведь ничего хорошего не ожидается? так и тут.
если вы про первичную инсталяцию на «Компьютере №1», то вопрос слишком банальный/утилитарный.

Но, если я правильно улавливаю ход вашей мысли, вы прикидываете, сколько времени нужно бездисковому узлу чтобы загрузиться через Ethernet с донора? — Раньше это было практически столько же сколько и с диска. Но я не удивлюсь, если это произойдет даже быстрее :)

В самом деле, ведь самым естесственным образом на «Компьютере №1» все файлы нужные для загрузки закэшированы в системе. А пересылка их прямо из RAM по Ethernet (особенно если он у вас гигабитный) кууууда быстрее, чем считывание с диска — на чём собственно и держатся SAN-носители.
Какая путаница… Кластер != компьютер с кучей ядер. То, что вы говорите реализуется с помощью NUMA. А это всего лишь загрузка по сети с DRBD.
SSI — это когда ваш кластер выглядит как компьютер с кучей ядер. Где путаница?

NUMA — это парадигма доступа к памяти, не только нерегламентирующая миграцию процессов, но даже не аппелирующая к процессам. Раз уж вы не любите путаницы, то будьте последовательны :)
В слове «компьютер с кучей ядер».

Вот описание, openssi.org/cgi-bin/view?page=features.html, тут вполне ясно описано, who is who. Это не NSMP (NUMA), это исключительно эмуляция некоторых аспектов.

Вы не сможете иметь полноценную имитацию (N)SMP, это будет лишь запуск приложений на разных компьютерах с единой нумерацией всего.

Разница с NUMA примерно такая же, как разница между Xen'ом и chroot'ом. Определённое сходство есть, но результаты и технологии — разные.
а можете дать ссылку / ppa для ubuntu 10.10? Хочу потестить
к концу недели должна бы появиться.
а пока есть лишь эти дебы: kerrighed.org/debian

но эти пакеты — ненамерянная утечка. они предназначались для проекта по EU-гранту XtreemOS
Как печально живется людям из-за того, что когда-то они не приняли Plan9, а теперь не принимают Erlang.
Для тех, кто в танке: единственный теоретический профит от такой инсталляции в межнодовом IPC. Растянуть на 100500 камней желаемый мускуль может быть, и получится, но без использования RDMA вся эта поделка будет неистово тормозить из-за сетевых задержек. С использованием RDMA (который, к слову, доступен исключительно на не столь уж и дешевых железках) тормозов будет меньше, но они все же будут.

В результате я так и не понял, какова практическая польза от такого продукта кроме Proof-of-concept. Заранее спасибо за ваши объяснения.
UFO just landed and posted this here
в будущем, мне кажется, востребованы не костыли типа SSI, а нормальные тулкиты для разработки софта. Сейчас существуют Erlang/OTP, Scala, может быть, еще что-то.
Кластеризоваться должен софт, а не платформа, другими словами. Это мое мнение.

P.S. Тем временем люди портировали хорошую вещь на распространенную платформу. Кластер можно строить хоть сейчас из компов и телефонов. Осталось написать софт согласно парадигме Let it crash.

P.P.S. Так где же будущее? Когда-то, может быть, на SSI или прямо сейчас на OTP?
UFO just landed and posted this here
> в будущем, мне кажется, востребованы не костыли типа SSI, а нормальные тулкиты для разработки софта.

ну, раз уж вы такую планку берёте, то заклеймите уж наконец интел — не первое десятилетие на рынке, а даже про «ерундовое 1Кило-ядро» для нормальных людей у них и речь даже не идёт. Всё кормят нас костылями по паре-другой ядер…

> Кластеризоваться должен софт, а не платформа, другими словами. Это мое мнение.

да, так было удобно. но только до тех пор, пока не познакомишься с реальным многоязычным миром, когда всё это «счастье» надо как-то заставить работать вместе :)
скажу честно, тема HA меня не интересовала.
могу подсказать откуда начать копать по OpenSSI: wiki.openssi.org/go/FAQ
(ctrl-f High-availability)

а вот старенькая HA-пэйпа по Kerrighed:
xcr.cenit.latech.edu/hapcw2004/presentation/HAPCW04-Kerrighed.pdf

у обоих SSI-имплементаций HA ставится если и не во главу угла, то и не в чулан задвинут :)
UFO just landed and posted this here
упс, sorry, за ковбойство.

аббревиатура HA практически не имеет разночтений в контексте кластеров и SSI:
en.wikipedia.org/wiki/High_availability
могу сказать как было в моём случае. у меня были тяжелые вычисления. CPU-bound. на обсчёт одних проектов уходили сутки. других почти неделя. после каждого обсчёта делается анализ, корректировка и обсчёт заново.

можете себе представить какой был цикл, и сколько правок можно было успеть. всё было писано в С++, вполне себе оптимизировано. Дальше оптимизировать было себе дороже (код «тяжелел», время затраченное на оптимизации уже давало мизерный выигрыш в результате)

у меня был выбор: пойти на все тяжкие и жениться на PVM/MPI или искать более легкоподъмных решений — и я нашёл в лице OpenSSI.

В результате у меня до появилось около 20 параллельно работающих ядер. То, что обсчитывалось сутки, теперь обсчитывалось за часы. Я успевал делать коррекции несколько раз на день. Проекты, которые должны были «сыграть в ящик» из-за того, что обсчитывались почти неделю получили билет в жизнь. Всё это невероятно изменило режим R&D.

а PoC всем были до задницы, там результаты были нужны :)
UFO just landed and posted this here
Я правильно понимаю, что между машинами будут раскидываться именно несвязанные между собой процессы? Если java-машина считает в многопоточке, то она толку от этих 100 процессоров не получит? Извините, если вопро глупый.
P.S. Я знаю про gridgain и terracota на всяк случай.
помню, что с явой были проблемы. тут надо знать особенности sun-JVM и организации процессов в ней, чтобы ответить предметно — я не смогу.
Собственно, а что получится в итоге:
— один компьютер (какой, 1 или 2) с двойными ресурсами (процессоры, память, винты)?
— один компьютер с двумя терминалами (клавы, мышки, видео)?
— два компьютера, способных балансировать нагрузку между собой (один сейчас свободен, а другому что-то нужно и перекидывает на второй часть задач)?
— ещё что-то?

DRBD это, просто DRBD. Общий диск, образующийся онлайновым миррорингом винтов между хостами. Ну и всякое кластерное сверху. Никакого объединения на уровне ядер и памяти тут нет и в помине.
Ну вот, чуда не случилось. А я уж надеялся :)
ну, вы уж людей с толку уж хоть не сбивайте :)
наиболее естесственное ради чего делается SSI скорее ближе всего к вашему п1.
Подскажите, такой layout можно использовать для билл-сервера, для распараллеливания компиляции? Используем maven + scala + flex
Компилировать там вообще здорово будет, ведь компиляторы, как правило, однопоточны. В говнолинуксах даже без SSI умеют, distcc называется.
как только что ответил stolen, компилировать там действительно будет приятно, но не столько потому, что компиляторы однопоточны (хотя это действительно будет упрощать миграцию), а потому, что make, который используется чаще всего как верхнеуровневое средство для компиляции, имеет с давних времен опцию "-j", которая отлично ложится на SSI. Проверено :)

а будет ли maven хорошо делать то, что делает «make -j N» — скажите мне, пожалуйста, мне это тоже интересно :)
Интересно, поможет ли при рендере из Blender 3d… У нас основной затык в том, что кончается оперативная память…
Правильно ли я понимаю, что из репозитория можно взять только для натти?
к сожалению не знаю.

а зачем вам репозиторий? — вы на Gentoo или FreeBSD-like?

ИМХО, для самых первых экспериментов виртуальные образы без всякой возни с исходниками — это самое то.
память на один процесс не увеличится. но если блендер может обсчитывать ваш проект по кускам, где каждый кусок не требует уже так много памяти и обсчитывается независимым процессом, тогда вполне вероятно и поможет.

для проверки вы можете не дожидаться дебианизированных пакетов, а поднять Kerrighed в простой форме с виртуальных образов как описано на сайте. Можете поэксперементировать с OpenSSI.
А вот вопрос, может и не совсем в тему. Имеется множество процессов работающих с одним буфером памяти. Буфер памяти, что то вроде NoSQL БД типа ключ-значение. Мне не нужна миграция процессов по хостам. Мне нужно только, что бы это буфер был доступен с любого хоста, любым процессом. Такое возможно? Теоретически понимаю, что да. Может, есть готовые решения, что бы не изобретать собственный велосипед.

если я правильно понимаю, Kerrighed и OpenSSI обладают этим свойством:
en.wikipedia.org/wiki/Distributed_shared_memory

но деталей и гарантий дать не могу. вам стоит в их майллистах спросить.
Тут есть еще проблема. Моя задача требует как можно меньше накладных расходов. В идеале, что то вроде memcached, только с возможностью мастер-мастер репликаций между хостами.
тут вам придётся уже взяться за лопату :)
надо копнуть и посмотреть. спросить в мэйллистах
А почему бы обычную реляционную базу данных не использовать?
вместо NoSQL?.. — с нетерпеньем жду, что ответит Yak52
:D
Ну было сказано про «что бы не изобретать собственный велосипед», я конечно понимаю что у NoSQL много своих преимуществ, но всё же на деле, неужели старые добрые постгрес и мускуль на столько уж сильно сольют NoSQL в такой простой задаче?..
Задача может и проста, но как я написал ниже, есть некоторые требования по времени. Грубо говоря, в 1 сек. цикл, надо обработать порядка 2 Мб. данных.
Ну или если так уж хочется любую NoSQL, Membase там какой-нибудь или Cassandra?..
Потому что задача для NoSQL СУБД. Если кратко, то это буфер ( Объем, порядка 20 тыс. записей. Каждая запись 100 байт.) для оперативных данных, который заполняется раз в секунду процессом-писателем, с тем же интервалом модифицируется несколькими процессами и считывается третьими процессами, для передачи во внешнюю систему.
Как над другим вариантом решения, если важна производительность, то можно подумать над MPI или чем-нибудь более современным и попроще, ZMQ какой-нибудь например…
Можно в корпоративной сети компании ночью поднимать такой класетер для каких-нибудь мега-задач.

Спасибо за наводку, очень интересно
вот именно так я это и делал, а потом, когда начальство увидело, что работает, мне прикупили нормальных серверов под это дело :o)
Такой вот вопросец от не разбирающегося:
А машины должны быть совместимы по железу?
Допустим у меня один вменяемый сервер и несколько слабеньких рабочих станций. Процессоры разные.
Есть ли возможность их объединить таким образом?
да, машины могут быть разными. но уже если донор — 64битный линукс, то буть добр везде его и принимай.

у меня в своё время как-то было, что я в OpenSSI кластер втыкнул среди сильных машин совсем уж слабую. Так если на неё переезжал какой-нибудь требовательный процесс, то все обсчёты из-за свопинга на слабенькой машине частенько тормозились. Ну тут надо уж глаза открывать
Sign up to leave a comment.

Articles