Ru-Board.club
← Вернуться в раздел «Другие ОС»

» ОС для создания кластера

Автор: Uzwer2014
Дата сообщения: 03.06.2014 13:49
[more] [more] [more] Возможно данная тема размещена не в том разделе, поэтому администраторы переместите куда нужно.

В данной теме мне хочется просто высказать свой взгляд на современный подход к росту производительности персональных компьютеров.

Итак, вот, что меня интересует: на базе какой ОС и какого ПО возможно объединение нескольких компьютеров в кластер, т.е. один виртуальный компьютер с высокой производительностью?

Поясню откуда взялся вопрос. У многих, уже повзрослевших, компьютерщиков в гараже, на балконе и других складских помещениях хранятся старые компы. А тот комп, на котором они работают (играют) сейчас, уже скоро придётся обновлять. Тенденция современного мира такова - хочешь использовать новое ПО или играть в новые игры, покупай новый производительный компьютер. А почему бы не заставить старое железо работать по новому? Например создать свой кластер!
Для чего вообще заморачиваться с построением кластера, зачем он нужен?
Да, большинству действительно не нужен, ведь на каждом новом витке развития вычислительной техники она становиться всё более энергоэффективной, производительной и обладает поддержкой новых технологий. А кому нужен? Мне, и не только мне. Порассуждаю. Почти все современные процессоры строятся по многоядерной архитектуре. Каждому ядру выделяется свой кусок ОЗУ (памяти). Однако для обмена данными с другими компонентами используется общая шина данных.
А как Вам такой вариант: несколько процессоров, у каждого из них свой объем памяти И общая шина данных. Практически тоже самое, только во втором случае описаны независимые компьютеры объединенные общей шиной данных, т.е. кластер.
Какие задачи можно решать при использовании кластера: обработка (просчет) потокового видео, расчет сложных 3D-моделей (3D-анимация), действительно параллельное выполнение нескольких задач (т.е. программ и даже игр) под общим управлением.
А вот в игры поиграть на кластере не выйдет (кроме пасьянса конечно). Дело в том, что GPU заточен решать ряд специфических вычислений, которые CPU делать может, но в разы (а то и сотни) раз медленнее.

Определим заведомо узкие места в объединении нескольких компьютеров это: высокоскоростная среда обмена данными между процессорами, отсутствие свободной ОС для выполнения таких задач, невозможность распределения вычислительной нагрузки при обработке графической информации (в играх).
Давайте разберём всё по пунктам.
О построении кластера на основе Pentium-3 думаю следует забыть сразу, а вот компьютер, мат. плата которого имеет разъем PCI-E, это уже наш случай. Думаю многим известно о существовании скоростных дисковых систем использующих шину PCI-E для ввода/вывода, почему бы в качестве среды обмена данными между процессорами не использовать её. Да в этом случае потребуется специальная плата сопряжения, которых нет или мне о них не известно. Но ведь спрос рождает предложение, и если появится спрос на такую железяку её начнут производить массово. Теперь ОС - большинство серверов работает под управлением ОС семейства UNIX. Думаю найдутся (а может уже нашлись) программисты которые возьмутся за разработку (модернизацию) ОС для построения многопроцессорного кластера.
Про игры забыли (см. выше), к тому же большинство игр вообще не задействуют более одного ядра CPU, GPU, да и вообще писатели игр не сильно заботятся об оптимизации кода для запуска игр на устаревшем оборудовании.
Как я вижу построение кластера.
Стол, под ним (на нём) стоит комп №1, рядом сидит человек, перед человеком монитор, кнопки и мышь. Комп №1 оснащен всем тем, что нужно человеку для его комфортного использования (видеокарта, звуковая плата, плата видеозахвата и т.п.). В какой-то момент времени человек понимает, что мощи компа №1 не достаточно (например для просчета видео 4к в фоновом режиме). Тогда человек включает комп №2. После загрузки ОС на компе №2, комп №1 обнаруживает новое процессорное ядро (объем памяти, дисковое пространство, а при наличии и ещё один видеоадаптер) и начинает его использовать как будто всё это вдруг появилось на компе №1. Причем сообщает о появлении новых ресурсов некая софтина, при помощи которой происходит управление всеми ресурсами кластера. Ну например запустил человек браузер, а софтина спрашивает: "на каком ядре желаете выполнятся", человек отвечает: "на №2 и запомни это навсегда при доступности оного". Этой же софтиной происходит отстыковка ресурсов перед тем как выключить комп №n.
В интернете сидишь, в 3D- или Flash-игрушку играешь, несколько баз данных индексируются, да ещё и home-видео в формате Full-HD запросто просчитываются после монтажа. И Всё это одновременно на одном рабочем месте. А как только видео просчиталось, взяли и выключили ресурс №n, дабы электроэнергию не жог и шум не создавал. А можно и не "выключать", а спать положить - потом доделает, когда человек скажет. Здорово правда!
У меня (и не только) есть старенький компьютер и я очень хочу иметь возможность использовать его так, как описал выше, ну или по другому, но использовать. Причем морально я готов вложить денежки только за платы сопряжения и всё!

