動態切換Linux使用的CPU數量

來源:互聯網
上載者:User

動態切換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/bashcpus_dir="/sys/devices/system/cpu"for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')docpu_online="$cpus_dir/$cpu/online"if [[ -e "$cpu_online" && $(cat $cpu_online) = 1 ]]thenecho 0 > "$cpu_online"fidonemulticore#!/bin/bashcpus_dir="/sys/devices/system/cpu" for cpu in $(ls "$cpus_dir" | grep 'cpu[0-9]\+')docpu_online="$cpus_dir/$cpu/online"if [[ -e "$cpu_online" && $(cat $cpu_online) = 0 ]]thenecho 1 > "$cpu_online"fidone之後需要切換的時候,只要運行 sudo singlecore 或者 sudo multicore 就可以了~順便說一句,我當時在想,如果我禁用了所有的 CPU 會怎麼樣呢?結果發現 cpu0 是沒有 online 檔案的,也就是 Linux 至少保證一個 CPU 處於可用狀態。
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.