Saya ingin menonaktifkan 3 core CPU dan menjalankan prosesor saya pada satu inti. Saya memiliki perintah yang digunakan: maxcpus=1
. Tetapi setelah ini saya menjalankan perintah ini ls /sys/devices/system/cpu
. Itu masih menunjukkan cpu0,cpu1,cpu2,cpu3
.
Saya juga mencoba: echo 0 > /sys/devices/system/cpu3/online
tapi saya mendapatkan error berikut: no such file or directory
.
maxcpus=1
komandan ? Apakah Anda memasukkan string itugrub.cfg
sebagai opsi boot? (Harap perbarui pertanyaan Anda alih-alih menjawab dalam komentar).maxcpus=1
) bervariasi menurut distro. Juga/sys
jalan yang Anda miliki hanyalah salah, jalan yang benar/sys/devices/system/cpu/cpu3/online
.Jawaban:
Seperti yang ditunjukkan Patrick dalam komentar , Anda
/sys
salah jalan .Jika Anda ingin mematikan semua CPU kecuali
cpu0
:Mengetik
maxcpus=1
di prompt shell tidak berpengaruh. Lebih tepatnya, ia menetapkan variabelmaxcpus
ke nilai1
dalam shell itu, yang tidak memiliki efek lain. Anda dapat mengatur jumlah CPU pada saat boot dengan mengirimkanmaxcpus
sebagai parameter kernel . Untuk itu, Anda harus mengubah konfigurasi bootloader Anda (misalnya untuk mengubah baris perintah kernel di U-Boot).sumber
/sys/devices/system/cpu/online
dan./offline
file untuk mengontrol semua core.core
dan mematikan?Anda tidak perlu mematikan atau menonaktifkan inti.
Anda akan menggunakan cpusets dan tasket
http://man7.org/linux/man-pages/man7/cpuset.7.html
Singkatnya, jika Anda memiliki 1 cpu yang memiliki 6 core, Anda akan mengkonfigurasi cpuset dan meluncurkan proses Anda dalam cpuset yang dikonfigurasi hanya pada satu inti, katakanlah inti # 3 misalnya. Jika itu adalah proses paralel itu semua akan terbatas pada satu inti sehingga jika Anda meluncurkan 4 proses dalam cpuset yang hanya memiliki satu inti yang ditentukan, maka masing-masing dari 4 proses akan mendapatkan pemanfaatan cpu 25% pada inti # 3.
Membangun dari itu, apa yang biasanya terjadi adalah cpuset dikonfigurasi sedemikian rupa
juga: https://linux.die.net/man/1/taskset
sumber