我正在考虑configuration一个KVMpipe理程序来拥有一些虚拟机。
KVMpipe理程序有8个物理内核(16个使用HyperThreading)。 我想创build8个虚拟机,但我不明白cpu-pinning会有什么不同。
当我将每个虚拟机固定到不同的内核时,与将所有虚拟机固定到所有内核(通过将亲和性设置为0-15)相比,有什么区别?
它会有什么性能好处吗?
我想我会有一些caching的好处,但如果我想运行所有的虚拟机stream量会有所不同?
CPUlocking确保虚拟机只能从特定的CPU或一组CPU获取CPU时间。 除非你有一个非常明确的原因,通常没有必要这样做。
如果您将每个虚拟机固定到特定的CPU核心,并且将虚拟机pipe理程序限制为一个或两个其他核心,那么您可以获得性能提升。
这将使您的虚拟机能够从CPU和CPU的专用L1和L2caching中获得最佳利益,并且不会受到NIC和存储控制器中断的困扰。
另一方面,我期望虚拟机pipe理程序已经尽力将同一个虚拟CPU的CPU事件直接指向相同的物理内核,如果手动强制更严格的话,我怀疑这会是一个显着的性能增益 。
这样做的缺点也是非常明显的,当你给虚拟客户分配更多的内核比可用的物理内核不存在的时候,你的手动CPUlocking不太可能比虚拟机pipe理更好。 当你使用实时迁移时,也会很糟糕。