欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

linux下的綁核命令 linux 綁核

如何將一個(gè)進(jìn)程(線程)綁定到一個(gè)固定的CPU

第一種:linux的shell命令行方式,命令名字為taskset。第二種就是代碼實(shí)現(xiàn)級(jí)別的了,pthread_setaffinity_np和sched_setaffinity函數(shù)接口。

為濮陽縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計(jì)制作服務(wù),及濮陽縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、濮陽縣網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

第一種方式我已經(jīng)驗(yàn)證過了,確實(shí)可行。同時(shí)驗(yàn)證了我心中的疑問:如果將某個(gè)線程綁定到某個(gè)物理核上之后,在此線程運(yùn)行結(jié)束前,會(huì)不會(huì)有別的線程被調(diào)度到此物理核上執(zhí)行? 寫了一個(gè)死循環(huán)驗(yàn)證了下,發(fā)現(xiàn)綁定之后是不會(huì)調(diào)度別的線程在此核上運(yùn)行的?。ㄈ庋塾^察的,時(shí)不時(shí)觀察下,沒發(fā)現(xiàn)別的線程在此核上執(zhí)行;對(duì)比了下沒有綁定的情況,會(huì)發(fā)現(xiàn)過段時(shí)間此線程就會(huì)被調(diào)度到別的核心上執(zhí)行)

此種方式有個(gè)問題,就是只有線程運(yùn)行起來后才會(huì)被綁定到某個(gè)核上,不夠及時(shí)。

具體的方式為:

1.首先根據(jù)系統(tǒng)的差別運(yùn)行如下安裝命令:

sudo apt-get install util-linux (Debian,Ubuntu or Linux Mint)

sudo yum install util-linux (Fedora,CentOS or RHEL)

2.相關(guān)命令的使用:

2.1 使用命令 taskset -p PID 來獲得此Process的 CPU affinity。

eg: taskset -p 2915 ------ pid 2915's current affinity mask:ff; ff=="1111 1111",沒一個(gè)1代表一個(gè)核,共8個(gè)核,能用的核數(shù)也為8個(gè)核。

2.2 使用命令 taskset -cp PID 可獲得數(shù)字形式的CPU affinity。

eg: taskset -cp 2915 ------ pid 2915's current affinity list: 0--7。

接下來為將進(jìn)程pin到某個(gè)核上的命令;

2.3 taskset -p COREMASK PID

eg:taskset -p 0x11 9030 ------pid 9030's current affinity mask: ff , pid 9030's new affinity mask: 11 。意思就是將此進(jìn)程綁定到了CPU core 0 and 4。

2.4 taskset -cp CORE-LIST PID

eg:taskset -cp 0,4 9030 ------the same as below.

With "-c" option, you can specify a list of numeric CPU core IDs separated by commas, or even include ranges (e.g., 0,2,5,6-10).

2.5 taskset COREMASK EXECUTABLE

eg: taskset 0x1 xxxx -----"xxxx" represented the name of one program.

另外:參考文章最后的位置說到,綁定到此物理核之后,別的進(jìn)程(線程)還可以調(diào)度到此核上執(zhí)行,但是沒說綁定的這個(gè)線程沒執(zhí)行完之前是否會(huì)被別的線程擠掉。根據(jù)我的觀察是不會(huì)被擠掉,這我在文章的開頭也有提到。

將進(jìn)程綁定到指定的CPU上

背景:為什么要進(jìn)程綁定到指定的CPU上?

1) 減少CPU切換開銷

CPU固定綁定到主機(jī)的指定CPU上,在整個(gè)運(yùn)行期間,不會(huì)發(fā)生CPU浮動(dòng), 減少CPU切換開銷 ,提高虛擬機(jī)的計(jì)算性能。

2) 提供CPU cache的命中率

在多核運(yùn)行的機(jī)器上,每個(gè)CPU自身會(huì)有緩存,緩存著進(jìn)程使用的信息,而進(jìn)程可能會(huì)被OS調(diào)度到其他CPU上,如此, CPU cache命中率 就低了,當(dāng)綁定CPU后,程序就會(huì)一直在指定的cpu跑,不會(huì)由操作系統(tǒng)調(diào)度到其他CPU上,性能有一定的提高。

