歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

動態切換Linux使用的CPU數量

動態切換Linux使用的CPU數量   摘要: 由於要測試一些代碼,其運行結果會受到多核並行的影響,所以希望能夠調整使用的 CPU 數量。網絡上之前看到的方法是在內核的啟動參數上添加一個 maxcpus,但是如果這樣的話每切換一次都要重啟一次,是在太麻煩了。想 ... 由於要測試一些代碼,其運行結果會受到多核並行的影響,所以希望能夠調整使用的 CPU 數量。 網絡上之前看到的方法是在內核的啟動參數上添加一個 maxcpus,但是如果這樣的話每切換一次 都要重啟一次,是在太麻煩了。想想 Linux 應該是很強大的,所以可以動態修改 CPU 數量才對。 無意中看到 Linux 代碼的 Documentation 文件夾下有個文件叫做 cpu-hotplug.txt,於是就看了一下, 發現可以在 /sys/devices/system/cpu 看到代表各 CPU 的文件夾按照 cpuX 的命名方式,如 cpu0、 cpu1、cpu2 等。這些文件夾裡面有一個 online 文件,如果其值為0則禁用該 CPU,如果為1則啟用 該 CPU。注意,這裡需要 root 權限哦。 因為我只要在單核和多核之間切換,所以我寫了兩個腳本放在 /usr/local/sbin 裡面: singlecore #!/bin/bash cpus_dir="/sys/devices/system/cpu" for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+') do cpu_online="$cpus_dir/$cpu/online" if [[ -e "$cpu_online" && $(cat $cpu_online) = 1 ]] then echo 0 > "$cpu_online" fi done multicore #!/bin/bash cpus_dir="/sys/devices/system/cpu"  for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+') do cpu_online="$cpus_dir/$cpu/online" if [[ -e "$cpu_online" && $(cat $cpu_online) = 0 ]] then echo 1 > "$cpu_online" fi done 之後需要切換的時候,只要運行 sudo singlecore 或者 sudo multicore 就可以了~ 順便說一句,我當時在想,如果我禁用了所有的 CPU 會怎麼樣呢?結果發現 cpu0 是 沒有 online 文件的,也就是 Linux 至少保證一個 CPU 處於可用狀態。
 
Copyright © Linux教程網 All Rights Reserved