vlrusanov
@vlrusanov
Системный администратор, Администратор 1С

Как иизменить параметр tdp_mmu?

Подскажите, как отключить tdp_mmu на Debian 5.15.39.
При проверке cat /sys/module/kvm/parameters/tdp_mmu выдает Y.

Старое оборудование и новое ядро 5.15
KVM: ошибка ввода, аппаратная ошибка 0x80000021
Предыстория
В ядре 5.15 реализация модуля управления памятью (MMU) с двумерной подкачкой (TDP) была активирована по умолчанию. Новая реализация снижает сложность сопоставления адреса виртуальной памяти гостевой ОС с адресом физической памяти хоста и повышает производительность, особенно во время миграции виртуальных машин с большим объемом памяти и большим количеством ядер процессора. Однако было показано, что новая функция TDP MMU вызывает регрессии на некоторых (в основном) старых аппаратных средствах, вероятно, из-за предположений о том, когда требуется резервный вариант, который не выполняется этим HW.

Проблема проявляется в виде сбоев компьютера с помощью kernel (dmesg) или journalctlзаписи в журнале, среди прочего, с такой строкой:

KVM: entry failed, hardware error 0x80000021

Обычно примерно в то же время из процесса QEMU также регистрируется сообщение об ошибке assert. Виртуальные машины Windows чаще всего затрагиваются в отчетах пользователей.

Не удалось точно определить затронутые модели, но, похоже, процессоры, выпущенные более 8 лет назад, скорее всего, вызывают проблему. Обратите внимание, что известны случаи, когда обновление до последней доступной прошивки (BIOS / EFI) и микрокода процессора исправляло регрессию. Таким образом, прежде чем пытаться использовать описанный ниже обходной путь, мы рекомендуем убедиться, что у вас установлена последняя версия микропрограммы и микрокода процессора.

Обходной путь: отключить tdp_mmu
Параметр tdp_mmuмодуля kvm можно использовать для принудительного отключения использования модуля двумерной подкачки (TDP) MMU.

Вы можете либо добавить этот параметр в командную строку ядра хоста PVEkvm.tdp_mmu=N, см. Этот раздел справочной документации.
В качестве альтернативы можно задать параметр модуля, используя конфигурацию modprobe, например:
echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
root@Line-host:~# echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
root@Line-host:~# cat /sys/module/kvm/parameters/tdp_mmu
Y
root@Line-host:~# update-initramfs -k all -u
update-initramfs: Generating /boot/initrd.img-5.15.39-1-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-5.15.35-2-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-5.13.19-6-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
update-initramfs: Generating /boot/initrd.img-5.13.19-2-pve
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/proxmox-boot-uuids found, skipping ESP sync.
root@Line-host:~#
  • Вопрос задан
  • 391 просмотр
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Как иизменить параметр tdp_mmu?

стандартный способ
echo N | sudo tee /sys/module/kvm/parameters/tdp_mmu
не помогает?

root@Line-host:~# echo "options kvm tdp_mmu=N" >/etc/modprobe.d/kvm-disable-tdp-mmu.conf
root@Line-host:~# cat /sys/module/kvm/parameters/tdp_mmu
Y

Ну а чего ты ожидал, параметры из modprobe.d применяются при загрузке модуля. Можно сделать rmmod kvm ; modprobe kvm чтобы убедиться, что параметр применяется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
meDveD_spb
@meDveD_spb
уже вышло обновленное ядро, которое должно решать проблемы для Win11 и Win22
pve-kernel-5.15.39-3-pve
находится в ветке pvetest
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы