Kemarin saya memposting benchmark enam distribusi Linux di HP Dev One, laptop Linux baru yang diluncurkan oleh HP bekerja sama dengan System76 yang menggunakan distribusi Pop!_OS mereka. Dari tolok ukur tersebut, salah satu temuan aneh adalah bahwa kinerja kompresi Zstd di Arch Linux sangat buruk, tetapi beberapa pengembang yang tertarik terjun dan menemukan penyebab yang agak aneh mengapa kinerja Zstd mereka sangat buruk dibandingkan dengan distribusi Linux lain pada versi yang sama. Performa biner zstd yang dikirimkan oleh Arch Linux ditemukan sangat lambat dibandingkan dengan distribusi Linux lainnya pada laptop yang sama ini... Jauh lebih lambat daripada distribusi Linux lainnya yang diuji pada perangkat keras yang sama persis dan semua distribusi menggunakan sistem mereka- menyediakan biner Zstd untuk tolok ukur tersebut:
Tapi hasilnya dapat direproduksi, diulang beberapa kali, dan saya berdiri di belakang tolok ukur. Meskipun sangat tipis untuk memenuhi kebutuhan (pertimbangkan untuk mematikan pemblokir iklan Anda! Atau bergabung dengan Phoronix Premium untuk menonton bebas iklan dan manfaat lainnya), saya tidak punya waktu/sumber daya untuk menggali lebih jauh tentang hal itu. masalah khusus dengan secara rutin (hampir setiap hari) menemukan kekhasan kinerja yang serupa dengan perangkat keras/lunak yang berbeda di Linux. Untungnya beberapa pengembang Arch Linux yang bersemangat melihat ke dalamnya dari artikel ini dan menemukan alasan yang agak mengejutkan mengapa kinerja Zstd mereka sangat lambat: Sistem build. Hah? Tidak, bukan perbedaan flag compiler untuk menyetel optimasi atau level... Arch Linux menggunakan sistem build CMake Zstd untuk membangun paketnya sementara Ubuntu dan distribusi Linux lainnya sering menggunakan build Makefile biasa yang dikirimkan oleh Zstd. Zstd juga mengirimkan dukungan sistem build Meson. Pengembang Arch Linux menemukan menggunakan CMake untuk membangun Zstd menyebabkan kecepatan kompresi Zstd lebih lambat tetapi jika menggunakan make konvensional atau Meson membangun kinerja seperti yang diharapkan. Jadi bagaimana sistem build mengganggu kinerja biner yang dihasilkan jika itu bukan perbedaan tingkat pengoptimalan? Di sinilah ia menjadi lebih aneh dan contoh lain dari dampak yang mendukung beberapa sistem build dapat memiliki pada proyek... Sistem build CMake untuk Zstd akhirnya menambahkan flag "-std=c99" di mana seperti sistem build lainnya melakukannya tidak ditentukan menggunakan standar C99. Agak mengejutkan, memiliki standar C99 yang ditentukan adalah apa yang pada akhirnya ditemukan menyebabkan perbedaan kinerja yang besar ini ... Tetapi mengapa menentukan C99 menyebabkan perbedaan kinerja yang lebih besar, kemungkinan karena beberapa masalah/perbedaan threading tetapi pada saat ini sepertinya tidak ada penjelasan yang solid. Bagaimanapun ini adalah bug Zstd dengan menghasilkan perilaku mendasar yang berbeda berdasarkan sistem build yang didukung yang digunakan. Pengembang memang menguji build berbasis CMake tanpa menentukan "-std=c99" dan itu menghasilkan kinerja yang serupa dengan binari Zstd yang diproduksi oleh sistem build alternatif. Atau, pengaturan C11 juga tidak apa-apa. Pekerjaan hebat yang dilakukan oleh para pengembang Arch Linux (Arvid Norlander, Antonio Rojas, dll) dituangkan melalui laporan bug Arch Linux mereka dan juga telah melaporkannya ke Zstd sebagai masalah upstream. Semoga Zstd pada gilirannya akan mengubah versi bahasa C standar mereka untuk CMake agar sesuai dengan perilaku sistem build mereka yang lain atau lebih menyatukan penanganan berbagai hal. Arch Linux setidaknya memiliki solusi sederhana sehingga harus dapat segera mengirimkan perbaikan kepada penggunanya untuk memberikan kinerja yang jauh lebih baik.
Itulah berita seputar Kasus Aneh Zstds Performa Sangat Lambat Di Arch Linux, semoga bermanfaat. Disadur dari Phoronix.com.