額 剛剛編輯完,結(jié)果沒保存,然后·····只能重新總結(jié)一份。
平武網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,平武網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為平武上千多家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的平武做網(wǎng)站的公司定做!
我這個是在啟動虛擬機之后,在虛擬機中跑DPDK,測試結(jié)果很不理想,然后我的領(lǐng)導(dǎo)說可以做CPU的隔離核綁定,然后做了之后發(fā)現(xiàn)確實效果有所提升。所以寫一下小結(jié)。僅供大家參考。
1、首先創(chuàng)建隔離核,在系統(tǒng)啟動的時候在INTEL_IOMMU=OFF那一行最后添加上isolcpus=2,3,4,5,6 隔離出5個核
2、系統(tǒng)啟動,檢查host上是否隔離成功,命令如下:
# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($5==1) print $0}’
# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($5==2) print $0}’
# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($5==3) print $0}’
# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($5==4) print $0}’通過查看線程確定是否隔離,如果隔離成功,則只有幾個線程。
3、啟動虛擬機之后,查看qemu的線程
# ps –eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep –v grep
4、綁定qemu的進程,綁定核
# taskset –p 0x4 28423
# taskset –p 0x8 28424
5、查看QEMU綁定是否生效
# ps –eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep –v grep
6、查看cpu2/3/4/5上運行的線程
# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($5==2) print $0}’
沒什么技術(shù)含量,僅供大家參考。
綁定cpu方式:
c語言:
sched_setaffinity(0, sizeof(mask), mask)
shell命令:
在grup啟動時傳給內(nèi)核參數(shù): isolcpus=2-15, 這里表示隔離第3到16個CPU, Linux程序只跑在第一和第二個CPU上, 空閑的CPU我們可以指定跑進程了.
這是內(nèi)核文檔里對內(nèi)核參數(shù)的解釋:
isolcpus= [KNL,SMP] Isolate CPUs from the general scheduler.
Format:
cpu number,...,cpu number
or
cpu number-cpu number
(must be a positive range in ascending order)
or a mixture
cpu number,...,cpu number-cpu number
This option can be used to specify one or more CPUs
to isolate from the general SMP balancing and scheduling
algorithms. You can move a process onto or off an
"isolated" CPU via the CPU affinity syscalls or cpuset.
cpu number begins at 0 and the maximum value is
"number of CPUs in system - 1".
This option is the preferred way to isolate CPUs. The
alternative -- manually setting the CPU mask of all
tasks in the system -- can cause problems and
suboptimal load balancer performance.
linux nice 命令詳解
功能說明:設(shè)置優(yōu)先權(quán)。
語法:nice [-n 優(yōu)先等級][--help][--version][執(zhí)行指令]
補充說明:nice指令可以改變程序執(zhí)行的優(yōu)先權(quán)等級。
參數(shù):-n優(yōu)先等級或-優(yōu)先等級或--adjustment=優(yōu)先等級 設(shè)置欲執(zhí)行的指令的優(yōu)先權(quán)等級。等級的范圍從-20-19,其中-20最高,19最低,只有系統(tǒng)管理者可以設(shè)置負數(shù)的等級。
--help 在線幫助。
--version 顯示版本信息。
linux renice 命令詳解
功能說明:調(diào)整優(yōu)先權(quán)。
語法:renice [優(yōu)先等級][-g 程序群組名稱...][-p 程序識別碼...][-u 用戶名稱...]
補充說明:renice指令可重新調(diào)整程序執(zhí)行的優(yōu)先權(quán)等級。預(yù)設(shè)是以程序識別碼指定程序調(diào)整其優(yōu)先權(quán),您亦可以指定程序群組或用戶名稱調(diào)整優(yōu)先權(quán)等級,并修改所有隸屬于該程序群組或用戶的程序的優(yōu)先權(quán)。等級范圍從-20--19,只有系統(tǒng)管理者可以改變其他用戶程序的優(yōu)先權(quán),也僅有系統(tǒng)管理者可以設(shè)置負數(shù)等級。
參數(shù):
-g 程序群組名稱 使用程序群組名稱,修改所有隸屬于該程序群組的程序的優(yōu)先權(quán)。
-p 程序識別碼 改變該程序的優(yōu)先權(quán)等級,此參數(shù)為預(yù)設(shè)值。
-u 用戶名稱 指定用戶名稱,修改所有隸屬于該用戶的程序的優(yōu)先權(quán)。
taskset設(shè)定cpu親和力,cpu親和力是指
CPU調(diào)度程序?qū)傩躁P(guān)聯(lián)性是“鎖定”一個進程,使他只能在一個或幾個cpu線程上運行。對于一個給定的系統(tǒng)上設(shè)置的cpu。給定CPU親和力和進程不會運行在任何其他CPU。注意,Linux調(diào)度器還支持自然CPU關(guān)聯(lián):(不能讓這個cpu只為這一個進程服務(wù))
這里要注意的是我們可以把某個程序限定在某一些CPU上運行,但這并不意味著該程序可以獨占這些CPU,其實其他程序還是可以利用這些CPU運行。如果要精確控制CPU,taskset就略嫌不足,cpuset才是可以
-a, --all-tasks 操作所有的任務(wù)線程-p, --pid 操作已存在的pid-c, --cpu-list 通過列表顯示方式設(shè)置CPU
(1)指定1和2號cpu運行25718線程的程序
taskset -cp 1,2 25718
(2),讓某程序運行在指定的cpu上 taskset -c 1,2,4-7 tar jcf test.tar.gz test
(3)指定在1號CPU上后臺執(zhí)行指定的perl程序
taskset –c 1 nohup perl pi.pl
你那個是系統(tǒng)下把CPU的核說釘在五河以下是比較好的,因為吧和內(nèi)心壓力非常大,發(fā)熱量非常大。