[/more] [/more] [/more]
Автор: urodliv
Дата сообщения: 03.06.2014 20:36
Uzwer2014
Тема безусловно прикольная и многим приходила в голову. Только в контексте

Цитата:
Причем морально я готов вложить денежки только за платы сопряжения и всё!

она нежизнеспособна. Предоставить пылящиеся "железки" готовы многие, а вот создавать программное обеспечение - нет.
Автор: FuzzyLogic
Дата сообщения: 03.06.2014 20:52
На самом деле идея нежизнеспособна не по причине отсутствия программного обеспечения (хотя это тоже очень узкое место потому как связывать разные по архитектуре системы это та ещё задача), а по причине отсутствия экономического смысла. Стоимость вычислений (ибо за электроэнергию платить надо) падает с огромной скоростью, погуглите, есть графики стоимости вычислений по годам и использование старого железа обычно бессмысленно экономически (ну если только вы не воруете электроэнергию).

Кстати вещи вроде просчёта 3D моделей вполне себе поддерживаются и сейчас. Приличные 3D рендеры умеют сами собираться в собственные кластеры. Тоже самое касается и разнообразных расчётов (MPI вам в руки).
А про просчёт видео - непонятно что мешает просто запускать его на второй машине, прямо с первой. Для этого не нужны никакие карты сопряжения, итд, достаточно обычной сети.
Автор: Uzwer2014
Дата сообщения: 04.06.2014 11:30
[more] Уважаемый FuzzyLogic, согласен, что постоянное использование кластера на базе "старых" машин действительно экономически не выгодно. Но в мечтах хочется иметь возможность периодического задействования простаивающего оборудования, т.е. возникла необходимость, тогда врубил +4 дополнительных ядра, а если они не нужны, то вырубил их. При таком подходе сейчас, лично я, использую инструментарии удаленного рабочего стола, но есть аргумент именно в пользу кластера. Этот же аргумент объясняет почему очень не удобно просчитывать видео просто на другом компе. Так вот, дело в том, что программа видео-монтажа может быть установлена на ПК имеющий плату видеозахвата (или порт для стыковки камеры, или иное), кроме того на этом же ПК размещаются всякие заготовки, шаблоны и иные примочки необходимые при монтаже видеоматериала, а сам просчет должен выполнятся на другом (возможно более мощном) ПК. Гонять все необходимые материалы, пускай даже по Гигабитной сетке, означает "поставить на колени обе машины", так как и сетка будет серьёзно нагружена, и дисковые системы обоих ПК лягут.
В случае кластера человек продолжает заниматься другим делами (в нашем случае монтажом другого видеоматериала) на ПК №1, тогда как ПК №2 пыхтит во всю только запрашивая данные по скоростной шине, а свопится и пишет готовый материал на локальные диски. А по окончании просчета, он же (ПК №2) и запишет всё это на оптический диск.

