[О блоге] [наверх] [пред] [2022-01-17 21:06:01+03:00] [22505814479aaf4c678693c54e36f8cc148b4b08]
Темы: [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
    
    *** kmeaw [2022-01-18 05:26]:
    >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 -- не приходилось использовать.