kvm cpu的親和性繫結配置

2021-09-20 22:28:29 字數 3248 閱讀 4426

1.cpu的繫結配置

程序的處理器親和性(process affinity):指將程序繫結到特定的乙個或多個cpu上去執行,而不允許將程序排程到其他cpu上。

物理cpu:表示真實的cpu個數

邏輯cpu:表示所有擁有乙個完整真實cpu功能的單元,一般等於所有真實cpu的核心或超執行緒數(ht技術)之和

例子:乙個主機板有cpu1,cpu2,cpu1雙核不開超執行緒,cpu2四核其中某個核心開兩個超執行緒,那麼它有2個真實cpu,和2+(2*1+3)=7個邏輯cpu

實現:

(1)在grub.conf上使用」isolcpus=[num1],[num2]... 「引數,進行cpu的隔離,使得系統啟動後普通程序預設不會排程到被隔離的cpu上執行。(注:num表示邏輯cpu號碼)

例子:

initrd /initramfs-3.2.84.img

(2)檢視是否隔離成功:

[root@localhost ~]# ps -elo psr,args|awk ''

3 [kworker/u:0]

3 [migration/3]

3 [kworker/3:0]

3 [ksoftirqd/3]

3 [watchdog/3]

3 [kworker/3:1]

3 auditd

3 rpcbind

3 [flush-253:0]

3 /usr/sbin/modem-manager

3 hald-runner

3 /usr/libexec/postfix/master

[root@localhost ~]# ps -elo psr,args|awk ''

4 [migration/4]

4 [kworker/4:0]

4 [ksoftirqd/4]

4 [watchdog/4]

4 [kworker/4:1]

[root@localhost ~]# ps -elo psr,args|awk ''

5 [migration/5]

5 [kworker/5:0]

5 [ksoftirqd/5]

5 [watchdog/5]

5 [kworker/5:1]

[root@localhost ~]# ps -elo psr,args|awk ''

2 [kthreadd]

2 [migration/2]

2 [kworker/2:0]

2 [ksoftirqd/2]

2 [watchdog/2]

2 [khubd]

2 [kworker/2:1]

2 [kworker/2:2]

2 /sbin/rsyslogd -i /var/run/syslogd.pid -c 5

2 pcscd

2 /sbin/mingetty /dev/tty6

ps(process status):

這裡我們看到程序編號2、3都有很多程序,而4、5都只有5個帶號的系統程序,所以隔離成功。

(3)啟動客戶機

(4)檢視vcpu執行緒

[root@localhost kvm_vhost]# ps -elo pid,lwp,psr,args|grep qemu|grep  -v grep

1612  1612   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1614   1 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1615   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1617  11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

(5)繫結代表整個客戶機的程序,使其執行在cpu4上

[root@localhost kvm_vhost]# taskset -p 0x10 1612

pid 1612's current affinity mask: ffcf

pid 1612's new affinity mask: 10

[root@localhost kvm_vhost]# ps -elo pid,lwp,psr,args|grep qemu|grep  -v grep

1612  1612   4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1614   3 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1615   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1617  11 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

(6)繫結第乙個vcpu執行緒,使其執行在cpu5上

[root@localhost kvm_vhost]# taskset -p 0x20 1614

pid 1614's current affinity mask: ffcf

pid 1614's new affinity mask: 10

[root@localhost kvm_vhost]# ps -elo pid,lwp,psr,args|grep qemu|grep  -v grep

1612  1612   4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1614   5 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

1612  1615   6 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

同理繫結另外乙個vcpu,這裡taskset的語法是taskset -p [mask] pid 

(7)繫結後檢視在cpu4上執行的執行緒

[root@localhost kvm_vhost]# ps -elo psr,args|awk ''

4 [migration/4]

4 [kworker/4:0]

4 [ksoftirqd/4]

4 [watchdog/4]

4 [kworker/4:1]

4 qemu-system-x86_64 -m 2048 -smp 2 rhel6u5.img

kvm cpu的親和性繫結配置

1.cpu的繫結配置 程序的處理器親和性 process affinity 指將程序繫結到特定的乙個或多個cpu上去執行,而不允許將程序排程到其他cpu上。物理cpu 表示真實的cpu個數 邏輯cpu 表示所有擁有乙個完整真實cpu功能的單元,一般等於所有真實cpu的核心或超執行緒數 ht技術 之和...

親和性 反親和性 汙點 容忍

在預設的k8s排程中,一般經過預選和優選即可完成排程,但是生產的實際使用中,考慮到部分業務的特殊性,一般會手動進行一些 指定 k8s 把這些 指定 分為nodeaffinity 節點親和性 podaffinity pod 親和性 以及 podantiaffinity pod 反親和性 這在排程過程中...

pod 的親和性,反親和性 實驗

pod 的親和性,反親和性 實驗 目錄 設定node01和node02節點,擁有標籤 test a root master demo kubectl label nodes node test a overwrite node node01 labeled node node02 labeled 檢...