Привязка виртуальных ядер к физическим

1.  По умолчанию виртуальные ядра ВМ не привязаны жестко к физическим. При использовании нескольких ВМ одновременно, может происходить ситуация, когда разные ВМ обращаются к одним и тем же физическим ядрам. Более того, отдельная ВМ может обращаться разными виртуальными ядрами к одному физическому. Все это может приводить к потерям пакетов.

2.  Для отслеживания использования физических ядер виртуальной машиной, можно воспользоваться командой virsh vcpuinfo <VM name>.

root@debian:~# virsh vcpuinfo <VM name>

VCPU:           0

CPU:            0

State:          running

CPU time:       7.6s

CPU Affinity:   yyyyyyyy

 

VCPU:           1

CPU:            1

State:          running

CPU time:       2.8s

CPU Affinity:   yyyyyyyy

 

VCPU:           2

CPU:            0

State:          running

CPU time:       2.2s

CPU Affinity:   yyyyyyyy

 

VCPU:           3

CPU:            1

State:          running

CPU time:       2.1s

CPU Affinity:   yyyyyyyy

 

Из вывода видно, что разные VCPU могут обращаться к одним и тем же CPU.

3.  Для фиксации виртуальных ядер (VCPU) на конкретные физические, необходимо изменить настройки ВМ.

4.  Остановите ВМ:

root@debian:~# virsh shutdown <VM name>

5.  После полного выключения ВМ, отредактируйте настройки ВМ, добавив следующие строки:

root@debian:~# virsh edit <VM name>

  <cputune>

    <vcpupin vcpu='0' cpuset='4'/>

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

    <vcpupin vcpu='2' cpuset='6'/>

    <vcpupin vcpu='3' cpuset='7'/>

  </cputune>

где:

vcpu – номер виртуального ядра (начиная с нулевого);

cpuset – список физических ядер, к которым происходит привязка (начиная с нулевого);

6.  Запустите ВМ, привязка ядер будет жесткая:

root@debian:~# virsh start <VM name>

root@debian:~# virsh vcpuinfo <VM name>

VCPU:           0

CPU:            4

State:          running

CPU time:       0.2s

CPU Affinity:   ----y---

 

VCPU:           1

CPU:            5

State:          running

CPU time:       0.2s

CPU Affinity:   -----y--

 

VCPU:           2

CPU:            6

State:          running

CPU time:       0.2s

CPU Affinity:   ------y-

 

VCPU:           3

CPU:            7

State:          running

CPU time:       0.1s

CPU Affinity:   -------y

 

7.  При наличии в гипервизоре других ВМ, их также нужно разнести по отдельным физическим ядрам, не используя ядра, занятые под ВМ «С-Терра Виртуальный Шлюз».