AIO в GNU/Linux

Что: 22505814479aaf4c678693c54e36f8cc148b4b08

Когда: 2022-01-17 21:06:01+03:00

Темы: apple bsd systemd

AIO в GNU/Linux

https://habr.com/ru/post/646073/
https://wiki.postgresql.org/wiki/FreeBSD/AIO

    В 2019 году произошло великое событие: инженеры из Facebook написали
    новый механизм асинхронной работы с дисковым IO, который получил
    название io_uring. Он был добавлен в ядро версии 5.1. Вполне неплохо
    -- Linux 2019 года уже может полноценно работать с файлами.

Тогда как в FreeBSD AIO появился в 5.0 в 2003-ем году. Facebook молодцы!

Ну а в macOS, как и с сетевым стэком (f19e0f25f0bf0c1563602d922e9cdf0c1f5ff00b):

    MacOS в скобках, потому что это не серверная ОС. aio там
    присутствует, но вместе с aio идет огромное количество граблей.

оставить комментарий

комментарий 0:

From: kmeaw
Date: 2022-01-18 02:27:34Z

Не поверил, что в столь широко используемых ядрах ОС, AIO появился
относительно недавно. Стал искать упоминания.

AIO в Linux появился сильно раньше 2019 - файл fs/aio.c существует в
git-репозитории ядра с момента его создания (2005-04-16, 2.6.12-rc2).

В linux-2.6.0/fs/aio.c есть комментарий:

Copyright 2000, 2001, 2002 Red Hat, Inc.  All Rights Reserved.

mtime у этого файла: 2003-12-18 02:58:48

Впервые он появился в экспериментальном 2.5.32:

-rw-r--r-- torvalds/eng   28606 2002-08-27 23:26 linux-2.5.32/fs/aio.c

Самое старое упоминание AIO во FreeBSD я могу найти в версии 3.0:

AIO_READ(2)            BSD    System Calls Manual
…
HISTORY
     The aio_read() system call    first appeared in FreeBSD 3.0.

Revision 26685
Added Mon Jun 16 12:10:21 1997 UTC (24 years, 7 months ago) by dyson
Original Path: head/sys/sys/aio.h

комментарий 1:

From: Sergey Matveev
Date: 2022-01-18 08:02:32Z


>AIO в Linux появился сильно раньше 2019 - файл fs/aio.c

Я так понимаю, что, с точки зрения авторов, это очень геморройное
решение, требующее DIRECT флага и всего из этого вытекающего.
Поэтому только io_uring считается началом чего-то юзабельного.

>Самое старое упоминание AIO во FreeBSD я могу найти в версии 3.0:
>The aio_read() system call    first appeared in FreeBSD 3.0.

Хм, кстати да. Ведь сам смотрел в man-page, в котором написано:

    The aio facility appeared as a kernel option in FreeBSD 3.0.  The aio
    kernel module appeared in FreeBSD 5.0.

и я только на aio kernel module обратил внимание.

У меня то вообще мнения нет на счёт AIO -- не приходилось использовать.

Сгенерирован: SGBlog 0.34.0