Hacker News Digest

04 сентября 2025 г. в 19:15 • steelcake.com • ⭐ 123 • 💬 11

OriginalHN

#zig#io-uring#nvme#file-io#linux#ubuntu#performance-optimization#direct-io

Hitting Peak File IO Performance with Zig

Как выжать максимум из файлового IO в Linux на Zig + io_uring

Тест

  • Железо: Ubuntu 24.04, 6.14, NVMe, 32 ядер, 756 ГБ ОЗУ (не влияет, direct_io).
  • Параметры: 512 КБ блок, очередь 64, 16 ГБ файл, один поток.

Результаты

fio Zig
write 4.08 ГБ/с 3.80 ГБ/с
read 7.33 ГБ/с 7.00 ГБ/с

Zig на 5–7 % медленнее fio, но близко к пределу SSD.

Ключевые фишки реализации

  1. Полл-режим (IOPOLL) + nvme.poll_queues=16 → прерывания не нужны.
  2. Два экземпляра io_uring: один с IOPOLL (только read/write), второй – для остального.
  3. Зарегистрированные буферы: память выделяется заранее, пользователь получает/возвращает готовые блоки.
  4. Выравнивание:
    • чтение – внутренняя «перехватка» невыравненных запросов;
    • запись – пользователь сам выравнивает, иначе лишние read-modify-write.
  5. Без слияния IO внутри библиотеки – проще и гибче на уровне приложения.

Код: steelcake/csio