在具有多个虚拟机的KVMpipe理程序环境中,cpu-pinning是什么意思

我正在考虑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理更好。 当你使用实时迁移时,也会很糟糕。