全部产品
Search
文档中心

Alibaba Cloud Linux:Optimalkan operasi membaca file /proc/cpuinfo untuk mendapatkan frekuensi CPU

更新时间:Jun 28, 2025

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 fungsi smp_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/cpuinfo untuk mendapatkan data frekuensi CPU, sistem mengirimkan permintaan IPI ke semua CPU, yang secara paksa membangunkan CPU dalam status Idle. Selama proses bangun CPU, frekuensi CPU mungkin berubah, yang ditentukan oleh algoritma penjadwalan dinamis. Untuk meningkatkan efisiensi sistem, optimasi dilakukan. Ketika CPU berada dalam status Idle, 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 Idle yang diperoleh sistem dengan membaca file /proc/cpuinfo menjadi lebih rendah daripada frekuensi aktual CPU dalam status Idle, yang menyebabkan masalah "penurunan frekuensi" palsu. Data frekuensi CPU yang akurat dapat diperoleh dengan menggunakan alat turbostat atau alat lain untuk membaca MSR.