LINUX.ORG.RU

Ядро linux как основа проекта

 , ,


0

3

Всем привет!

Интересен стал следующий проект:

Ссылка на схему -> http://postimg.org/image/ny56kqjgr/

Суть вот в чем: пусть у меня есть например 3 сервера подключенные в сеть. На каждый из серверов ставится так называемый (из схемы) dvm_unit - это микро ос - демон, который связывает все серверы в этакую «распределенную виртуальную машину» (dvm - distributed virtual machine). Т.е я смотрю на эти серверы как на одну машину, но на каждом сервере стоит демон, который предоставляет окно для взаимодействия с этой dvm как с единым компьютером.

Каждый демон, может предоставлять 4 вида ресурсов:

  1. cpu
  2. memory
  3. disk
  4. net - сеть

Основная задача демонов -> обеспечивать грамотное использование ресурсов всех серверов, и предоставлять пользователю абстракцию, что будто нет никаких серверов связанных по сети, а есть только один, физический сервер, на котором можно поставить какую-то os и играться с ней.

Так вот, мне хочется на основе ядра linux, сделать что то подобное. В какую сторону капать? Может кто знает проекты, основанные на linux kernel, и переделанные для своих нужд?

Надеюсь я правильно донес свою мысль)



Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

А разве hurd это то о чем я пишу? Просто интересно, как будет работать такая система. Это как противопоставление (1 физическая машина/ много виртуальных) и (много физических машин/одна виртуальная).

maksspaces
() автор топика
Ответ на: комментарий от router

Вычислительный кластер это много компьютеров на которых стоит своя ос и они соединены по сети. А я говорю про логическое представление множества серверов, как один. Ну грубо говоря у меня есть 5 серверов с 64гб ram на борту, а логически я вижу (через демон) что у меня +- 5*64 гб ram.

maksspaces
() автор топика
Ответ на: комментарий от anonymous

А соответствующий интерконнект у тебя есть? А софт кто будет под это адаптировать?

Зачем его адаптировать, если идея в том, чтобы скрыть факт распределенной виртуалки, которая выглядит как x86-64 для юзера? А с интерконнектом можно что-нибудь придумать.

maksspaces
() автор топика
Ответ на: комментарий от maksspaces

Да :) Дистрибутет виртуалка == пачка машин с дистрибутед осью, притворяющаяся, что она не знает, на чем ее исполняют. Виртуальная машина — это корабль в бутылке на корабле. Хурд — это ящик бутылок, выпитых авторами архитектуры, пока они ждали новый корабльзаписывали такие хотелки, которые обещало использование ведра Mach, как:

" Process migration

Automated resource rebalancing, where processes would migrate themselves to less-busy hosts/nodes/processors on the network." (с)

«it's scalable

Mach is particularly well suited for SMP and network cluster techniques. Thread support is provided at the kernel level, and the kernel itself takes advantage of that. Network transparency at the IPC level makes resources of the system available across machine boundaries (with NORMA IPC, currently not available in GNU Mach).» (c)

Ты хочешь модель корабля, с деталями рассоваными по бутылкам в ящиках на складе стеклотары, чтоб еще и юзер видел «корабль», когда заглядывает в любую бутылку.

Просто интересно, как будет работать такая система.

Хреновоне очень нужно :) Пробовали уже планы 9, амебы, вот это вот все. Щас облачка, кунтейнеры и прочий кластерфакинг и дистрибудет-компутинг для бедных.

slackwarrior ★★★★★
()

Что произойдет если на одной тачке кончится диск? Аппликатив с нее переедет на другую машину? Или хранилка будет общая? Аналогично ram и процом. А уж отдельная тачка под выход в сеть это вообще будет наты черз наты, зачем оно?

anonymous
()
Ответ на: комментарий от anonymous

Что произойдет если на одной тачке кончится диск?

Система с uniformly distributed load. Мне видится, не какой то кластер с серверами, где на каждом есть полноценная ос и все по сеточке общаются, а идея о ресурсах.

Неважно сколько есть серверов - все они дают ресурсы, и их можно не различать от сервера к серверу. Код запущенный на такой виртуалке, не знает где он выполняется, и какую именно память он использует, не знает где хранится файл, как он хранится, и т.д. Демоны поддерживают видимость целостности для работающего кода. Грубо говоря, если на моей машине, закончилась ram, то ее можно выделить на другой машине, или если у меня крутая загрузка cpu, то часть программы можно выполнить на другом сервере (так сказать real-time cross-machine cross-compilation) и т.д. %)

Или хранилка будет общая?

Общая и распределенная. Все ресурсы будут обладать таким свойством. Любой файл может хранится как целый файл, как разбитый на куски, и лежащий на разных машинах и т.д.

А уж отдельная тачка под выход в сеть это вообще будет наты черз наты, зачем оно?

Нет, это можно представить как единый сервер, с огромным количеством сетевых карт.

maksspaces
() автор топика
Ответ на: комментарий от maksspaces

У тебя в посте описано непойми что непойми зачем. Проще кластеризовать на прикладном уровне, чем костылить и велосипедить на системном.

SevikL ★★★★★
()
Ответ на: комментарий от post-factum

а OpenMOSIX таки помер ЕМНИП сразу после появления многоядреных процов

exception13 ★★★★★
()

Всем интересен, только вот не взлетело и не взлетит.

t184256 ★★★★★
()

Если бы такое решение было целесообразно - все кластеры юзали бы такой модифицированный Linux. Наоборот, есть специальные библиотеки и стандартные протоколы, которые позволяют работать приложению в кластере, по крайней мере об этом я читал...

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от maksspaces