Господин urodliv, согласен с вами по поводу софта, если он хорош, то пускай стоит денег. Однако если стоимость ПО для организации кластера будет такой, как например стоимость лицензионного AutoCAD, то ну его в баню, ибо экономия 3-4 часов в сутки никак не оправдает такой суммы. Речь не идёт о создании дома дата-центра, а лишь о комфортном использовании уже имеющегося оборудования. [/more]
Автор: FuzzyLogic
Дата сообщения: 06.06.2014 00:00
Uzwer2014
У вас несколько всё перемешано... И понятие "кластера" у вас слишком фантастическое. Т.е. без привязки к архитектурам, итд просто "появились 4 ядра", "пропали 4 ядра", этакий сферический конь в вакууме. А что происходит с памятью? В вашем сценарии она общая? А ничего что скорость скорость древнего DDR2-800 (burst) около 12800MBs а скорость современного PCI-E 3.0 1x - 985MBs ? В общем куча технических моментов, стоимость разработки учитывая сложность проблемы (на данный момент, кто знает куда дальше будут меняться архитектуры) делают данную затею весьма мутной
А вообще, для случая что вы описали - всё вполне реально, берём USB девайс видеозахвата + софт для перебрасывания USB порта по сетке (USB 2.0 вполне вмещается в гигабитную сеть ещё и с остатком). При качественной сети ничего никуда не ляжет. Я довольно часто цифрую/конвертю видео используя данные с сервера по сети + в то же время кто-нить кино стримит на телевизор + ребёнок в какую-нить ерунду пялится на twitch, и всё вполне укладывается в домашнюю гигабитную сеть. Никто не ложится.
Автор: Uzwer2014
Дата сообщения: 06.06.2014 11:10
[more] Однако продолжаю фантазировать о сферическом коне в вакууме.
Попробую конкретизировать: у человека (см. пост 1) есть не более 2-х ПК (в теории ограничимся вообще 4). Забыли про стыковку ПК между собой посредством PCI-E, соединяем их локалкой. Задача сводится к тому, чтобы организовать из этих 2-х ПК один виртуальный, да так чтобы второй ПК можно было включать/выключать в любое время. О разности архитектур - есть такая ОС Gentoo, которая при установке собирает своё ядро адаптируясь к аппаратным средствам. Итак, на каждом ПК установлена некая ОС семейства UNIX. При установке ОС один из КП выбирается главным, в конце установки ОС главного ПК создает виртуальную машину (на основе аппаратных средств обоих ПК). А вот уже на виртуальную машину устанавливается любая (или нет) гостевая ОС с GUI. Каждый ПК использует его ОЗУ и другие ресурсы монопольно предоставляя кластеру лишь дополнительную вычислительную мощность, ну можно всё таки некоторые разделы жесткого диска расшарить, причем уже на более высоком уровне (т.е. уровне гостевой ОС). Остаётся только написать некую утилиту под различные гостевые ОС для управления ресурсами кластера (вкл/выкл кусков кластера, и распределения, что из ПО где запускать). [/more]
Автор: FuzzyLogic
Дата сообщения: 06.06.2014 11:22
1. Собрать ядро под конкретную архитектуру и объединить разные архитектуры в одну это не одно и тоже. Попробуйте как-нибудь одной попой сесть на табурет и кресло качалку одновременно.
2. Вас так и не смущает что стандартная скорость шины между процессором и памятью и двумя физически удалёнными ПК будет различаться в десятки-сотни раз?
Автор: Uzwer2014
Дата сообщения: 06.06.2014 15:13
[more] [more] FuzzyLogic, я упорно не понимаю о разных архитектурах. На разных ПК устанавливается одна и та же ОС, с адаптацией под железо в каждом отдельном случае. Взаимодействие между сегментами кластера (между ПК) осуществляется на уровне этой самой ОС (потоки команд и данных), а она одна. А вот исполнение команд на железе происходит через драйвер (по аналогии с Windows-подобными системами), опять же на уровне этой ОС. Отступая в сторону от нашего кластера: именно благодаря тому, что ядро Linux было написано на языке высокого уровня, оно сейчас применяется на самых разных типах контроллеров (авторегистраторы, навигаторы, медиаплееры и т.д.). Для того, чтобы ядро заработало на новом контроллере нужно написать только компилятор под этот контроллер. А программы будут выполнятся, что на старом, что на новом контроллере, т.к. они выполняются ядром.

О скоростях взаимодействия между сегментами кластера я отметил в самом начале, и понимая это предполагаю использовать нечто более скоростное нежели локальная сеть (PCI-E).

P.S. Судя по ответам, Вы рассматриваите вариант разработки, хотя я всегда упоминаю о том, что это только мечты, ну или пожелания. [/more] [/more]
Автор: FuzzyLogic
Дата сообщения: 08.06.2014 08:48
Uzwer2014

Цитата:
я упорно не понимаю о разных архитектурах

Перечитайте свой первый пост, там эдакая смесь из которой не очень понятно что именно хочется. Поясню по простому - есть два компьютера, у каждого есть 8GB памяти и 2 ядра. Что вы хотите получить? Возможность запустить что-то на 4х ядрах и 16GB памяти (тут море проблем включая архитектурные) или просто возможность запускать 2 софтины на 2х ядрах каждая у каждой свои 8 памяти (здесь уже есть решения, главное правильная организация процесса). Правда эти решения не столь удобны как вы хотели бы (пока).
Автор: Uzwer2014
Дата сообщения: 09.06.2014 10:30

Цитата:
просто возможность запускать 2 софтины на 2х ядрах каждая у каждой свои 8 памяти  (здесь уже есть решения, главное правильная организация процесса)


Так-так, в этом месте по подробнее пожалуйста.

Именно такой вариант использования я и предполагаю.

Цитата:
Каждый ПК использует его ОЗУ и другие ресурсы монопольно предоставляя кластеру лишь дополнительную вычислительную мощность




Автор: FuzzyLogic
Дата сообщения: 14.06.2014 09:31
Uzwer2014
Софт используемый для менеджмента кластеров, контроля задач итд. PBS, Condor, итд

Страницы: 1

Предыдущая тема: Влияние изменений в протоколе TCP/IP на работу NetWare


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.