Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 12:32
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Все, все, все. Больше у меня ни сил ни возможностей нет. При столь фантастическом непонимании основ современных ОС и файловых систем я больше никаких аргументов не имею и не могу иметь. Бессмысленно продолжать, так как надо читать целый курс, а на это у меня ни сил ни времени ни желания нет.

Как работают современные ОС я в курсе. Ни один толмуд на эту тему прочитал.
А еще я много думал на счет того как должны быть устроены правильные ОС.
А ты давай попробуй объяснить в чем принципиальная разница между файловой системой и SQL сервером?
Ибо и то и другое персистентные хранилище информации.
Единственная разница это способ структурирования этой самой информации.


22.06.09 19:31: Ветка выделена из темы Ну ты вообще многого не видишь... ;)
Автор: dmitry_npi
Дата: 26.05.09
— WolfHound
22.06.09 19:51: Перенесено модератором из 'Компьютерные священные войны' — WolfHound
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re: Хранилища данных в управляемых и не очень ОС
От: Cyberax Марс  
Дата: 22.06.09 12:38
Оценка: +2
Здравствуйте, WolfHound, Вы писали:

WH>А ты давай попробуй объяснить в чем принципиальная разница между файловой системой и SQL сервером?

Файловая система тесно интегрирована с ядерным менеджером кэша и системой виртуальной памяти. Т.е. фичи типа sendfile могут работать очень быстро.

И сделать такое обобщённо может и не получится — абстракции текут (к примеру, требуется особое выравнивание для того, чтобы работало DMA и т.п.).
Sapienti sat!
Re: Хранилища данных в управляемых и не очень ОС
От: Pavel Dvorkin Россия  
Дата: 22.06.09 13:16
Оценка: -2 :))
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Pavel Dvorkin, Вы писали:


PD>>Все, все, все. Больше у меня ни сил ни возможностей нет. При столь фантастическом непонимании основ современных ОС и файловых систем я больше никаких аргументов не имею и не могу иметь. Бессмысленно продолжать, так как надо читать целый курс, а на это у меня ни сил ни времени ни желания нет.

WH>Как работают современные ОС я в курсе. Ни один толмуд на эту тему прочитал.

Не знаю, что ты прочитал, но не в коня корм.

WH>А еще я много думал на счет того как должны быть устроены правильные ОС.


А то до тебя никто не думал.


WH>А ты давай попробуй объяснить в чем принципиальная разница между файловой системой и SQL сервером?


Объяснять я ничего не буду. Этот флейм тут уже не раз устраивался, да и Cyberax ответил, я мог бы добавить, но и этого не буду. Отмечу лишь маленькое такое передергивание. Если речь идет о файловых системах на основе SQL (вроде то ли закрытого, то ли нет проекта MS насчет SQL-файловой системы) — это может быть темой для реального проекта и темой для обсуждения. А вот представление о MySQL как о дисковой подсистеме есть, извини, чушь несусветная. И представление твое об отличии драйвере от программ есть то же самое. Элементарное непонимание основ реальной системы, с которой ты работаешь. И нежелание понять.

WH>Ибо и то и другое персистентные хранилище информации.

WH>Единственная разница это способ структурирования этой самой информации.

Фантастическая способность с апломбом говорить , не разбираясь совершенно в сути вопроса. Персистентное хранилище — и все. Вся история и вся практика развития ОС и ФС за 50 лет коту под хвост.

Вот до чего абстракции людей доводят, когда они не подкрепляются знанием конкретики.
With best regards
Pavel Dvorkin
Re[2]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 14:02
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Файловая система тесно интегрирована с ядерным менеджером кэша и системой виртуальной памяти. Т.е. фичи типа sendfile могут работать очень быстро.

1)Что мешает тоже самое сделать с SQL сервером?
2)В правильных ОС фичи типа sendfile не нужны ибо они будут получатся автоматически.

C>И сделать такое обобщённо может и не получится — абстракции текут (к примеру, требуется особое выравнивание для того, чтобы работало DMA и т.п.).

