本文描述了如何查看计算节点各个核具体用途,如何正确的进行核隔离和配置调整。
如果要进行超融合的核隔离配置,也可以参考此文档。
1:了解计算节点硬件的cpu特性
查看cpu的各个核在numa上的分布
sudo lscpu |grep NUMA
从回显信息可以看出,
numa0,cpu核范围是0-13,28-41
numa1,cpu核范围是14-27,42-55
查看各个numa核的亲核特性
sudo virsh capabilities |grep siblings
从回显信息可以看出,
0,28 1,29 2,30 …… 13,41
14,42 15,43 16,44 …… 27,55
根据上面的信息可以画一个CPU的numa分布图
numa0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
|
numa1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
2:根据硬件的cpu特性配置cpu核隔离
预留给系统的核,通常根据不同的项目,可能给操作系统预留不同的核,一般预留首核
比如0,28
查看系统核隔离配置
sudo cat /etc/grubtool.cfg |grep isolcpus
isolcpus 配置的cpu是dvs或者虚拟机使用的cpu
isolcpus 没有配置的cpu是给os使用的cpu
从上面的配置可以看出:0 28隔离出来给操作系统使用。
numa0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
|
numa1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
查找dvs使用的核,不同的版本可能需要不同的方法
sudo cat /opt/network/ovdk/etc/ovdk.conf | grep vcpu |grep -v '#'
sudo dvs show-cfg | grep vcpu |grep -v '#'
如果是3.17.15系列版本,直接使用
sudo dvs show-cfg
则根据回显信息,dvs使用的核为 15,16,17,43,44,45
numa0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
|
numa1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
此时空白部分的cpu就是全部留给虚拟机使用的cpu核,这些核要全部配置到
/etc/nova/nova.conf vcpu_pin_set 里面
sudo cat /etc/nova/nova.conf |grep vcpu_pin_set
3:核使用小结
配置文件或者命令 |
配置项 |
配置项里面的核作用说明 |
/etc/grubtool.cfg |
isolcpus |
核超分场景: |
/opt/network/ovdk/etc/ovdk.conf |
physical_port_vcpu |
dvs配置的核 |
dvs show-cfg |
pmd-cpu-mask |
dvs配置的核 |
/etc/nova/nova.conf |
vcpu_pin_set |
虚拟机使用的核 |
4:ceph超融合场景
对于超融合的计算节点,目前安装完成后,需要手工进行核隔离配置调整
主要做如下调整,先看cpu分布图
(以上面的cpu分布图为例,不同的硬件需要重复上面的方法绘制cpu分布图)
numa0 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
|
numa1 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
分配给ceph的核实际就是隔离给操作系统用的,ceph和操作系统共用,具体核分配策略由各个不同的项目决定,这里只对配置进行说明如何调整。
通常分配给ceph的核和dvs核分布在不同的numa上,尽量均衡分布。
有时项目因为规划的虚拟机规格问题,要尽可能利用资源,也会采取其他策略,
如上图,如果再隔离出 1,2,3,14,29,30,31,42 和ceph共用
则
/etc/grubtool.cfg 删除上述8个核的配置
/etc/nova/nova.conf 删除上述8个核的配置
实际的配置为
isolcpus dvs+虚拟机使用的核
isolcpus="4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23,24,25,26,27,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53,54,55"
vcpu_pin_set 虚拟机使用的核
vcpu_pin_set="4,5,6,7,8,9,10,11,12,13,18,19,20,21,22,23,24,25,26,27,32,33,34,35,36,37,38,39,40,41,46,47,48,49,50,51,52,53,54,55"
修正完成配置后,重启计算节点生效。
注意:以上配置修改,必须在计算节点没有虚拟机的情况下进行,如果还有虚拟机存在,需要先迁移虚拟机或者删除虚拟机,保证节点无任何虚拟机占用核资源。