CentOS Cpu效能最佳化方法詳解

來源:互聯網
上載者:User

調節CPU對應某個程式的使用:

一、使用taskset充分利用多核cpu,讓cpu的使用率均衡到每個cpu上

#taskset
-p,    設定一個已存在的pid,而不是重新開啟一個新任務
-c,    指定一個處理,可以指定多個,以逗號分隔,也可指定範圍,如:2,4,5,6-8。

1,切換某個進程到指定的cpu上
taskset -cp 3 13290

2,讓某程式運行在指定的cpu上
taskset -c 1,2,4-7 tar jcf test.tar.gz test

需要注意的是,taskset -cp 3 13290在設定一個已經存在的pid時,子進程並不會繼承父進程的,
因此像tar zcf xxx.tar.gz xxx這樣的命令,最好在啟動時指定cpu,如果在已經啟動的情況下,則需要指定tar調用的gzip進程。

二,使用nice和renice設定程式執行的優先順序
格式:nice [-n 數值] 命令

nice 指令可以改變程式執行的優先權等級。指令讓使用者在執行程式時,指定一個優先等級,稱之為 nice 值。
這個數值從最高優先順序的-20到最低優先順序的19。負數值只有 root 才有權力使。
一般使用者,也可使用 nice 指令?磣鮒蔥諧絛虻撓畔燃豆芾恚??荒芙?ice值越調越高。

可以通過二種方式來給某個程式設定nice值:
1,開始執行程式時給定一個nice值,用nice命令
2,調整某個運行中程式的PID的nice值,用renice命令
通常通過調高nice值來備份,為的是不佔用非常多的系統資源。

例:
nice -n 10 tar zcf test.tar.gz test

由nice啟動的程式,其子進程會繼承父進程的nice值。

查看nice值
# nice -n -6 vim test.txt &
# ps -l
F S   UID   PID  PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0 19427  2637  0  75   0 – 16551 wait   pts/6    00:00:00 bash
4 T     0 21654 19427  0  71  -6 – 23464 finish pts/6    00:00:00 vim

renice調整運行中程式的nice值
格式:renice [nice值] PID

三,使用ulimit限制cpu佔用時間
注意,ulimit 限制的是當前shell進程以及其派生的子進程。因此可以在指令碼中調用ulimit來限制cpu使用時間。
例如,限制tar的cpu佔用時間,單位秒。
# cat limit_cpu.sh
ulimit -SHt 100
tar test.tar.gz test

如果tar佔用時間超過了100秒,tar將會退出,這可能會導致打包不完全,因此不推薦使用ulimit對cpu佔用時間進行限制。
另外,通過修改系統的/etc/security/limits設定檔,可以針對使用者進行限制。

四,使用程式內建的對cpu使用調整的功能
某些程式內建了對cpu使用調整的功能,比如nginx伺服器,通過其設定檔,可以為背景工作處理序指定cpu,如下:
worker_processes  3;
worker_cpu_affinity 0001 0010 0100 1000;

這裡0001 0010 0100 1000是掩碼,分別代表第1、2、3、4顆cpu核心,這就使得cpu的使用比較平均到每個核心上。

尋找某個CPU運行在某個進程:
ps命令的輸出格式可以通過-o參數定製,可以使用如下命令顯示進程所對應的執行CPU:

# ps -eo pid,args,psr
參數的含義:
pid – 進程ID
args – 該進程執行時傳入的命令列參數
psr – 分配給進程的CPU

有關ps命令的其它資訊請查閱ps手冊:

# man ps

樣本:
[root@www ~]# ps -eo pid,args,psr
………….
20965 /usr/local/php-fcgi/bin/php   1
21683 /bin/sh /usr/local/ddos/ddo   1
21684 sleep 600                     3
21746 /sbin/udevd -d                2
21832 /bin/sh /usr/local/ddos/ddo   1
21833 sleep 600                     0
21865 sshd: root@pts/0              3
21873 -bash                         1
21927 ps -eo pid,args,psr           1
23520 [pdflush]                     3
23744 nginx: master process /usr/   1
23745 nginx: worker process         3
23749 nginx: worker process         3
23753 nginx: worker process         3
23755 nginx: worker process         3

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.