Никуда оно не течет.
ОСь аля сингулярити. Следи за руками:
1)Приложение SQL среверу: Дай мне вон тот блоб на пару гигов.
2)SQL сревер файловой системе: Заверни кусок того файла от сих до сих в поток.
3)Файловая система драйверу винта: Вот тебе поток сложи в него такие то блоки.
4)Файловая система SQL среверу: держи поток.
5)SQL сревер приложению: держи поток.
6)Приложение сетевому соединению: Отправь поток.

Все! Вот тебе sendfile. И без единой протечки.
Драйвер винта будет запихивать в поток страницы, а драйвер сетевухи будет доставать из потока массивы которые выровнены драйвером винта.
Накладные расходы только на обслуживание потока. И проверку того что очередной кусок действительно выровнен. Иначе через DMA отправляем подмассив который выровнен, а начало и/или конец как придется. От современных ОС отличий никаких.
Приложение, SQL сревер и файловая система в передаче данных не участвуют.

Причем все полностью safe.
А если не полениться и прикрутить зависимые типы то ВМ на этапе компиляции проверит что все состояния протоколов обработаны. А если еще немного подумать то проверит что все обработано правильно.
Причем все будет работать с минимумом проверок ибо нафига если почти все доказано?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 14:14
Оценка: :)
Здравствуйте, Pavel Dvorkin, Вы писали:

WH>>А еще я много думал на счет того как должны быть устроены правильные ОС.

PD>А то до тебя никто не думал.
Мелкософты думали. Сингулярити получилась.
Там конечно нужно выкинуть ту тупую ВМ что они использовали и спроектировать нормальную но направление ребята угадали очень не плохо.
А остальные куда то не туда думают.

PD>Объяснять я ничего не буду. Этот флейм тут уже не раз устраивался, да и Cyberax ответил,

Я ему тоже.

PD>я мог бы добавить, но и этого не буду.

Попробуй.

PD>Отмечу лишь маленькое такое передергивание. Если речь идет о файловых системах на основе SQL (вроде то ли закрытого, то ли нет проекта MS насчет SQL-файловой системы) — это может быть темой для реального проекта и темой для обсуждения.

И про них тоже. Ибо они все те же персистентные хранилища данных вот и все.

PD>А вот представление о MySQL как о дисковой подсистеме есть, извини, чушь несусветная.

С точки зрения приложения которое этот самый MySQL пользует совсем даже не чушь.

PD>И представление твое об отличии драйвере от программ есть то же самое. Элементарное непонимание основ реальной системы, с которой ты работаешь. И нежелание понять.

Если это основы то их можно расписать несколькими предложениями.
Давай попробуй.

PD>Фантастическая способность с апломбом говорить , не разбираясь совершенно в сути вопроса.

Зеркало принести?

PD>Персистентное хранилище — и все.

А что это еще?

PD>Вся история и вся практика развития ОС и ФС за 50 лет коту под хвост.

Почему?

PD>Вот до чего абстракции людей доводят, когда они не подкрепляются знанием конкретики.

Знание конкретики есть. Просто я могу кучу конкретеки обобщить и вывести общие законы.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Хранилища данных в управляемых и не очень ОС
От: Cyberax Марс  
Дата: 22.06.09 14:18
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Файловая система тесно интегрирована с ядерным менеджером кэша и системой виртуальной памяти. Т.е. фичи типа sendfile могут работать очень быстро.

WH>1)Что мешает тоже самое сделать с SQL сервером?
Ничего особого. В теории.

WH>2)В правильных ОС фичи типа sendfile не нужны ибо они будут получатся автоматически.

Каким образом?

WH>ОСь аля сингулярити. Следи за руками:

WH>1)Приложение SQL среверу: Дай мне вон тот блоб на пару гигов.
WH>2)SQL сревер файловой системе: Заверни кусок того файла от сих до сих в поток.
WH>3)Файловая система драйверу винта: Вот тебе поток сложи в него такие то блоки.
WH>4)Файловая система SQL среверу: держи поток.
WH>5)SQL сревер приложению: держи поток.
WH>6)Приложение сетевому соединению: Отправь поток.
Мимо. Сетевому драйверу просто любой поток не подойдёт. Хотя бы потому, что в теории он может отдавать по байту в час, а нам нужна сразу как можно большая непрерывная область — чтоб можно было отдать её контроллеру DMA и забыть о ней.

