코어를 바인딩한 후에도 가상 머신의 코어가 여전히 도난당하는 이유는 무엇인가요?
지정된 CPU에 프로세스를 바인딩하는 방법에 대해 이전에 기사를 썼는데, 이 기사에서는 Linux의 작업 세트와 가상화 시나리오에서 CPU를 지정하는 virsh vcpupin이라는 두 가지 방법을 도입했습니다. 나중에 부적절하게 사용하면 코어가 바인딩되어 있어도 가상 머신 CPU를 도난당할 수 있다는 사실이 밝혀졌습니다.
근본 원인은 코어가 없거나 코어 충돌이 발생하여 코어를 훔치는 주범이 되는 물리적 머신에서 프로세스나 가상 머신을 찾는 것입니다.
1) 코어 도난 여부 확인 방법
가상머신에서 top 명령어를 실행하여 각 코어의 st가 0인지 확인합니다. 0이면 코어가 도난당했다는 의미입니다.
2) 가상 머신의 모든 코어 중 st가 0이 아닌 경우, 가상 머신이 위치한 물리적 머신으로 가서 가상 머신이 코어에 바인딩되어 있는지 확인하세요
제어 노드에서 nova show vmid? | grep ? 인스턴스는 instance_id를 찾습니다.
가상 머신이 있는 물리적 머신은 virsh 목록에서 instance_id를 찾습니다. >그런 다음 코어가 바인딩되었는지 확인하세요 virsh vcpupin instance_id
virsh vcpupin instance_idbb #코어 바인딩 아님
0: 0-39
virsh vcpupin instance_idaa #Core not 바인딩, 범위에 바인딩
0: 5-9
3) 가상 머신이 코어에 바인딩된 경우 다른 가상 머신이 물리적 코어에 바인딩되어 있는지 확인하세요. 가상 머신이 위치한 머신
2)의 방법을 참조하여 다른 가상 머신이 코어에 바인딩되어 있지 않은 경우 이러한 가상 머신을 코어와 함께 묶을 수 있습니다.
virsh vcpupin instance_idbb #Bind core
0:5
4) 가상 머신에 코어 바운드가 없는 경우 코어를 바인딩해야 합니다. 여기에는 또 다른 문제가 포함됩니다. 코어 없이 가상 머신에 코어를 바인딩하는 방법은 나중에 자세히 설명합니다.
5) 물리적 머신의 모든 가상 머신에 코어가 바인딩되어 있는데도 여전히 코어를 도난당하는 경우 특정 프로세스가 사용되고 있는지 자세히 확인해야 합니다.
가상 머신에서 st가 0이 아닌 CPU를 찾은 다음, 물리적 머신에서 CPU에 해당하는 물리적 코어를 찾습니다. 2가지 방법: virsh dumpxml 인스턴스_id 및 virsh vcpupin 인스턴스_id.
virsh vcpupin instance_idbb #Bind core
0:5
1:?3
가상 머신의 0번째 코어를 설명하고 5번째 코어에 해당하는 물리적 머신. 가상 머신의 0번째 코어 중 st가 0이 아닌 경우, 물리적 머신의 5번째 코어가 다른 애플리케이션에 의해 점유되고 있음을 의미합니다.
taskset cp pid는 각 프로세스가 차지하는 CPU를 확인할 수 있으며, 점차적으로 해당 애플리케이션을 관찰하고 찾을 수 있습니다.