Ты пытаешься перепридумать то, что уже десятилетиями придумывали до тебя. Почитай сначала о SMP, Dataflow, NUMA, GRID-кластерах; потом думай почему каждый подход работает в своей узкой нише, и ничего общеприменимого все еще нету.

unlog1c ★★★
()
Ответ на: комментарий от xpahos

Да никакую) Я думаю какой бы проект выбрать для opensource, в качестве так сказать наглядного резюме. Интересна виртуализация, распределенные вычисления. Но фишка в том, что все другие проекты, сделаны по похожей архитектуре, а у меня в голове такой «виртуальный компьютер» упрощенный до того что в системе нет ничего кроме: 1. /resource/disk 2. /resource/mem 3. /resource/video (видеопамять выполняющегося процесса) 4. /resource/net

И все программы представляют из себя какие то скрипты (типа python) и нет никаких компиляторов и тд, я просто запускаю что то типа ./my_cool_proc.py и он начинает выполнятся. ОС сама транслирует код для конкретной архитектуры. И существует простой api для работы со всеми ресурсами. И вся эта красота работает поверх распределенной виртуальной машины.

maksspaces
() автор топика
Ответ на: комментарий от maksspaces

Я думаю какой бы проект выбрать для opensource, в качестве так сказать наглядного резюме.

Если я правильно понимаю, что ты хочешь, то этим люди не «для резюме» занимаются, а карьеры на этом строят, но «золотого» решения, как ты хочешь, не придумано ещё.

И все программы представляют из себя какие то скрипты (типа python) и нет никаких компиляторов и тд, я просто запускаю что то типа ./my_cool_proc.py и он начинает выполнятся. ОС сама транслирует код для конкретной архитектуры. И существует простой api для работы со всеми ресурсами. И вся эта красота работает поверх распределенной виртуальной машины.

Это может облегчить задачу, но если «чисто для резюме», то ты хотя бы какую-нибудь виртуальную машину уже известного образца с JIT-компилятором напиши сначала, а? Ну там... LuaJIT для Lua 5.3, например.

proud_anon ★★★★★
()
Последнее исправление: proud_anon (всего исправлений: 1)
Ответ на: комментарий от maksspaces

тебе ведь уже предложили инферно, чем он тебя не устраивает? тот же вопрос относительно других упоминаемых в треде проектах или только на диване рассуждать мастер?

anonymous
()
Ответ на: комментарий от maksspaces

да не взлетит оно. задержки по сети астрономические, в сравнении со скоростью работы ядра. поэтому распределение памяти или процов по сети теоретически возможно, но практически неприменимо.

Iron_Bug ★★★★★
()
Ответ на: комментарий от unt1tled

По-тихоньку в ноуты встраивают thunderbolt: до 40 Gbit/s можно (прям как в уже давно существующих mellanox infiniband по меди, б/у за 40-100 евро). Если взять стандартные 4 GB рама, то всего за 0.8 секунды можно всю оперативку обменять.

gag ★★★★★
()
Ответ на: комментарий от unt1tled

Да, но в современном ПК по сравнению с CPU тормозит вообще всё, RAM в том числе (Вон, десктопные 300 GFLOPS в linpack уже взяли.) Т.е. эти 40 Gbit/s были доступны уже тогда, когда даже RAM был медленнее. Не говоря уже о том, что 40 - далеко не предел, но тогда уже за через чур большие деньги.

gag ★★★★★
()
Ответ на: комментарий от unt1tled

все будет шататься туда-сюда по сети, жутко тормозя

Да, но в современном ПК по сравнению с CPU тормозит вообще всё

Как то что ты написал меняет ситуацию?

Значит, под любой ОС компьютером пользоваться можно только с жуткими тормозами. Но, ты и я пользуемся же! Значит, и идея в треде неплохая, да и отчасти реализованная в plan 9 & inferno, которые сейчас уже и на raspberry pi работают.

gag ★★★★★
()
17 апреля 2016 г.
Ответ на: комментарий от maksspaces

Если с точки зрения программы, работающей на такой системе, не будет различия между локальными и нелокальными ресурсами, и программы будут на каждый чих дергать удалённые ресурсы, то всё это будет работать крайне медленно, т.к. сеть в принципе работает медленно.

Сейчас все пытаются делать так, чтобы данные, по возможности, обрабатывались там же, где и хранятся (см. Hadoop и инфраструктуру Google как примеры).

Deleted
()
Ответ на: комментарий от gag
  • Infiniband слишком дорог для применений вне HPC;
  • Это всё ещё медленно и неэффективно, особенно с учётом того, что топикстартер предлагает стереть различие между локальными и нелокальными данными (а значит, убить все возможные за счёт этого оптимизации).
Deleted
()
Ответ на: комментарий от Deleted

Infiniband слишком дорог для применений вне HPC;

Дык сейчас уже домашний usb 3.1 даёт 10 ГБит/с.

Это всё ещё медленно и неэффективно

По-моему, платформа x86 сегодня медленная и более неэффективная: смотри как GPU подключена к памяти через HBM. И это не говоря уже о давно существующей GDDR.

что топикстартер предлагает стереть различие между локальными и нелокальными данными (а значит, убить все возможные за счёт этого оптимизации).

Да, учёные уже работают над мемкопьютерами (на мем-ристорах, -конденсаторах и -катушках), чтобы наконец-то данные обрабатывались в том же месте, где и хранятся. А сегодняшняя x86 архитектура имеет только условные «локальные» данные: регистры, L1, L2, L3, RAM.

gag ★★★★★
()

у абстракций есть свойство протекать. В твоём случае это будет потоп до первого этажа.

thesame ★★★★
()
Последнее исправление: thesame (всего исправлений: 1)
Ответ на: комментарий от gag

«Условно» локальные данные — всё равно быстрее, чем данные далеко в сети.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.