Далее, как поток у нас будет информацию отдавать? Кто будет буффер для них распределять?

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

Линукс сейчас всё это делает, из-за чего возможно отдавать файлы из кэша прямо в сеть с нулевыми затратами. Буквально драйверу говорят "вот этот, этот и ещё вот этот блок отправить вот туда вот", драйвер как ему там нужно программирует сетевуху, запускает DMA и всё. Благодаря TCP offloading сейчас карточки вообще всё сами могут делать.

На Ethernet'е на это ещё всё можно наплевать, сейчас пара гигабит копирования процессоры не очень затруднит. А вот на FibreChannel или InfiniBand этот overhead уже весьма и весьма заметен.
Sapienti sat!
Re[4]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 14:39
Оценка:
Здравствуйте, Cyberax, Вы писали:

WH>>1)Что мешает тоже самое сделать с SQL сервером?

C>Ничего особого. В теории.
Расскажи это Дворкину. В его мире это всю историю ОС перечеркивает.

WH>>2)В правильных ОС фичи типа sendfile не нужны ибо они будут получатся автоматически.

C>Каким образом?
Я написал.

C>Мимо. Сетевому драйверу просто любой поток не подойдёт. Хотя бы потому, что в теории он может отдавать по байту в час, а нам нужна сразу как можно большая непрерывная область — чтоб можно было отдать её контроллеру DMA и забыть о ней.

Ты вообще читаешь то что я пишу?
Буквально в следующем абзаце я все расписал.
А ты его проигнорировал.

C>Далее, как поток у нас будет информацию отдавать? Кто будет буффер для них распределять?

Зачем распределять?
У нас в потоке уже буферы есть.
Вот прямо из них и отдавать.
На одном конце драйвер винта или там демон кеша складывает страници, а на другом драйвер сетевухи те же самые страници достает.
В чем проблема то?

C>Далее, чтоб отдать область напрямую контроллеру DMA — нужно чтобы все фрагменты были выровнены по границе страницы. А на время траснфера нужно ещё блокировать все эти страницы в физической памяти.

Ни разу не проблема.

C>Линукс сейчас всё это делает, из-за чего возможно отдавать файлы из кэша прямо в сеть с нулевыми затратами. Буквально драйверу говорят "вот этот, этот и ещё вот этот блок отправить вот туда вот", драйвер как ему там нужно программирует сетевуху, запускает DMA и всё. Благодаря TCP offloading сейчас карточки вообще всё сами могут делать.

Ну и тут все тоже самое.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Хранилища данных в управляемых и не очень ОС
От: Cyberax Марс  
Дата: 22.06.09 15:00
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>>>1)Что мешает тоже самое сделать с SQL сервером?

C>>Ничего особого. В теории.
WH>Расскажи это Дворкину. В его мире это всю историю ОС перечеркивает.
Не, я боюсь с Дворкиным спорить

C>>Далее, как поток у нас будет информацию отдавать? Кто будет буффер для них распределять?

WH>Зачем распределять?
WH>У нас в потоке уже буферы есть.
Плохие буфферы.

Для полного DMA твой вариант со специальной обработкой невыровненного начала/конца не подойдёт. В случае с Infiniband я точно знаю, что он не умеет копировать половину страницы (за исключением последней) в scatter-gather режиме. Т.е. из-за невыровненного начала тебе придётся в две транзакции копирование делать.

Плохо.

А ешё если посмотреть взаимодействие всего этого с подсистемой VM... В общем, не так тут всё просто.
Sapienti sat!
Re[6]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 15:20
Оценка:
Здравствуйте, Cyberax, Вы писали:

WH>>У нас в потоке уже буферы есть.

C>Плохие буфферы.
Почему?

