Цифровая независимость с обновлением Immich 3.0Разблокировка скорости PCIe Gen5 в Linux

Проблема низкой эффективности работы с высокоскоростными SSD проявляется наиболее остро при произвольном чтении блоков размером 4 КБ. В таких сценариях становится очевидным парадокс: физический носитель способен обрабатывать миллионы операций в секунду, однако центральный процессор превращается в «узкое горлышко». Анализ производительности показал, что ядро Linux тратит избыточные ресурсы на служебные операции, прежде чем данные фактически начнут передаваться с диска.
Основным источником задержек оказалась подсистема iomap. Эта часть ядра отвечает за сопоставление логических адресов файлов с физическими блоками на накопителе при использовании прямого ввода-вывода (Direct I/O). В стандартном режиме работы процессор вынужден обслуживать сложный автомат состояний и постоянно выделять память под временные служебные структуры. Когда система сталкивается с огромным потоком мелких запросов, эти накладные расходы — так называемый оверхед — начинают доминировать над полезной работой, ограничивая общую пропускную способность системы.

Для решения этой проблемы была разработана концепция «упрощенного пути» (simple dio path). Суть оптимизации заключается в создании своего рода «экспресс-коридора» для запросов, которые соответствуют определенным критериям безопасности и простоты. Если операция представляет собой только чтение, объем данных не превышает размер блока файловой системы (обычно 4 КБ), файл не зашифрован и используется одна из поддерживаемых файловых систем (EXT4 или XFS), ядро полностью игнорирует тяжеловесный автомат состояний iomap.
Такой подход позволяет минимизировать вычислительные задержки, отправляя запрос на нижние уровни стека ввода-вывода по кратчайшему пути, минуя этап динамического выделения памяти. Это превращает процесс обработки из многоступенчатого бюрократического цикла в стремительный поток данных.
Эффект от внедрения этого механизма становится особенно заметным при использовании io_uring — современного интерфейса асинхронного ввода-вывода в Linux, который сам по себе радикально снижает количество системных вызовов. В связке с оптимизированным путем iomap производительность на файловых системах EXT4 и XFS демонстрирует впечатляющий скачок: показатели произвольного чтения блоков 4 КБ выросли с 1,92 млн до 2,19 млн IOPS. Прирост в 14% может показаться скромным на первый взгляд, но в масштабах высоконагруженных серверов и баз данных такая разница означает колоссальное снижение задержек и повышение общей отзывчивости системы.
На текущий момент соответствующие патчи уже прошли стадию рецензирования и интегрированы в специализированные ветки разработки VFS. Ожидается, что финальный пул-реквест будет включен в основную ветку ядра во время окна слияния Linux 7.3. Если процесс разработки пойдет по намеченному графику, пользователи получат доступ к этим оптимизациям уже к концу текущего года, что позволит полноценно реализовать возможности самого быстрого поколения потребительских и серверных накопителей.

