QEMU не сохраняет закрепление ЦП для виртуальной машины

Я установил виртуальную машину Windows 10 и Windows Server 2019 под свой KVM-гипервизор Rocky Linux 9.1. Мой план в отношении этой установки — попрактиковаться в системном администрировании, и я хотел бы иметь возможность запускать несколько виртуальных машин одновременно.

Я обнаружил, что обе виртуальные машины Windows работали довольно медленно (по сути непригодно для использования), поэтому я попробовал некоторые исправления для улучшения производительности гостевых виртуальных машин . Windows Server 2019 теперь работает немного лучше благодаря закреплению ЦП, но проблема, с которой я столкнулся, заключается в том, что виртуальная машина Windows 10 не сохраняет закрепление ЦП.

Вот изображение того, как устроен мой компьютер. Хост Windows 10, работающий под управлением Rocky Linux KVM в Virtualbox, затем Windows Server и Windows 10 в QEMU.

Эта проблема у меня уже больше месяца, и я перепробовал много вещей.

Изначально я назначил моей виртуальной машине Rocky Linux 9.1 8 ядер, но теперь для устранения неполадок я использую 10 ядер. Для Windows Server я назначил ему 4 ядра и закрепил ядра от 0 до 3, и все работает нормально. Для Windows 10 я назначаю ему 4 ядра и пытаюсь закрепить ядра с 4 по 7, но это никогда не сохраняет. Пробовал притыкать разные комбинации ядер, не спасает. Как ни странно, если я прикреплю те же ядра, которые используются в Windows Server, к виртуальной машине Windows 10, это ДЕЙСТВИТЕЛЬНО сохранит закрепление ЦП. Но в Windows Server нет закрепленных ядер.

И чтобы убедиться, что я использую правильные ядра, вот вывод lscpu -e:

      [admin@localhost ~]$ lscpu -e
CPU NODE SOCKET CORE L1d:L1i:L2:L3 ONLINE
  0    0      0    0 0:0:0:0          yes
  1    0      0    1 1:1:1:1          yes
  2    0      0    2 2:2:2:2          yes
  3    0      0    3 3:3:3:3          yes
  4    0      0    4 4:4:4:4          yes
  5    0      0    5 5:5:5:5          yes
  6    0      0    6 6:6:6:6          yes
  7    0      0    7 7:7:7:7          yes
  8    0      0    8 8:8:8:8          yes
  9    0      0    9 9:9:9:9          yes

Первое, что я попытался сделать, это установить драйверы VirtIO и гостевые инструменты Spice. Драйверы VirtIO, возможно, и помогли, но разница едва заметна. Spice Guest Tools был удален из RHEL 9, поэтому я даже не могу их использовать.

Далее я прочитал, что в текстовом редакторе может быть проблема с сохранением изменений. Я переключился с vim на nano (отредактировал /etc/environment и добавилexport EDITOR=nano), побежалsudo virsh edit win10, закрепил ядра ЦП, сохраните, выйдите, затем проверьте файл конфигурации XML, и изменения не сохраняются. Могу подтвердить, что это не редактор, потому что он отлично работает на других виртуальных машинах и читаетDomain: 'win10' XML configuration edited.после выхода.

Еще я прочитал, чтоsudo virsh editне сохранит никаких изменений, если виртуальная машина работает. Я редактирую XML-файл виртуальной машины только тогда, когда она выключена, так что это не причина.

Я только что обнаружил что-то странное: я могу закрепить ЦП на виртуальной машине Windows 10 ТОЛЬКО ЕСЛИ я добавляю 4 дополнительных ядра. Если я назначу виртуальной машине только 4 ядра и закреплю эти 4 ядра, то после сохранения и выхода строки закрепления ЦП исчезнут. Это выглядит так:

        <vcpu placement="static">4</vcpu>
  <iothreads>1</iothreads>
  <cputune>
    <emulatorpin cpuset="4"/>
    <iothreadpin iothread="1" cpuset="4"/>
  </cputune>

Однако, если я назначу 8 ядер (дополнительные 4 ядра поверх уже имеющихся 4) и закреплю 4 ядра, то после сохранения и выхода эти 4 ядра все равно будут закреплены. Это выглядит так:

        <vcpu placement="static">8</vcpu>
  <iothreads>1</iothreads>
  <cputune>
    <vcpupin vcpu="4" cpuset="4"/>
    <vcpupin vcpu="5" cpuset="5"/>
    <vcpupin vcpu="6" cpuset="6"/>
    <vcpupin vcpu="7" cpuset="7"/>
    <emulatorpin cpuset="4"/>
    <iothreadpin iothread="1" cpuset="4"/>
  </cputune>

Проблема с приведенной выше конфигурацией заключается в том, что виртуальная машина будет использовать 8 ядер вместо 4. См. ниже:

Я не совсем уверен, что еще попробовать. Моя цель — создать виртуальные машины Windows, которые быстро загружаются, работают достаточно быстро и не допускают постоянного скачка загрузки ЦП на 100%. Я создал отдельную виртуальную машину Windows 10, используя образ .raw вместо .qcow2, и думаю, это немного быстрее.

Я постарался включить как можно больше деталей. Если вам нужна дополнительная информация, дайте мне знать, и я обновлю свой пост.

0 ответов

Другие вопросы по тегам