C>Для полного DMA твой вариант со специальной обработкой невыровненного начала/конца не подойдёт.

А что современные ОС в этом смысле чем-то отличаются?

C>В случае с Infiniband я точно знаю, что он не умеет копировать половину страницы (за исключением последней) в scatter-gather режиме. Т.е. из-за невыровненного начала тебе придётся в две транзакции копирование делать.

C>Плохо.
И в современных ОС будет абсолютно тоже самое.
Те отправляя HTTP ответ нам по любому нужно будет сформировать заголовки которые и в обычной ОС с высокой вероятностью будут не выровнены на границу страницы. А то и через какойнить writev будут отправлены.
А потом отправляем файло. А там уже все хорошо. Ибо один драйвер получает выровненые данные с винта, а другой те же самые данные без единого копирования отдает в сеть.
Короче не вижу причин по которым ситуация в данном случае в управляемой ОС будет хуже чем в не управляемой.
Почему может быть лучше я написал.

C>А ешё если посмотреть взаимодействие всего этого с подсистемой VM... В общем, не так тут всё просто.

А ВМ и ОСь тут одно и тоже. Так что ВМ будет сделана с учетом всей этой низкоуровневой возни.
В смысле реализация ВМ, а модель будет без единого гвоздя.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Хранилища данных в управляемых и не очень ОС
От: Cyberax Марс  
Дата: 22.06.09 15:31
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>Плохие буфферы.

WH>Почему?
Выровненность не сохраняется. Впрочем, можно реализовать что-то типа NIO в Java. Это посложнее потоков будет, но там можно требования выровненности сохранять.

C>>Плохо.

WH>И в современных ОС будет абсолютно тоже самое.
WH>Те отправляя HTTP ответ нам по любому нужно будет сформировать заголовки которые и в обычной ОС с высокой вероятностью будут не выровнены на границу страницы. А то и через какойнить writev будут отправлены.
AFAIR, nginx их выравнивает.

WH>А потом отправляем файло. А там уже все хорошо. Ибо один драйвер получает выровненые данные с винта, а другой те же самые данные без единого копирования отдает в сеть.

WH>Короче не вижу причин по которым ситуация в данном случае в управляемой ОС будет хуже чем в не управляемой.
WH>Почему может быть лучше я написал.
Да, ты прав. Только абстракцию более мощную надо выбрать, чем поток.

C>>А ешё если посмотреть взаимодействие всего этого с подсистемой VM... В общем, не так тут всё просто.

WH>А ВМ и ОСь тут одно и тоже. Так что ВМ будет сделана с учетом всей этой низкоуровневой возни.
WH>В смысле реализация ВМ, а модель будет без единого гвоздя.
Не забывай, что в FS оно ещё и с файловым кэшем интегрировано. Т.е. при давлении на память менеджер VM лишние страницы будет выкидывать.
Sapienti sat!
Re[8]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 15:50
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Выровненность не сохраняется.

С какого перепугу?

C>AFAIR, nginx их выравнивает.

Рад за него.
А в случае с управляемой ОС можно реализовать поток так что он при записи будет склеивать маленькие буферы в большой выровненный буфер.

C>Да, ты прав. Только абстракцию более мощную надо выбрать, чем поток.

Не надо.
Ведь мы из потока можем забирать данные разными способами.
Можем сказать дай следующие Н байт.
А можем сказать дай следующий блок такого размера какой получился.
И все! Какие блоки сложили на одной стороне такие (или лучше за счет склеивания мелочи и хвостов не выровненных) получили на другой.

C>Не забывай, что в FS оно ещё и с файловым кэшем интегрировано. Т.е. при давлении на память менеджер VM лишние страницы будет выкидывать.

И в чем проблема?
В данном случае менеджер виртуальной памяти интегрирован в саму виртуальную машину и повязан с мусорщиком.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: Хранилища данных в управляемых и не очень ОС
От: Cyberax Марс  
Дата: 22.06.09 16:16
Оценка:
Здравствуйте, WolfHound, Вы писали:

