[Moscow.pm] fs aio без (i)threads?

Vladimir Timofeev vovkasm на gmail.com
Вт Окт 30 13:51:38 PDT 2012


30 октября 2012 г., 20:50 пользователь Алексей Шруб <worldmind на mail.ru> написал:
> Tue, 30 Oct 2012 10:06:11 +0200 от TheAthlete <theathlet на yandex.ru>:
>> В lor (http://www.linux.org.ru/forum/development/4496297 [aio]Юзабельность
>> AIO в Linux) пишут, что "POSIX AIO реализован в glibc тредами"
>
> не очень понял к чему это, я про glibc ничего не говорил, и про POSIX AIO тоже, я про libaio которое тредов не требует
Ну во первых про libaio вы тоже не говорили прямо... а что такое
"настоящий ядерный AIO" - пойди догадайся. К примеру, man 7 aio в
Linux про POSIX AIO, с одним маленьким пояснением:
===
Work has been in progress for some time on a kernel
state-machine-based implementation
of asynchronous I/O (see io_submit(2), io_setup(2), io_cancel(2),
io_destroy(2), io_getevents(2)), but this implementation hasn't yet matured to
the point where the POSIX AIO implementation can be completely reimplemented
using the kernel system calls.
===

Ну и собственно, хоть я и не используем какой бы то ни было aio (мы
обычно стараемся минимизировать кол-во операций с диском в работающем
приложении), но имею сказать, что:
1. POSIX AIO не полный интерфейс, т.е. не покрывает всех необходимых
операций с диском, например нет open, stat и т.п.
2. п.1 полностью относится и к io_submit, io_setup и т.п. + работает
не со всеми fs + linux only
3. Единственная возможность работать с fs действительно полностью
асинхронно, это потоки (что и реализовал Marc Lehmann в libeio, на
основе которой сделан aio в IO::AIO).
4. В node.js, похоже, своя аналогичная libeio реализация (они до 0.5.6
использовали её, но сейчас у них своя libuv), тут я не уверен, надо
будет внимательней в исходники глянуть...

>
> --
> Alexey Shrub
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org



-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm