Добрый день, лор,
Я не сильно силен в виртуализации, поэтому есть такой вопрос.
Есть сервак с кучей виртуалок, на виртуалках через cat /proc/cpuinfo видно имя(поколение, имя проца, модель) в точности такое же как у хостовой машины. Но не видны все флаги. В частности на хостовой видны: avx512f, avx512cd, avx512vl, avx512dq, avx512bw. А на госте только avx512f, avx512cd.
Насколько мне известно виртуальная машина настроена так, чтобы она предоставляла модель процессора хоста. Раньше все было настроено несколько иначе и даже avx512f в флагах отсутствовал, а простейшие avx512f инструкции вызывали крэши(теперь нет).
Пробовал запускать на госте бинарники(простые самописные тесты), которые содержат инструкции и cpu_flags хоста. Они работают, но полной уверенности нет.
Поискав в интернете мы нашли такой патч
https://lore.kernel.org/patchwork/patch/702644/
Который по идее должен решать эту проблему. НО 1) у нас ядро сильно(сильно-сильно) старее этого 2) обновить и пропатчить будет затруднительно с точки зрения организационной, бизнес задач и принципа «работает - не трожь».
Правильно ли я понимаю, что этот патч просто позволяет пробросить эти флаги в cpu_flags гостя и напрямую на поддерживаемый набор инструкций в виртуалке не влияет? (Возможно только на приложения которые в реалтайме проверяют cpuf_flags). Или все же влияет?
UDP: Раньше в виртуальной машине явно задавалась модель проца, да не хостовая. Флагов видно не было, любой avx512 код падал. Теперь видны avx512f и cd, а все выглядит словно работает ВСЕ тоже что и на хосте.
avx, kvm, linux, виртуализация, ядро