C>>AFAIR, nginx их выравнивает.

WH>Рад за него.
WH>А в случае с управляемой ОС можно реализовать поток так что он при записи будет склеивать маленькие буферы в большой выровненный буфер.
Это вообще-то умеет делать и libc

C>>Да, ты прав. Только абстракцию более мощную надо выбрать, чем поток.

WH>Не надо.
WH>Ведь мы из потока можем забирать данные разными способами.
WH>Можем сказать дай следующие Н байт.
Вот это поток.

WH>А можем сказать дай следующий блок такого размера какой получился.

А это уже не совсем поток.

WH>И все! Какие блоки сложили на одной стороне такие (или лучше за счет склеивания мелочи и хвостов не выровненных) получили на другой.

Надо ещё управление буфферами туда пришпилить. Т.е. я могу сделать memory mapped file, взять от него буффер (который на уровне системы будет синхронизироваться с кэшем) и отдать его передавальщику в сеть. Передавальщик посмотрит, что буффер имеет все нужные возможности — и пойдёт по fastpath'у без всякого копирования.

C>>Не забывай, что в FS оно ещё и с файловым кэшем интегрировано. Т.е. при давлении на память менеджер VM лишние страницы будет выкидывать.

WH>И в чем проблема?
WH>В данном случае менеджер виртуальной памяти интегрирован в саму виртуальную машину и повязан с мусорщиком.
Как определять когда неплохо бы из кэша чего-нибудь выбросить?
Sapienti sat!
Re[10]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 22.06.09 16:32
Оценка:
Здравствуйте, Cyberax, Вы писали:

WH>>А можем сказать дай следующий блок такого размера какой получился.

C>А это уже не совсем поток.
Ну и пусть не совсем. Короче спор о терминах нужно послать лесом.
Главное что мы получаем все удобства потока и не теряем ни в скорости ни в безопасности.

C>Надо ещё управление буфферами туда пришпилить. Т.е. я могу сделать memory mapped file, взять от него буффер (который на уровне системы будет синхронизироваться с кэшем) и отдать его передавальщику в сеть. Передавальщик посмотрит, что буффер имеет все нужные возможности — и пойдёт по fastpath'у без всякого копирования.

Это само получится.
Ибо по любому нужно интегрировать менеджер виртуальной памяти и ФС. Там конечно есть скользкие моменты но ИМХО все решаемо. Особенно если не забывать включать голову.
А все что действительно нужно потоку это заниматься склейкой мелочи и хвостов.

C>Как определять когда неплохо бы из кэша чего-нибудь выбросить?

ХЗ. Я так с ходу всю СОь с нуля спроектировать не могу.
Но не думаю что возникнут неразрешимые проблемы.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: Хранилища данных в управляемых и не очень ОС
От: IT Россия linq2db.com
Дата: 22.06.09 18:23
Оценка: +3
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Объяснять я ничего не буду. Этот флейм тут уже не раз устраивался, да и Cyberax ответил, я мог бы добавить, но и этого не буду.


Cyberax упомянул только оптимизации, но ничего принципиального. А оптимизации как известно имеют тенденцию устаревать и отсыхать. Вчера мы оптимизировали наши программы под 640 KB памяти, завтра будем оптимизировать под 640 ядер процессора.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Хранилища данных в управляемых и не очень ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.06.09 04:39
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Плохие буфферы.
Прекрасные буферы. Главная их красота — в том, что не нужно заниматься каким-то особенным маршаллингом и договариваться о чём-то. Благодаря отсутствию аппаратной изоляции, адрес буфера можно безопасно передавать между приложениями и пользоваться им без малейших потерь.

C>Для полного DMA твой вариант со специальной обработкой невыровненного начала/конца не подойдёт.

