“Beberapa orang bersantai dengan minuman yang enak di tepi kolam renang, saya bersantai dengan bermain-main dengan [Assembly code] sebaris,” sebagai kutipan bagus hari ini seperti yang dijelaskan Linus Torvalds setelah dia memperbaiki tambalan pengoptimalan kinerja yang diusulkan untuk jendela penggabungan Linux 6.5 yang sedang berlangsung. Seperti yang ditulis sekitar sebulan yang lalu di Phoronix, ada tambalan untuk memberikan peningkatan throughput yang besar dan menurunkan latensi untuk panggilan csum_partial, fungsi yang biasa digunakan dalam kernel Linux untuk tujuan checksumming. Fungsi csum_partial digunakan dari sistem file ke jaringan untuk checksum. Dengan tambalan yang diusulkan, mungkin ada peningkatan latensi 8~9% dan peningkatan throughput sekitar 30% dalam kasus tertentu.
Patch pengoptimalan kinerja untuk csum_partial itu dikirim hari ini melalui permintaan penarikan x86/misc. Saat Linus Torvalds meninjau kode yang dia komentari di milis: “Sejujurnya, melihat tambalan itu, reaksi saya adalah” mengapa itu dibuka dalam potongan 64 byte, jika 40 byte adalah nilai ajaibnya “? Terutama bila ada maka “lakukan carry op setiap 32 byte untuk membuat potongan 32-byte independen dan tingkatkan ILP”. Jadi, bahkan kasus 64-byte tidak * sebenarnya * melakukan unrolling 64-byte, itu benar-benar melakukan dua 32- byte membuka gulungan secara paralel. Jadi Anda memiliki tiga nilai “ajaib”, dan satu-satunya yang benar-benar penting kemungkinan adalah nilai 40-byte. Ya, ya, 64 byte adalah ukuran cacheline biasa, dan “tradisional” untuk membuka gulungan. Tapi tidak ada yang ajaib di sini. Sesuatu seperti tambalan yang terpasang (SEPENUHNYA TIDAK TERUJI!)? Sekali lagi: ini *belum* diuji. Saya melihat sekilas rakitan yang dibuat, dan kelihatannya seperti yang saya harapkan, tetapi mungkin benar-benar sampah . Saya menambahkan beberapa hal “kemungkinan ()” hanya karena itu membuat asm yang dihasilkan terlihat lebih alami (yaitu mengikuti urutan kode sumber di sana), itu adalah anotasi yang dipertanyakan. Akhirnya: apakah saya sudah menyebutkan bahwa ini sama sekali belum teruji?” Setelah mengirim pesan itu, dia menyadari kesalahan sederhana dalam kode Majelis yang ditulis tangannya dan menambahkan: “… Saya menyadarinya dengan melihat tambalan sekali lagi. Tidak ada *pengujian* aktual yang terjadi. Itu mungkin masih menjadi sampah buggy bahkan dengan “+r” itu. Ini hanya sedikit * kurang * sampah buggy. Sekarang saya akan kembali ke gua saya dan terus menarik barang, saya hanya harus melakukan sesuatu yang lain untuk sementara waktu. Beberapa orang bersantai dengan minuman yang enak di tepi kolam renang, saya bersantai dengan bermain-main dengan inline asm.” misc pull request membalas pesan Linus Torvalds dengan: “Dan ada jenis ketiga yang bersantai di tepi kolam renang dengan minuman enak, *sambil* bermain-main dengan inline asm. ;-P”
Itulah berita seputar Linus Torvalds Melakukan Patch Performa: “Saya Bersantai Dengan Bermain Dengan Inline Assembly”, semoga bermanfaat. Disadur dari Phoronix.com.