Saya perlu menjalankan tes kinerja untuk program bersamaan saya dan persyaratan saya adalah bahwa itu harus dijalankan hanya pada satu inti CPU. (Saya tidak ingin utas kooperatif - Saya ingin selalu memiliki pengalihan konteks).
Jadi saya punya dua pertanyaan:
Solusi terbaik - Cara masuk dan cadangan hanya satu inti CPU saja untuk program saya (untuk memaksa OS untuk tidak menggunakan inti CPU ini). Saya kira itu tidak mungkin tapi mungkin saya salah ...
Bagaimana cara mengatur linux (Fedora 24) agar hanya menggunakan satu inti CPU?
linux
cpu
parallelism
peter55555
sumber
sumber
Jawaban:
Di linux, panggilan sistem untuk mengatur afinitas CPU untuk suatu proses adalah
sched_setaffinity
. Lalu adataskset
alat untuk melakukannya di baris perintah.Agar program tunggal itu berjalan hanya pada satu CPU, saya pikir Anda ingin sesuatu seperti
(setel nomor CPU apa pun sebagai argumen ke
-c
sakelar.)Itu harus cukup dekat dengan sistem prosesor tunggal, selama proses Anda yang lain tidak berjalan terlalu banyak dibandingkan dengan yang ingin Anda ukur, atau mereka dijadwalkan untuk CPU lain. Jika Anda ingin mendedikasikan satu CPU untuk proses tunggal itu saja , dan mencegah proses lain dari berjalan pada CPU itu, Anda perlu mengatur afinitas mereka juga.
Itu, saya tidak tahu bagaimana melakukannya dengan benar. Anda harus mengatur afinitas prosesor
init
sejak awal dalam proses boot untuk memastikan itu diwarisi untuk semua proses pada sistem. Sebagai solusinya, Anda bisa menggunakantaskset -c -p 0 $PID
untuk semua proses lain untuk memaksa mereka berjalan pada CPU # 0 saja.systemd juga memiliki
CPUAffinity=
untuk mengontrol afinitas dalam file Unit dan ada beberapa dari pertanyaan tentang pengaturan afinitas bawaan di sini di unix.SE, tapi saya tidak menemukan apapun dengan solusi yang baik.Meskipun ketika @Kamil Maciorowski berkomentar dan menjawab pertanyaan lain di superuser.com , pengaturan
isolcpus=1
pada baris perintah kernel harus "mengisolasi CPU dari algoritma penjadwalan umum", yang merupakan sesuatu yang mungkin Anda inginkan.sumber