А зачем нам полный DMA? Если мы отдаём empty.gif, то он со всеми хидерами вместе взятыми не займет и одной страницы; боттлнеком будет быстродействие сети.
А для мегабайтного pdf мы вполне можем себе позволить пару раз обратиться к драйверу сети — один раз запихать хидеры, другой раз запихать весь файл. Главное, что весь мегабайт уедет как есть — без копирования между адресными пространствами.
C>В случае с Infiniband я точно знаю, что он не умеет копировать половину страницы (за исключением последней) в scatter-gather режиме. Т.е. из-за невыровненного начала тебе придётся в две транзакции копирование делать.
Всё равно это бесконечно выгодно по сравнению с циклом file.Read(myBuffer, out readLength); socket.Send(myBuffer, readLength).
C>А ешё если посмотреть взаимодействие всего этого с подсистемой VM... В общем, не так тут всё просто.
Ага. Ну то есть получаем всего-то ничего 0.95 скорости света. По сравнению с первой космической. Ужас просто.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Хранилища данных в управляемых и не очень ОС
От: Cyberax Марс  
Дата: 23.06.09 06:47
Оценка:
Здравствуйте, Sinclair, Вы писали:

C>>Плохие буфферы.

S>Прекрасные буферы. Главная их красота — в том, что не нужно заниматься каким-то особенным маршаллингом и договариваться о чём-то. Благодаря отсутствию аппаратной изоляции, адрес буфера можно безопасно передавать между приложениями и пользоваться им без малейших потерь.
Ладно, у меня ещё примеры есть Скажем, для графического ускорителя неплохо бы сразу уметь байндить текстуры (и прочие объекты, у нас же GPGPU и всё такое) в видеопамять.

Но там опять есть проблемы — нужно байндить их в специальную область физической памяти, отображаемую на видеопамять (GART Aperture), т.е. опять течёт абстракция. А ещё память в GART весьма странно ведёт себя с кэшированием — кэши надо явно сбрасывать (командой процессора cflush), иначе видеокарта их не увидит.

C>>Для полного DMA твой вариант со специальной обработкой невыровненного начала/конца не подойдёт.

S>А зачем нам полный DMA? Если мы отдаём empty.gif, то он со всеми хидерами вместе взятыми не займет и одной страницы; боттлнеком будет быстродействие сети.
А если мы занимаемся HPC (который сейчас пишут на суровом C++) и нам надо минимальную латентность иметь?

C>>В случае с Infiniband я точно знаю, что он не умеет копировать половину страницы (за исключением последней) в scatter-gather режиме. Т.е. из-за невыровненного начала тебе придётся в две транзакции копирование делать.

S>Всё равно это бесконечно выгодно по сравнению с циклом file.Read(myBuffer, out readLength); socket.Send(myBuffer, readLength).
Да кто же спорит-то? Но сейчас (да-да, вот прямо сейчас) в том же Линуксе это уже сделано нормально (с полным zero-copy в fastpath) и работает быстро. Но там и не пытались делать текущие абстракции.

C>>А ешё если посмотреть взаимодействие всего этого с подсистемой VM... В общем, не так тут всё просто.

S>Ага. Ну то есть получаем всего-то ничего 0.95 скорости света. По сравнению с первой космической. Ужас просто.
По сравнению с текущим 2*c...
Sapienti sat!
Re[8]: Хранилища данных в управляемых и не очень ОС
От: Sinclair Россия https://github.com/evilguest/
Дата: 23.06.09 07:13
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>Ладно, у меня ещё примеры есть Скажем, для графического ускорителя неплохо бы сразу уметь байндить текстуры (и прочие объекты, у нас же GPGPU и всё такое) в видеопамять.
Не очень понятно, что такое "сразу".
C>Но там опять есть проблемы — нужно байндить их в специальную область физической памяти, отображаемую на видеопамять (GART Aperture), т.е. опять течёт абстракция.
Гм. Это как бэ проблемы драйвера видеокарты, разве нет? В том смысле, что он может озаботиться выделением текстуры таким образом, что нужный виртуальный адрес отмаплен внутрь апертуры. Тогда я могу делать вещи типа file.Read(myGARTBuffer) в своём приложениии, и обходиться минимумом копирований.

