文件 v0.1.7

CPU 基準

本頁說明 go-pve-qemu 如何決定新 VM 的 --cpu 類型,讓 VM 可以在叢集任何節點之間遷移。

為何需要基準

Proxmox 預設的 host CPU 類型會把當前節點的指令集完整暴露給 VM;遷移到指令集較舊的節點後 VM 會無法開機。取全叢集共同支援的最低等級,可犧牲少量效能換取任意遷移。

偵測流程

  1. 讀取快取檔 .go_qemu_cpu_type,存在即直接使用
  2. pvesh get /nodes --output-format json 取得所有節點
  3. 對每個節點執行 pvesh get /nodes/<node>/status,解析 cpuinfo.flags
  4. 依下表判定等級,取全叢集最低者
  5. 寫入 .go_qemu_cpu_type

任一節點查詢失敗時整個偵測失敗,qm create 改用 kvm64。

等級判定

等級 必須具備的 flags
x86-64-v1 未滿足 v2 時的預設
x86-64-v2 cx16 lahf_lm popcnt sse4_1 sse4_2 ssse3
x86-64-v2-AES v2 + aes pclmulqdq(且未滿足 v3)
x86-64-v3 v2 + avx avx2 bmi1 bmi2 f16c fma movbe lzcnt xsaveopt
x86-64-v4 v3 + avx512f avx512bw avx512cd avx512dq avx512vl

已知行為

EN