LINUX.ORG.RU

[aio]Юзабельность AIO в Linux


0

0

Сабж. Кто знает какие-либо недостатки или наоборот, доволен POSIX AIO в Linux пожалуйста высказывайтесь. Слышал про него негативные высказывания, потому интересно мнение.

★★★★★

Я слышал (или даже читал в info libc), что дисковый асинхронный ввод-вывод сделан тупо на основе тредов в юзерспейсе. Т. е. glibc создает несколько тредов, ассоциированных со структурой aiocb и использует их для обеспечения «асинхронности».

Почитай info libc в целевом дистрибутиве, раздел «Asynchronous I/O».

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

> Тут или тред в ядре этим будет заниматься или в юзерспейс.

Треды aio/X в ядре есть, но мне не ясно, зачем. Уведомление о завершении операции всё равно ведь приходит либо с прерыванием, либо от треда, управляющего контроллером.

POSIX AIO реализован в glibc тредами. Для файлов с флагом O_DIRECT можно юзать ядрёную реализацию.

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

>ну это не самый плохой подход как мне кажется.

Ну а представь себе, что у тебя много асинхронных операций. И что, плодить по треду на каждую?

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

не обязательно, можно и одним потоком это сделать при помощи мульиплексинга.

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

> уведомление можно через какой-нить poll/select/etc получать, на сколько я знаю.

Я имел в виду внутриядерную реализацию и необходимость запуска отдельного потока для неё.

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

> Ну а представь себе, что у тебя много асинхронных операций. И что, плодить по треду на каждую?

Так они ж группируются.

const86 ★★★★★
()

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

Да, разное в glibc и в ядре это как всегда - из за специфики того и другого проекта. Ядреный эффективный и с дизайном Linux&Co . glibc ориентируется на 100% совместимость с posix.

То есть те кому очень надо и кто знает что делает юзают ядреный. «Просто программисты» юзают из glibc

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