現在科技在不斷發展現在多CPU的趨勢越來越大了. 有時候為了更好地操作機器, 需要將某個進程綁定到具體的CPU上去。大家可能不能理解將進程綁定到CPU中運行是什麼意思,簡單的說就是進程/線程與cpu綁定,最直觀的好處就是提高了cpu cache的命中率,從而減少內存訪問損耗,提高程序的速度,將普通進程變成核心進程。下面小編就像大家介紹在Ubuntu中怎麼綁定CPU進程,Ubuntu(烏班圖)是一個以桌面應用為主的Linux操作系統,和小編一起學習吧。
在Ubuntu中綁定CPU進程的方法
taskset -cp 《CPU ID | CPU IDs》 《Process ID》
下面用一個簡單的例子來說明怎樣做到。
1. CPU利用率達100%的樣例代碼:
class Test {
public static void main(String args[]) {
int i = 0;
while (true) {
i++;
}
}
}
2. 編譯並運行上面的樣例代碼
# javac Test.java
# java Test &
[1] 26531
3. 使用htop命令查看CPU的利用率
如果未安裝htop工具,執行下面的命令:
# apt-get install htop
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
htop
0 upgraded, 1 newly installed, 0 to remove and 41 not upgraded.
Need to get 66.9 kB of archives.
After this operation, 183 kB of additional disk space will be used.
Get:1 http://mirrors.163.com/ubuntu/ precise/universe htop amd64 1.0.1-1 [66.9 kB]
Fetched 66.9 kB in 0s (163 kB/s)
Selecting previously unselected package htop.
(Reading database ... 57100 files and directories currently installed.)
Unpacking htop (from .../htop_1.0.1-1_amd64.deb)...
Processing triggers for man-db ...
Setting up htop (1.0.1-1)...
安裝完成後,執行命令:
# htop
上面的視圖可以看到,CPU2的利用率達到100%,且這個進程有可能被分配到其它CPU核上運行,這個分配是不定的。
4. 進程綁定CPU核
運行以下命令,把此Java進程(進程ID號為26502)永久的分配給5號CPU核(CPU核號從0開始計算,因此序號4指的是5號CPU核)
# taskset -cp 5 26531
pid 26531‘s current affinity list: 0-7
pid 26531’s new affinity list: 5
從上面的視圖中可以看到6號CPU核的利用率為100%。
隨著CPU核的多個化,這樣的綁定方法也是一樣的,無論綁定哪個CPU核都能啟動同樣的效果,相信大家都追求運行的高速度,趕快來學習綁定CPU進程的方法吧!