Как сообщалось на прошлой неделе, обновленная реализация Zstd для ядра Linux вновь предпринимается разработчиком Zstd Ником Терреллом. Сегодня он выслал последние патчи для ядра Zstd, которые представляют собой более новую версию кода по сравнению с текущей основной версией и обеспечат гораздо лучшую производительность и многочисленные исправления.
Код Zstd, который в настоящее время входит в ядро Linux, устарел, и его обновление заняло удручающее количество времени. К счастью, новый код представляет новый API-обертку в стиле ядра вокруг Zstd, что должно позволить обновлять код более плавно и легко. Фактически, код ядра Zstd работает над тем, чтобы автоматически генерироваться из исходных текстов Zstd.
Код Zstd, который в настоящее время входит в состав ядра, существует четыре года (Zstd 1.3.1), и с тех пор в него было внесено множество исправлений и улучшений производительности. С этим обновлением Zstd сжатие Btrfs Zstd может быть на несколько процентов быстрее, распаковка Btrfs Zstd может быть примерно на ~15% быстрее, распаковка SquashFS Zstd также примерно на 15% быстрее, распаковка F2FS Zstd во время чтения может быть примерно на 20% быстрее, распаковка zRAM может быть примерно на 30% быстрее, распаковка образов Zstd ядра может быть примерно на 35% быстрее, а распаковка и сборка initramfs Zstd была примерно на 5% быстрее.
Уже сейчас эти патчи обеспечивают значительное ускорение работы Zstd ядра Linux, особенно на стороне распаковки, в то время как Zstd 1.5.1 будет выпущен в ближайшее время с еще большей оптимизацией производительности. Кроме того, для логистики эта серия патчей доводит код до версии Zstd 1.4.10, в то время как последующие патчи, как только они будут добавлены, доведут его до состояния Zstd 1.5.1.
Более подробная информация о предлагаемой обновленной реализации Zstd для ядра Linux представлена в этой серии патчей. Мы надеемся, что теперь этот код будет перенесен в Linux-Next, чтобы его можно было более широко протестировать в течение следующих нескольких недель, а затем, в идеале, увидеть этот обновленный код слитым в следующем месяце в окне слияния Linux 5.16.