Tweak Penjadwal Tugas Kernel untuk meningkatkan kinerja di Android [Bagian 2]

Selamat datang kembali ke satu lagi panduan tweake penjadwal tugas kernel untuk Android. Dalam artikel sebelumnya, kami membahas beberapa opsi konfigurasi penjadwal tugas mendasar, yang dapat disetel secara manual untuk meningkatkan kinerja pada semua jenis perangkat Android. Dalam situasi yang belum Anda periksa artikel itu, kami sangat menyarankan melakukannya sebelum melanjutkan, karena itu mencakup beberapa info bermanfaat untuk lebih baik memahami bagaimana penjadwal tugas benar -benar bekerja serta dengan tepat bagaimana memodifikasi penjadwal tugas kernel.

Tweak Penjadwal Tugas Kernel

Terlepas dari parameter mendasar yang dibahas dalam artikel sebelumnya, Penjadwal Tugas Linux mengimplementasikan beberapa fitur khusus yang mencoba meningkatkan distribusi daya pemrosesan yang adil. Fitur-fitur ini tidak membuat hasil yang sama persis di semua sistem serta kasus penggunaan, sehingga dapat diaktifkan atau dinonaktifkan saat runtime. Mereka ditawarkan dengan debugf kernel. Tidak semua dukungan berkemas kernel untuk mengutak -atik fitur penjadwal Debugfs. Anda dapat menemukan apakah kernel Anda mendukung mengubah fitur -fitur ini dengan memasukkan perintah yang mematuhi dengan aplikasi terminal (sebagai superuser):

CAT/SYS/Kernel/Debug/SCEPTER_FATURES
Jika Anda mendapatkan output seperti berikut ini, maka kernel Anda mendukung mengubah fitur debug saat runtime:

Jika Anda mendapatkan output kesalahan “tidak ada data atau direktori”, Anda dapat mencoba menginstal kernel debugfs, dalam situasi ditawarkan namun tidak dipasang saat boot:

mount -t debugfs tidak ada/sys/kernel/debug
Jika perintah ini tidak membuat kesalahan, Anda dapat mencoba meneruskan perintah pertama lagi.

Mengalir fitur Debug Penjadwal

Untuk mengizinkan fitur Debug Penjadwal, Anda hanya persyaratan untuk menyusun namanya di dalam file SCLET_FATURES. Sebagai contoh:

Echo Gentle_fair_sleepers>/sys/kernel/debug/sched_features
Untuk menonaktifkan fitur, Anda juga harus menyusun namanya di dalam file yang sama persis, namun dengan “NO_” di depan. Sebagai contoh:

Echo no_gentle_fair_sleepers>/sys/kernel/debug/sched_features

Jangan lewatkan
Ide Administrasi Ram Android serta trik

Fitur Debug Penjadwal paling khas

Tidak dijamin bahwa kernel tertentu akan mendukung semua fitur penjadwal tugas yang dibahas di bawah ini. Dukungan untuk fitur bervariasi antara versi kernel serta antara implementasi gadget. Semua fitur yang didukung adalah yang terkandung dalam output perintah ‘kucing/sys/kernel/debug/sched_features’. Fitur yang dimulai dengan “NO_” adalah yang didukung namun saat ini dinonaktifkan.

Gentle_fair_sleepers

Fungsi ini mencoba meminimalkan waktu lari tidur (proses yang cenderung tidur untuk waktu yang lama). Akibatnya, lebih banyak runtime didistribusikan ke tugas aktif. Beberapa orang melaporkan bahwa menonaktifkan fungsi ini dapat meningkatkan respons pada perangkat low-end.

Affine_wakeups

Letakkan tugas yang bangun pada CPU yang sama persis dengan tugas yang membangunkannya. Ini mengasumsikan bahwa tugas baru akan bekerja pada data yang sama persis dalam memori seperti yang sebelumnya. Mengaturnya pada CPU yang sama persis akan meningkatkan lokalitas cache (baca di bawah ini untuk info lebih lanjut tentang lokalitas cache).

Rt_runtime_share

Kami mensyaratkan beberapa tugas yang lebih dalam mengatur pemahaman untuk memahami fitur ini: di Linux, ada berbagai tugas mengatur prioritas. Kekhawatiran yang mengatur tugas mendefinisikan seberapa penting tugas itu serta persis berapa banyak sumber daya yang akan didapat dari penjadwal. Banyak tugas yang dijalankan menggunakan prioritas SCLET_OTHER (SCHED_NORMAL ON Kernel yang lebih baru). Prioritas lainnya adalah SCHART_BATCH, SCHART_RR, SCORD_FIFO serta SCHART_DEADLINE. Tiga terakhir dari prioritas ini adalah prioritas real-time, dibuat untuk tugas-tugas yang persyaratan untuk berjalan secepat mungkin serta segera setelah dibuat.

Penjadwal Tugas Menetapkan setiap CPU Dua Parameter Khusus: RT_RUNTIME serta RT_PERIOD. RT_PERIOD adalah periode pengaturan yang setara dengan bandwidth CPU 100%. RT_RUNTIME adalah waktu di mana setiap CPU hanya menjalankan tugas real-time. Semua tugas lain berjalan untuk waktu [rt_period – rt_runtime]. Biasanya, penjadwal tugas kernel menyediakan 95% waktu CPU untuk tugas real-time serta 5% untuk yang lainnya.

RT_RUNTIME_SHARE memungkinkan CPU untuk menjalankan tugas waktu-nyata sebanyak 100% dari waktu, dengan meminjam RT_RunTime dari CPU lainnya. CPU yang meminjamkan RT_RunTime kemudian dapat menjalankan tugas non-realtime untuk waktu lebih banyak. Beberapa desainer kernel khusus menonaktifkan fungsi ini secara default, karena dapat membuat CPU tidak dapat melayani tugas-tugas non-realtime yang diatur secara ketat serta mengurangi kinerja.

Next_buddy

Umumnya di Linux, ketika suatu tugas terbangun, ia mendahului (= mengambil lokasi) tugas yang berjalan sebelumnya di CPU (preemption bangun). Next_buddy menangani situasi ketika tugas yang terbangun tidak menyebabkan preemption. Ketika Next_Buddy diaktifkan, tugas yang baru saja bangun akan berjalan pada acara pengaturan berikutnya. Fungsi ini juga meningkatkan lokalitas cache.

Harus baca
Hackbench – Temukan kernel berkinerja terbaik untuk Android

Last_buddy

Wnull

Leave a Reply