S>>А зачем нам полный DMA? Если мы отдаём empty.gif, то он со всеми хидерами вместе взятыми не займет и одной страницы; боттлнеком будет быстродействие сети.

C>А если мы занимаемся HPC (который сейчас пишут на суровом C++) и нам надо минимальную латентность иметь?
А какое отношение HPC имеет к сети? Если мы обращаемся к файлухе, то за DMA-friendly выравниванием будет следить её драйвер.

C>Да кто же спорит-то? Но сейчас (да-да, вот прямо сейчас) в том же Линуксе это уже сделано нормально (с полным zero-copy в fastpath) и работает быстро. Но там и не пытались делать текущие абстракции.


C>По сравнению с текущим 2*c...

Текущий 2*c, как я понял, мгновенно просасывает на сценариях, чуть выходящих за пределы sendfile. Для этого конкретного случая и в винде fastpath предусмотрен.
Речь-то идет о том, как юзермодным приложениям вроде SQL Server получить бенефит, аналогичный этим ядерным сервисам.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 23.06.09 07:20
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Но там опять есть проблемы — нужно байндить их в специальную область физической памяти, отображаемую на видеопамять (GART Aperture), т.е. опять течёт абстракция. А ещё память в GART весьма странно ведёт себя с кэшированием — кэши надо явно сбрасывать (командой процессора cflush), иначе видеокарта их не увидит.

1)Приложение графической системе: Нужна память под текстуру.
2)Графическая система видеодрайверу: Нужна память под текстуру.
3)Видеодрайвер графической системе: Забирай.
4)Графическая система приложению: Забирай.
5)Приложение: Гружу текстуру.
6)Приложение графической системе: Забирай.
7)Графическая система видеодрайверу: Забирай.
8)Видеодрайвер графической системе: Текстура загружена.
9)Графическая система приложению: Текстура загружена.
И опять без единой протечки.
И при разборе полетов так будет со всем.

C>А если мы занимаемся HPC (который сейчас пишут на суровом C++) и нам надо минимальную латентность иметь?

Ты же вроде уже согласился что оно будет как минимум не хуже чем сейчас.

C>Да кто же спорит-то? Но сейчас (да-да, вот прямо сейчас) в том же Линуксе это уже сделано нормально (с полным zero-copy в fastpath) и работает быстро. Но там и не пытались делать текущие абстракции.

Опять 25. Куда и чего протекло?
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Хранилища данных в управляемых и не очень ОС
От: WolfHound  
Дата: 23.06.09 08:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Но там опять есть проблемы — нужно байндить их в специальную область физической памяти, отображаемую на видеопамять (GART Aperture), т.е. опять течёт абстракция. А ещё память в GART весьма странно ведёт себя с кэшированием — кэши надо явно сбрасывать (командой процессора cflush), иначе видеокарта их не увидит.

Или даже так:
1)Приложение графической системе: Держи поток с текстурой.
2)Графическая система видеодрайверу: Держи поток с текстурой.
3)Видеодрайвер графической системе: Текстура загружена.
4)Графическая система приложению: Текстура загружена.
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Хранилища данных в управляемых и не очень ОС
От: Pavel Dvorkin Россия  
Дата: 23.06.09 10:08
Оценка:
Здравствуйте, IT, Вы писали:

IT>Cyberax упомянул только оптимизации, но ничего принципиального. А оптимизации как известно имеют тенденцию устаревать и отсыхать. Вчера мы оптимизировали наши программы под 640 KB памяти, завтра будем оптимизировать под 640 ядер процессора.


Тот факт, что MS начала разработку SQL FS, говорит о том, что такая задача может быть поставлена. Вряд ли они бы начали эту разработку, не продумав идею.
Тот факт, что эта FS так и не появилась и теперь неясно, когда появится, говорит о том, что имеются , по-видимому, достаточно серьезные проблемы в ее реализации.

Обсуждать же вообще возможность такой FS в деталях я просто не имею никакого желания. Мои замечания относились просто к утверждениям WolfHound о MySQL, который к SQL FS и вообще к какой бы то ни было FS не имеет ни малейшего отношения.
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.