Virtualization

虛擬機和雙插槽設置:最大限度地減少 CPU 到 CPU 通信的需求

  • January 13, 2017

我計劃建構一個由(可能)KVM 監督的多作業系統工作站,我將在其上執行各種任務。其中一些任務比其他任務更適合多執行緒,所以我想盡可能地最大化時鐘速度。為此,我正在考慮雙插槽設置的優缺點,以便在相同數量的核心下獲得更高的時鐘速度。但是,據我了解,雙插槽建構的實用性受到 CPU 之間緩慢通信的限制。所以我的想法是,如果我智能地分配資源,雙插槽可能會很好,但如果不是,那可能是一場災難。

所以這裡有一些我想了解的事情:

  1. 如果主機作業系統專門使用一個套接字,而主動使用的客戶機專門使用另一個套接字,那麼這兩個套接字需要多少通信?
  2. 虛擬機管理程序從訪問更多核心中受益多少?
  3. 在 CPU 插槽與 CPU 核心之間分配資源方面,KVM(或其他管理程序)有多聰明?是否有一些事情我應該手動設置,而其他一些事情我應該由管理程序決定?

一個重要的考慮因素是,在任何給定時間,只有一個或最多兩個 VM 需要大量資源,其他兩個或三個在任何時候都應該很輕。

遵循系統特定的 NUMA 拓撲可以獲得很大的性能提升。使用 Pinning 選項會將來賓的 vCPU 執行緒限製到單個 NUMA 節點;但是,執行緒將能夠在該 NUMA 節點內移動。要獲得更緊密的綁定功能,請使用 lscpu 命令的輸出來使用 virsh cpupin 建立 1:1 的物理 CPU 到 vCPU 綁定。

在 RHEL 7 的文件中,您可以使用將 VCPU 綁定到對應的物理 CPUnumatune然後使用和將客戶固定到某個 NUMA 節點。在使用.lscpu``virsh cpupin``lstopo``numatune

引用自:https://serverfault.com/questions/825980