2.5. 간단한 Compute 노드 CPU 파티셔닝 및 메모리 검사
사전 요구 사항
배포된 컴퓨팅 노드에서 이 명령을 실행하고 cpu 마스크가 TripleO Heat Template 값에 매핑되는 방법을 확인합니다.
sudo ovs-vsctl get Open_vSwitch . other_config
{dpdk-init="true", dpdk-lcore-mask="300003", dpdk-socket-mem="3072,1024", pmd-cpu-mask="c0000c"}
$ sudo ovs-vsctl get Open_vSwitch . other_config
{dpdk-init="true", dpdk-lcore-mask="300003", dpdk-socket-mem="3072,1024", pmd-cpu-mask="c0000c"}
다음을 확인합니다.
-
DPDK-lcore-mask는 TripleO Heat템플릿의 OvsDpdkCoreList에 매핑됩니다. -
TripleO Heat
템플릿의 DPDK-socket-mem이 OvsDpdkSocketMemory에 매핑됩니다. PMD-cpu-mask는 TripleO Heat템플릿의 OvsPmdCoreList에 매핑됩니다.이러한 cpu 마스크를 TripleO Heat Templates로 다시 조정할 수 있는 10진수 값으로 변환하려면 다음을 참조하십시오. 16진수 CPU 마스크를 비트 마스크로 변환하고 마스킹된 CPU를 식별하는 방법은 무엇입니까?
2.5.1. CPU 감지 링크 복사링크가 클립보드에 복사되었습니다!
pid 1의 CPU를 감지하려면 다음 명령을 사용합니다. PMD 또는 Nova vCPU는 다음 코어에서 실행되지 않아야 합니다.
taskset -c -p 1 pid 1's current affinity list: 0,1,20,21
$ taskset -c -p 1
pid 1's current affinity list: 0,1,20,21
2.5.2. PMD 스레드 감지 링크 복사링크가 클립보드에 복사되었습니다!
PMD 스레드를 보려면 다음 명령을 사용합니다. 출력에 Tripleo 매개변수 OvsPmdCoreList 의 값이 반영되어야 합니다. Tripleo 매개변수 OvsDpdkCoreList 또는 의 값과 겹치지 않아야 합니다.
HostIsolatedCores list
2.5.3. NUMA 노드 감지 링크 복사링크가 클립보드에 복사되었습니다!
최적의 성능을 위해 인스턴스의 물리적 네트워크 어댑터, PMD 스레드 및 고정 CPU가 모두 동일한 NUMA 노드에 있는지 확인합니다. 자세한 내용은 다음을 참조하십시오. CPU 및 NUMA 노드.
다음은 NUMA 할당 검사를 위한 간단한 방법입니다.
컴퓨팅 노드에서 인스턴스의 vhu 포트를 검사합니다.
sudo virsh domiflist 1 Interface Type Source Model MAC ------------------------------------------------------- vhu24e6c032-db vhostuser - virtio fa:16:3e:e3:c4:c2
$ sudo virsh domiflist 1 Interface Type Source Model MAC ------------------------------------------------------- vhu24e6c032-db vhostuser - virtio fa:16:3e:e3:c4:c2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 해당 포트를 서비스하는 PMD 스레드를 검사하고 NUMA 노드를 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인스턴스에 대한 물리적 고정된 cpu를 찾습니다. 예를 들어 이 인스턴스의 포트는 cpu 2에 있으며 인스턴스는 cpus 34 및 6에 의해 제공됩니다.
sudo virsh dumpxml 1 | grep cpuset <vcpupin 1 vcpu='0' cpuset='34'/> <emulatorpin cpuset='6'/>$ sudo virsh dumpxml 1 | grep cpuset <vcpupin 1 vcpu='0' cpuset='34'/> <emulatorpin cpuset='6'/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 각 NUMA 노드의 코어를 검사합니다. 인스턴스를 서비스하는 CPU(34,6)는 동일한 NUMA 노드(0)에 있습니다.
lscpu | grep ^NUMA NUMA node(s): 2 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
$ lscpu | grep ^NUMA NUMA node(s): 2 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,39Copy to Clipboard Copied! Toggle word wrap Toggle overflow
또한 OVS DPDK에서 관리하지 않는 네트워크 어댑터에는 해당 어댑터에 속하는 NUMA 노드를 나타내는 항목이 있습니다.
sudo cat /sys/class/net/<device name>/device/numa_node
$ sudo cat /sys/class/net/<device name>/device/numa_node
또는 OVS DPDK에서 관리하는 경우 PCI 주소를 쿼리하여 네트워크 어댑터의 NUMA 노드를 볼 수 있습니다.
sudo lspci -v -s 05:00.1 | grep -i numa Flags: bus master, fast devsel, latency 0, IRQ 203, NUMA node 0
$ sudo lspci -v -s 05:00.1 | grep -i numa
Flags: bus master, fast devsel, latency 0, IRQ 203, NUMA node 0
이러한 관행은 PMD, 인스턴스 및 네트워크 어댑터가 모두 NUMA 0에 있음을 보여줍니다. openvswitch 로그( /var/log/openvswitch에 위치)에서 교차 NUMA 폴링을 나타내는 경우 다음과 유사한 로그 항목을 찾습니다.
dpif_netdev|WARN|There's no available (non-isolated) pmd thread on numa node 0. Queue 0 on port 'dpdk0' will be assigned to the pmd on core 7 (numa node 1). Expect reduced performance.
dpif_netdev|WARN|There's no available (non-isolated) pmd thread on numa node 0. Queue 0 on port 'dpdk0' will be assigned to the pmd on core 7 (numa node 1). Expect reduced performance.
2.5.4. 분리된 CPU 감지 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 분리된 CPU를 표시합니다. 출력은 TripleO 매개 변수 IsolCpusList 의 값과 동일해야 합니다.
cat /etc/tuned/cpu-partitioning-variables.conf | grep -v ^# isolated_cores=2-19,22-39
$ cat /etc/tuned/cpu-partitioning-variables.conf | grep -v ^#
isolated_cores=2-19,22-39
2.5.5. Nova 인스턴스에 전용 CPU 감지 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 Nova 인스턴스 전용 CPU를 표시합니다. 이 출력은 PMD( poll mode driver) CPU 없이 isolcpus의 값과 동일해야 합니다.
grep ^vcpu_pin_set /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf vcpu_pin_set=4-19,24-39
$ grep ^vcpu_pin_set /var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf
vcpu_pin_set=4-19,24-39
2.5.6. 대규모 페이지 설정 확인 링크 복사링크가 클립보드에 복사되었습니다!
계산 노드에서 대규모 페이지 구성을 확인합니다.
대규모 페이지가 구성되어 있지 않거나 소진된 경우 KernelArgs를 참조하십시오.