menonaktifkan core cpu pada prosesor quad core di linux

14

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/onlinetapi saya mendapatkan error berikut: no such file or directory.

pengguna3818847
sumber
Tidak jelas di mana Anda menempatkan maxcpus=1 komandan ? Apakah Anda memasukkan string itu grub.cfgsebagai opsi boot? (Harap perbarui pertanyaan Anda alih-alih menjawab dalam komentar).
Anthon
Saya menggunakan papan sabreauto IMx6 freescale di OS linux. Saya menjalankan perintah pada terminal emulator "gtkterm"
user3818847
Dengan perintah ini echo 0> / sys / devices / system / cpu3 / online saya dapat melihat shutdown cpu3. Sekarang yang saya ingin tahu adalah, apakah saya harus me-reboot sistem untuk perubahan yang terjadi atau saya dapat melanjutkan tanpa me
user3818847
AFAIK Anda harus menentukan maxcpus = 1 sebagai parameter untuk kernel (yaitu ketika Anda berada di grub). Edit '/ etc / defaults / grub' untuk menambahkannya ke parameter kernel, jalankan 'update-grub' dan reboot. Itu akan membuat hal-hal tetap, yaitu dengan hanya satu CPU pada startup Linux.
Anthon
2
@ user3818847 distro apa yang Anda gunakan? Memodifikasi parameter boot (untuk lulus maxcpus=1) bervariasi menurut distro. Juga /sysjalan yang Anda miliki hanyalah salah, jalan yang benar /sys/devices/system/cpu/cpu3/online.
Patrick

Jawaban:

28

Seperti yang ditunjukkan Patrick dalam komentar , Anda /syssalah jalan .

echo 0 > /sys/devices/system/cpu/cpu3/online

Jika Anda ingin mematikan semua CPU kecuali cpu0:

for x in /sys/devices/system/cpu/cpu[1-9]*/online; do
  echo 0 >"$x"
done

Mengetik maxcpus=1di prompt shell tidak berpengaruh. Lebih tepatnya, ia menetapkan variabel maxcpuske nilai 1dalam shell itu, yang tidak memiliki efek lain. Anda dapat mengatur jumlah CPU pada saat boot dengan mengirimkan maxcpussebagai parameter kernel . Untuk itu, Anda harus mengubah konfigurasi bootloader Anda (misalnya untuk mengubah baris perintah kernel di U-Boot).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Terima kasih atas sarannya. Ini bekerja dengan perintah yang disarankan oleh Anda
user3818847
Setidaknya ini agak khusus untuk kernel. Saya menjalankan kernel 3.6.6, dan tidak ada file seperti itu; Anda malah menggunakan tunggal /sys/devices/system/cpu/onlinedan ./offlinefile untuk mengontrol semua core.
Daniel Griscom
@Gilles - Apakah ada cara untuk mengetahui berapa banyak waktu yang diperlukan untuk menghidupkan coredan mematikan?
Chetan Arvind Patil
@ChetanArvindPatil, Waktu. Saya pikir waktu akan didominasi oleh akses RAM jika kode yang terlibat belum dalam cache L2 dan pada saat mematikan inti sebaliknya, tetapi sangat tergantung pada CPU dan OS.
Gilles 'SO- stop being evil'
1
@Xofo Ketika kernel mematikan inti, inti itu menjalankan kode kernel, jadi tidak ada utas dijadwalkan pada inti tertentu pada saat itu. Setelah inti mati, utas tidak lagi dijadwalkan pada inti itu. Saya tidak tahu apa yang terjadi jika afinitas utas membatasi ke satu set inti yang semuanya mati.
Gilles 'SANGAT berhenti menjadi jahat'
1

Anda tidak perlu mematikan atau menonaktifkan inti.

Anda akan menggunakan cpusets dan tasket

http://man7.org/linux/man-pages/man7/cpuset.7.html

CPU mendefinisikan daftar CPU dan node memori ...

Filesystem cpuset adalah antarmuka pseudo-filesystem ke mekanisme kernel cpuset, yang digunakan untuk mengontrol penempatan prosesor dan proses penempatan memori. Biasanya dipasang di / dev / cpuset.

Pada sistem dengan kernel yang dikompilasi dengan dukungan bawaan untuk cpuset, semua proses melekat pada cpuset, dan cpuset selalu ada. Jika suatu sistem mendukung cpuset, maka cpuset entrivv akan ada dalam file / proc / filesystems. Dengan memasang sistem file cpuset (lihat bagian CONTOH di bawah), administrator dapat mengkonfigurasi cpuset pada suatu sistem untuk mengontrol prosesor dan penempatan memori dari proses pada sistem itu. Secara default, jika konfigurasi cpuset pada suatu sistem tidak dimodifikasi atau jika filesystem cpuset bahkan tidak dipasang, maka mekanisme cpuset, meskipun ada, tidak berpengaruh pada perilaku sistem.

CPU suatu sistem mencakup semua unit pemrosesan logis tempat proses dapat dijalankan, termasuk, jika ada, beberapa inti prosesor dalam satu paket dan Hyper-Threads dalam inti prosesor. Node memori mencakup semua bank memori utama yang berbeda; sistem kecil dan SMP biasanya hanya memiliki satu simpul memori yang berisi semua memori utama sistem, sedangkan sistem NUMA (akses memori tidak seragam) memiliki banyak simpul memori.

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

  • dalam 200+ sistem inti misalnya, cpusetA adalah core 0..60 di mana pun mereka berada, cpusetB adalah core 61..70; cpusetC adalah core 71..80; namun demikian admin / arsitek memilih untuk mengonfigurasi.
  • cpusetA dialokasikan untuk pengguna tertentu dan / atau program perangkat lunak tertentu; cpusetB dialokasikan untuk berbagai pengguna / program; dan seterusnya.
  • seorang pengguna meluncurkan pekerjaan (proses) yang akan meminta N core ... dalam cpuset yang diberikan, dan sekarang banyak proses (paralel) tersebut terbatas pada cpuset yang diberikan. Dan untuk N paralel yang terbatas pada cpuset yang diberikan, masing-masing proses tersebut akan / harus menggunakan afinitas prosesor atau afinitas cpu sehingga proses paralel tersebut tidak bertele-tele pada core yang berbeda dalam cpuset.

juga: https://linux.die.net/man/1/taskset

ron
sumber