taskset:設(shè)置或檢索進(jìn)程的CPU相關(guān)性

1) 如果沒有taskset命令, 安裝 包含taskset命令的util-linux工具集:yum install util-linux

2) 查看進(jìn)程的CPU親和力 ,-p選項(xiàng)是一個(gè)十六進(jìn)制數(shù),-cp選項(xiàng)是一個(gè)cpu列表,表示相應(yīng)的cpu核。3的二進(jìn)制形式是0011,相應(yīng)的第0位和第1位都是1,表示14795進(jìn)程只能運(yùn)行在cpu的第0個(gè)核和第1個(gè)核。

$ taskset -p 14795

pid 14795's current affinity mask: 3

$ taskset -cp 14795

pid 14795's current affinity list: 0,1

3) 綁定CPU : taskset -cp CPU IDs? Process ID

$ taskset -cp? 0? 14795

pid 14795's current affinity list: 0,1

pid 14795's new affinity list: 0

OpenStack K版本引入了許多CPU高級(jí)特性功能,不僅支持自定義CPU拓?fù)涔δ?,支持設(shè)置虛擬機(jī)CPU的socket、core、threads等,還支持CPU pinning功能,即CPU核綁定,甚至能夠配置虛擬機(jī)獨(dú)占物理CPU,虛擬機(jī)的vCPU能夠固定綁定到物理宿主機(jī)的指定pCPU上,在整個(gè)運(yùn)行期間,不會(huì)發(fā)生CPU浮動(dòng),減少CPU切換開銷,提高虛擬機(jī)的計(jì)算性能。

$ lscpu

Architecture:? ? ? ? ? x86_64

CPU op-mode(s):? ? ? ? 32-bit, 64-bit

Byte Order:? ? ? ? ? ? Little Endian

CPU(s):? ? ? ? ? ? ? ? 40

On-line CPU(s) list:? 0-39

Thread(s) per core:? ? 2

Core(s) per socket:? ? 10

Socket(s):? ? ? ? ? ? 2

NUMA node(s):? ? ? ? ? 2

Vendor ID:? ? ? ? ? ? GenuineIntel

CPU family:? ? ? ? ? ? 6

Model:? ? ? ? ? ? ? ? 63

Model name:? ? ? ? ? ? Intel(R) Xeon(R) CPU E5-2650 v3 @ 2.30GHz

Stepping:? ? ? ? ? ? ? 2

CPU MHz:? ? ? ? ? ? ? 1201.480

BogoMIPS:? ? ? ? ? ? ? 4603.87

Virtualization:? ? ? ? VT-x

L1d cache:? ? ? ? ? ? 32K

L1i cache:? ? ? ? ? ? 32K

L2 cache:? ? ? ? ? ? ? 256K

L3 cache:? ? ? ? ? ? ? 25600K

NUMA node0 CPU(s):? ? 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38

NUMA node1 CPU(s):? ? 1,3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39

以上可知,該宿主機(jī)有兩個(gè)CPU(socket),每個(gè)CPU 10核(core),每個(gè)核可以開啟兩個(gè) 超線程(thread) ,即有40個(gè)邏輯CPU。宿主機(jī)CPU包含兩個(gè)NUMA node,其中node0包括0,2,4,...,38,node1包括1,3,5,...,39。

步驟1) 創(chuàng)建支持綁核的主機(jī)集合

不是所有的計(jì)算節(jié)點(diǎn)都支持CPU綁核特性,可以通過主機(jī)集合(host aggregate)把支持綁核CPU的主機(jī)放到一個(gè)集合中。

步驟2)? 創(chuàng)建支持綁核的flavor

目前Nova并不支持啟動(dòng)時(shí)直接指定主機(jī)集合的metadata(hint只支持指定server group),需要通過flavor的擴(kuò)展屬性和主機(jī)集合的metadata匹配,將不匹配的主機(jī)濾掉,部署到匹配的主機(jī)上。flavor支持配置虛擬機(jī)的CPU拓?fù)?、QoS、CPU pinning策略、NUMA拓?fù)湟约癙CI passthrough等擴(kuò)展屬性。

步驟3) 通過步驟2) 的Flavor創(chuàng)建虛擬機(jī),創(chuàng)建完成到虛機(jī)所在物理機(jī)上查看虛機(jī)綁核情況:

查詢方法1) virsh dumpxml 虛機(jī)id

vcpu placement='static'8/vcpu

cputune

vcpupin vcpu='0' cpuset='25'/

vcpupin vcpu='1' cpuset='5'/

vcpupin vcpu='2' cpuset='8'/

vcpupin vcpu='3' cpuset='28'/

vcpupin vcpu='4' cpuset='9'/

vcpupin vcpu='5' cpuset='29'/

vcpupin vcpu='6' cpuset='24'/

vcpupin vcpu='7' cpuset='4'/

emulatorpin cpuset='4-5,8-9,24-25,28-29'/

/cputune

查詢方法2) 在虛擬機(jī)所運(yùn)行的物理宿主機(jī)上執(zhí)行virsh list找到相應(yīng)虛機(jī)的實(shí)例id,然后virsh vcpupin 實(shí)例id可以查到該虛擬機(jī)所占用的CPU具體核數(shù)。

# virsh vcpupin vm46? 綁核的虛機(jī)

VCPU: CPU Affinity

----------------------------------

0: 25

1: 5

2: 8

3: 28

4: 9

5: 29

6: 24

7: 4

# virsh vcpupin vm6 未綁核的虛機(jī)

VCPU: CPU Affinity

----------------------------------

0: 0-39?

1: 0-39

2: 0-39?

3: 0-39

4: 0-39?

5: 0-39

6: 0-39?

7: 0-39

virsh vcpupin 子命令是KVM自帶的指令工具,它可以把vm實(shí)例的每個(gè)vcpu與宿主機(jī)的cpu對(duì)應(yīng)綁定,這種綁定方式粒度更小。

# virsh vcpupin vm4 查看綁定情況

VCPU: CPU Affinity

----------------------------------

0: 0-23? ? ?

1: 0-23

#默認(rèn)2個(gè)vcpu沒有進(jìn)行綁定,可以在0-23號(hào)cpu上切換

# virsh vcpuinfo vm4 查看CPU使用時(shí)長

VCPU:? ? ? ? ? 0

CPU:? ? ? ? ? ? 10? #運(yùn)行在10號(hào)cpu上

State:? ? ? ? ? running

CPU time:? ? ? 14.2s

CPU Affinity:? yyyyyyyyyyyyyyyyyyyyyyyy

VCPU:? ? ? ? ? 1

CPU:? ? ? ? ? ? 8? ? ? #運(yùn)行在8號(hào)cpu上

State:? ? ? ? ? running

CPU time:? ? ? 6.8s

CPU Affinity:? yyyyyyyyyyyyyyyyyyyyyyyy

# virsh vcpupin vm4 0 3 綁定虛機(jī)的第1個(gè)CPU到宿主機(jī)的第4號(hào)cpu上

# virsh vcpupin vm4 1 5 綁定虛機(jī)的第2個(gè)CPU到宿主機(jī)的第6號(hào)cpu上

# virsh vcpuinfo vm4

VCPU:? ? ? ? ? 0

CPU:? ? ? ? ? ? 3

State:? ? ? ? ? running

CPU time:? ? ? 14.5s

CPU Affinity:? ---y--------------------

VCPU:? ? ? ? ? 1

CPU:? ? ? ? ? ? 5

State:? ? ? ? ? running

CPU time:? ? ? 7.3s

CPU Affinity:? -----y------------------

# virsh vcpupin vm4

VCPU: CPU Affinity

----------------------------------

0: 3

1: 5

三種方法的相同點(diǎn):都能實(shí)現(xiàn)綁核效果

優(yōu)劣勢對(duì)比:openstack支持虛機(jī)重生虛擬遷移到其他物理主機(jī)上,第1種方法在這些操作后綁核還是有效的,但2和3就不會(huì)綁核的。此外,第1種方法是自動(dòng)的,2和3是手動(dòng)的,可以作為臨時(shí)補(bǔ)救方法。

在虛擬機(jī)上執(zhí)行高密度計(jì)算,測試的Python腳本如下:

# test_compute.py

k = 0

for i in xrange(1, 100000):

for j in xrange(1, 100000):

? ? k = k + i * j

使用shell腳本同時(shí)跑50個(gè)進(jìn)程,保證CPU滿載運(yùn)行:

