Аннотация:
Ядро Linux подвергается серьезному обновлению до широко используемого алгоритма сжатия LZ4. Разработчики недавно представили набор крупномасштабных патчей, надеясь полностью реконструировать реализацию LZ4 в ядре, что не только принесет значительные улучшения производительности, но и положит конец долгосрочному отделению и обслуживанию кода от исходного проекта.

В настоящее время код LZ4 в ядре Linux фактически представляет собой независимо поддерживаемую версию, и его базовый код остается примерно в том же состоянии, что и с 2017 по 2018 год. За прошедшие с тех пор годы проект LZ4 upstream продолжал вносить большое количество исправлений ошибок, оптимизации производительности и улучшений кода, но эти обновления не полностью вошли в ядро Linux.
Проведением обновления руководил инженер Samsung Михал Вильчински. Согласно представленному плану исправлений, Linux больше не будет поддерживать специально модифицированную версию вилки LZ4, а вместо этого будет напрямую внедрять и синхронизировать исходный код исходного кода LZ4. Другими словами, будущее ядро Linux сможет легче получать последние улучшения сжатия и распаковки LZ4.
Разработчики заявили, что эта корректировка не только уменьшит нагрузку на обслуживание, но и поможет избежать проблем совместимости и синхронизации, вызванных длительными форками. Когда в будущем проект LZ4 выпустит новые оптимизации или исправления, ядру Linux будет легче напрямую усваивать эти обновления.
Судя по результатам тестирования производительности, преимущества этого обновления вполне очевидны.
В тесте файловой системы EROFS, доступной только для чтения, с использованием сжатия LZ4, при использовании блоков данных размером 4 КБ пропускная способность чтения увеличилась примерно на 11%; при использовании блоков данных размером 64 КБ пропускная способность чтения увеличилась до 14%.
Помимо EROFS, другие внутренние тесты ядра Linux LZ4 также демонстрируют дальнейшие улучшения. Некоторые результаты тестов производительности показывают, что улучшение производительности, достигнутое новой версией LZ4, может достигать 21%.
LZ4 — один из наиболее распространенных алгоритмов высокоскоростного сжатия в экосистеме Linux. Он широко используется в файловых системах, сжатии памяти, образах запуска, контейнерных средах и различных сценариях, требующих быстрого сжатия и распаковки. По сравнению с алгоритмами, которые стремятся к более высокой степени сжатия, основными особенностями LZ4 являются чрезвычайно низкая задержка и чрезвычайно высокая пропускная способность, поэтому он имеет большое количество приложений в областях, чувствительных к производительности.
Инсайдеры отрасли считают, что, хотя это обновление не так привлекательно, как поддержка новых процессоров или добавление крупномасштабных функций, оно имеет большое значение для базовой производительности Linux. Поскольку LZ4 широко используется многими подсистемами, даже однозначная процентная оптимизация принесет значительные выгоды в долгосрочной перспективе.
В то же время ядро Linux в последнее время продолжает способствовать оптимизации технологии сжатия. Помимо LZ4, код сжатия Zstd также получает улучшения и повышение производительности. Поскольку объем данных продолжает расти, а спрос на искусственный интеллект, облачные вычисления и развертывание контейнеров растет, важность технологии высокопроизводительного сжатия становится все более заметной.
Если этот набор исправлений будет наконец принят основным ядром, в будущем Linux получит более современную, эффективную и простую в обслуживании реализацию LZ4, а версия ядра, которая несколько лет назад застряла в статус-кво, официально станет историей.
Комментарии