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!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.