for i in `seq 1 50`; do

python test_compute.py

done

使用sar命令查看宿主機(jī)CPU使用情況:

sar -P ALL 1 100

結(jié)果如下:

Linux 3.10.0-229.20.1.el7.x86_64 (8409a4dcbe1d11af)? ? 05/10/2018? ? ? _x86_64_? ? ? ? (40 CPU)

10:20:14 PM? ? CPU? ? %user? ? %nice? %system? %iowait? ? %steal? ? %idle

10:20:15 PM? ? all? ? 20.48? ? ? 0.00? ? ? 0.15? ? ? 0.03? ? ? 0.00? ? 79.34

10:20:15 PM? ? ? 0? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 1? ? ? 0.99? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 99.01

10:20:15 PM? ? ? 2? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 3? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 4? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 5? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 6? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 7? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 8? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 9? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 10? ? ? 1.01? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 98.99

10:20:15 PM? ? ? 11? ? ? 1.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 99.00

10:20:15 PM? ? ? 12? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 13? ? ? 0.00? ? ? 0.00? ? ? 0.99? ? ? 0.00? ? ? 0.00? ? 99.01

10:20:15 PM? ? ? 14? ? ? 0.99? ? ? 0.00? ? ? 0.99? ? ? 0.00? ? ? 0.00? ? 98.02

10:20:15 PM? ? ? 15? ? ? 1.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 99.00

10:20:15 PM? ? ? 16? ? ? 0.99? ? ? 0.00? ? ? 0.99? ? ? 0.00? ? ? 0.00? ? 98.02

10:20:15 PM? ? ? 17? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 18? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 19? ? ? 3.96? ? ? 0.00? ? ? 0.99? ? ? 0.00? ? ? 0.00? ? 95.05

10:20:15 PM? ? ? 20? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 21? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 22? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 23? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 24? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 25? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 26? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 27? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 28? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 29? ? 100.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00

10:20:15 PM? ? ? 30? ? ? 2.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 98.00

10:20:15 PM? ? ? 31? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 32? ? ? 2.97? ? ? 0.00? ? ? 0.99? ? ? 0.00? ? ? 0.00? ? 96.04

10:20:15 PM? ? ? 33? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 34? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 35? ? ? 1.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 99.00

10:20:15 PM? ? ? 36? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 37? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 38? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

10:20:15 PM? ? ? 39? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? ? 0.00? ? 100.00

從CPU使用情況看宿主機(jī)的pCPU 4-5,8-9,24-25,28-29使用率100%,并且整個(gè)過程中沒有浮動(dòng),符合我們的預(yù)期結(jié)果,說明CPU核綁定成功。

linux下cpu的核綁定和隔離有什么不同

額 剛剛編輯完,結(jié)果沒保存,然后·····只能重新總結(jié)一份。

我這個(gè)是在啟動(dòng)虛擬機(jī)之后,在虛擬機(jī)中跑DPDK,測試結(jié)果很不理想,然后我的領(lǐng)導(dǎo)說可以做CPU的隔離核綁定,然后做了之后發(fā)現(xiàn)確實(shí)效果有所提升。所以寫一下小結(jié)。僅供大家參考。

1、首先創(chuàng)建隔離核,在系統(tǒng)啟動(dòng)的時(shí)候在INTEL_IOMMU=OFF那一行最后添加上isolcpus=2,3,4,5,6 隔離出5個(gè)核

2、系統(tǒng)啟動(dò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}’通過查看線程確定是否隔離,如果隔離成功,則只有幾個(gè)線程。

3、啟動(dòng)虛擬機(jī)之后,查看qemu的線程

# ps –eLo ruser,pid,ppid,lwp,psr,args | grep qemu | grep –v grep

4、綁定qemu的進(jìn)程,綁定核

# 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上運(yùn)行的線程

# ps –eLo ruser,pid,ppid,lwp,psr,args | awk ‘{if($5==2) print $0}’

沒什么技術(shù)含量,僅供大家參考。

分享題目:linux下的綁核命令 linux 綁核
分享網(wǎng)址:http://chinadenli.net/article10/dodiogo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站維護(hù)建站公司、定制開發(fā)、虛擬主機(jī)品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司