Ketika beberapa thread atau proses secara bersamaan membaca file /proc/cpuinfo, sistem mengirimkan permintaan inter-processor interrupt (IPI) ke semua inti CPU untuk mendapatkan data terkait frekuensi terbaru. Hal ini menghasilkan sejumlah besar permintaan IPI yang menunggu, membentuk badai IPI, yang mengurangi kinerja dan kecepatan respons sistem. Untuk menyelesaikan masalah ini, Alibaba Cloud mengoptimalkan implementasi terkait di Alibaba Cloud Linux 3 dengan versi kernel 5.10.134-17.al8 dan yang lebih baru pada arsitektur x86.
Solusi optimasi
Untuk menyelesaikan masalah badai IPI yang terjadi ketika semua thread atau proses secara bersamaan mendapatkan data frekuensi CPU, thread dan proses perlu mendapatkan salinan data cadangan terbaru. Kemudian, pertukaran atomik (
atomic_xchg()) dilakukan untuk memeriksa dan memperbarui nilai bidang dalam data cadangan. Masa berlaku data cadangan adalah sekitar 20 milidetik. Selama proses mendapatkan data frekuensi CPU, panggilan baru fungsismp_call_function_single()dapat dilakukan untuk meminta data yang diperbarui hanya setelah masa berlaku berakhir. Ini mencegah thread atau proses mengirimkan sejumlah besar permintaan IPI berulang kali ke CPU yang sama dalam periode waktu tertentu.Ketika sistem membaca file
/proc/cpuinfountuk mendapatkan data frekuensi CPU, sistem mengirimkan permintaan IPI ke semua CPU, yang secara paksa membangunkan CPU dalam statusIdle. Selama proses bangun CPU, frekuensi CPU mungkin berubah, yang ditentukan oleh algoritma penjadwalan dinamis. Untuk meningkatkan efisiensi sistem, optimasi dilakukan. Ketika CPU berada dalam statusIdle, fitur NOHZ diaktifkan di Alibaba Cloud Linux 3 untuk memungkinkan CPU yang idle mengembalikan nilai frekuensi dasar tanpa perlu menunggu permintaan IPI yang dikirim oleh sistem. Ini mencegah penyimpangan frekuensi CPU karena perubahan status CPU.
Manfaat dan kerugian
Manfaat
Pengurangan konsumsi sumber daya: Penggunaan tidak tepat dari permintaan IPI dicegah, dan permintaan IPI yang membangunkan CPU idle dikurangi, sehingga secara efektif mengurangi waktu pemrosesan.
Optimasi kinerja keseluruhan: Dalam lingkungan sistem multi-core, dampak pada aktivitas manajemen CPU lainnya seperti penjadwalan tugas dikurangi, yang membantu menjaga kinerja sistem tetap efisien dan stabil.
Kerugian
Meskipun solusi optimasi dapat mengurangi konsumsi sumber daya dan meningkatkan kinerja keseluruhan, solusi ini menyebabkan frekuensi CPU dalam status
Idleyang diperoleh sistem dengan membaca file/proc/cpuinfomenjadi lebih rendah daripada frekuensi aktual CPU dalam statusIdle, yang menyebabkan masalah "penurunan frekuensi" palsu. Data frekuensi CPU yang akurat dapat diperoleh dengan menggunakan alatturbostatatau alat lain untuk membaca MSR.