Proxmox中CPU類型對Windows客戶機記憶體性能影響
前言
前陣子看到了小林家的白渃發布的文章[1],根據他的測試,windows客戶機的記憶體性能損失是因為cpu type設為host的原因,我自己按照了類似的流程做了測試,不過得出的結論略有不同,本文為測試結果的記錄。
測試
根據小林家的白渃的測試結果,windows客戶機記憶體性能下降的原因是host提供的某些cpu flag可能觸發了windows的安全機制,導致性能下降,因此我也是從cpu flag上開始著手。
測試方法
我使用另外一台linux的客戶機來獲得對應cpu type提供的flag,使用以下指令取得。
1 |
|
這樣只要diff就可以快速得知不同cpu type對支援flag的區別
1 |
|
修改PVE提供的CPU flag
編輯/etc/qemu-server/<id>.conf
,加上args
這行,host代表使用的cpu model,後面的+、-為在此model上加上或減掉的cpu flag,加上args: -cpu
後會覆蓋掉cpu設定的部分,使用qm showcmd <id> --pretty
來查看qemu啟動時的參數,args的參數會被加在最後覆蓋前面設定的參數
1 |
|
結果
我使用的CPU為2690v3,為Haswell架構,經過測試能使用的CPU model為Haswell-noTSX和Haswell-noTSX-IBRS,無法使用Haswell和Haswell-IBRS,推測是xeon缺少消費級的部分指令集,其中Haswell-noTSX和Haswell-noTSX-IBRS的差別為Haswell-noTSX-IBRS多了兩個和IRBS相關的flag,更接近host的flag因此主要是用這個model和host測試
首先先測試基本model的記憶體性能對比





左上:host,中上:haswell-notsx,右上:haswell-notsx-IRBS
左下:max,右下:x86-64-v2-aes
可以看到max和host都有記憶體性能的問題
在他的文章總結中認為是md-clear和flush-l1d這兩個flag導致OS啟動漏洞修補影響性能,因此直接測試host在分別減掉這兩個flag後有沒有影響


左:無md-clear flag,右:無flush-l1d flag
可以看到記憶體性能還是有問題
直接測試host減掉所有比haswell-notsx-IRBS多的flag和把haswell-notsx-IRBS加上所有能加的flag
host減掉所有能減掉的flag後只比haswell-notsx-IRBS多三個flag
1 |
|
haswell-notsx-IRBS加上所有能加的flag後只比host少2個flag
1 |
|


左:host減掉所有能減的flag,右:haswell-notsx-IRBS加上所有能加的flag
可以看到host的model記憶體性能還是有問題,haswell-notsx-IRBS加上所有flag後還是沒有問題,因此我認為可能和cpu漏洞沒有很大的關係,不然就是和pcdm有關(能源管理部分)
最後我還是使用他文章中提供的解決方法,設定一個custom的cpu model,專門用來給windows的虛擬機使用
編輯/etc/pve/virtual-guest/cpu-models.conf
1 |
|
性能測試如下,沒什麼大問題