Kernel Linux 6.9 mengalami pengerjaan ulang besar-besaran pada kode pengatur waktu CPU yang telah dibuat selama bertahun-tahun dan memiliki beberapa keunggulan dalam hal kekuatan dan kinerja.
Thomas Gleixner merangkum pembaruan model pengatur waktu hierarki besar ini dalam permintaan pengatur waktu/penarikan inti untuk jendela penggabungan Linux 6.9. Dia menjelaskan upaya penting ini dengan cukup baik:
Model tarikan pengatur waktu hierarki
Ketika roda pengatur waktu dipersenjatai, pengatur waktu ditempatkan ke dalam roda pengatur waktu CPU yang kemungkinan besar akan sibuk pada saat habis masa berlakunya. Hal ini dilakukan untuk menghindari bangun pada CPU yang berpotensi menganggur.
Ini salah dalam beberapa aspek:
1) Heuristik untuk memilih CPU target menurut definisi salah karena peluang untuk mendapatkan prediksi yang benar mendekati nol.
2) Karena #1 ada kemungkinan pengatur waktu diakumulasikan pada satu CPU target
3) Perhitungan yang diperlukan dalam jalur enqueue hanyalah overhead untuk nilai yang meragukan terutama dengan pertimbangan bahwa sebagian besar pengatur waktu roda pengatur waktu dibatalkan atau dipersenjatai kembali sebelum habis masa berlakunya.
Model penarik pengatur waktu menghindari hal di atas dengan menghapus komputasi target pada enqueue dan mengantri pengatur waktu selalu pada CPU yang dipersenjatai.
Hal ini dicapai dengan memiliki roda terpisah untuk pengatur waktu yang disematkan CPU dan pengatur waktu global yang tidak peduli di mana masa berlakunya berakhir.
Selama CPU sibuk, ia akan menangani pengatur waktu yang disematkan dan pengatur waktu global yang diantrikan pada roda pengatur waktu lokal CPU.
Saat CPU menganggur, ia mengevaluasi roda pengatur waktunya sendiri:
– Jika pengatur waktu kadaluarsa pertama adalah pengatur waktu yang disematkan, maka pengatur waktu global dapat diabaikan karena CPU akan aktif sebelum pengatur waktu tersebut habis masa berlakunya.
– Jika pengatur waktu kedaluwarsa pertama adalah pengatur waktu global, maka waktu kedaluwarsa tersebut disebarkan ke dalam hierarki tarikan pengatur waktu dan CPU memastikan untuk bangun untuk pengatur waktu pertama yang disematkan.
Hierarki tarikan pengatur waktu mengatur CPU dalam kelompok yang terdiri dari delapan kelompok pada tingkat terendah dan pada tingkat berikutnya kelompok yang terdiri dari delapan kelompok hingga pada titik di mana tidak diperlukan agregasi kelompok lebih lanjut, yaitu jumlah level adalah log8 (NR_CPUS). Angka ajaib delapan telah ditentukan melalui eksperimen, namun dapat disesuaikan jika diperlukan.
Di setiap grup, satu CPU yang sibuk bertindak sebagai migrasi. Ini hanya satu CPU untuk menghindari pertikaian kunci pada roda pengatur waktu jarak jauh.
CPU migrasi memeriksa roda pengatur waktunya sendiri yang menangani apakah ada CPU lain dalam grup yang menganggur dan pengatur waktu global akan kedaluwarsa. Jika ada pengatur waktu global yang akan habis masa berlakunya, migrasi akan mengunci roda pengatur waktu CPU jarak jauh dan menangani masa habis masa berlakunya.
Bergantung pada tingkat grup dalam hierarki, penanganan ini memerlukan penurunan hierarki ke tingkat CPU.
Perhatian khusus diberikan ketika CPU terakhir menganggur. Pada titik ini CPU adalah migrasi seluruh sistem di puncak hierarki dan oleh karena itu tidak dapat didelegasikan ke hierarki. Ia perlu mempersenjatai perangkat pengatur waktunya sendiri untuk kedaluwarsa baik pada pengatur waktu kedaluwarsa pertama dalam hierarki atau pada pengatur waktu lokal CPU pertama, yang mana yang kedaluwarsa terlebih dahulu.
Ini sepenuhnya menghilangkan overhead dari jalur enqueue, misalnya. untuk membuat jaringan hotpath yang sebenarnya dan menukarnya dengan jalur idle yang sedikit lebih kompleks. Gleixner selanjutnya menjelaskan manfaat dari upaya besar ini:
Ini telah dikembangkan selama beberapa tahun dan seri terakhir telah diuji secara ekstensif oleh berbagai tim dari vendor silikon dan dijalankan melalui CI yang ekstensif.
Ada sedikit peningkatan kinerja yang diamati pada beban kerja yang berpusat pada jaringan dan tim Intel mengonfirmasi bahwa hal ini memungkinkan mereka untuk mematikan mati sepenuhnya pada soket multi-mati untuk pertama kalinya dalam skenario yang sebagian besar tidak digunakan.
Hanya ada satu regresi ~1,5% yang luar biasa pada pengujian netperf kelebihan beban tertentu yang saat ini sedang diselidiki, namun sisanya adalah kinerja positif atau netral dan positif pada sisi manajemen daya. Tarikan pengatur waktu ini digabungkan bersama semua TIP lainnya. materi git untuk jendela penggabungan Linux 6.9. Akan menyenangkan untuk segera menjalankan beberapa benchmark pada Linux 6.9 untuk melihat bagaimana kinerja dan kekuatannya secara keseluruhan mengingat banyaknya perubahan fitur pada siklus ini.
Itulah berita seputar Linux 6.9 Memiliki Pengerjaan Ulang Besar Pada Pengatur Waktu CPU – Beberapa Manfaat Daya/Kinerja, semoga bermanfaat. Disadur dari Phoronix.com.