Linux разработчикът Усама Ариф откри и отстрани неефективност в кода за декомпресия със Zstd на файловата система Btrfs, което доведе до подобрения в производителността. Поправката, която е предложена за включване в цикъла на ядрото на Linux 7.4, намалява излишното записване на данни по време на декомпресия.
В момента пътят за декомпресия на Btrfs Zstd записва всеки доставен байт два пъти. Според Ариф, „zstd_decompress_bio() предоставя на zstd буфер с размер на сектора, а btrfs_decompress_buf2page() след това копира частта, която се припокрива с прочетения био, в целевите folios. Всеки доставен байт се записва два пъти.“ Предложеното решение заобикаля това дублиране, като избира изходния буфер за всеки поточност и използва `zstd_map_dest()` за директно картографиране към кеша на страниците.
Тестването показва 7,8% намаление на времето за последователно четене със секторни размери 4K, 3,6% с 16K сектори и 6,8% с 64K сектори. Случайните 4K четения също показаха подобрение от около 3% при използване на Btrfs със Zstd компресия. Пачът в момента е в клона „for-next“ и се очаква да бъде включен в изданието на ядрото на Linux 7.4, насрочено за октомври. Разработчиците също се надяват да включат други подобрения на Zstd в ядрото в същото издание.
Прочетете оригиналното отразяване
💬 Коментари
📜 Правила за коментари