将vCPU添加到现有的OS安装

ESXi 5中的VMconfiguration对话框警告说,如果在安装客户操作系统后更改了vCPU的数量,天空将会下降 – 这可能会导致我的虚拟机不稳定。

我知道某些涉及线程序列化的CPU指令需要在多处理器系统中使用LOCK前缀,而不是在单处理器系统中(或者至less不使用单个内核)。 操作系统通常会在不需要的地方省略LOCK。

如果操作系统使用了一个省略了LOCK但是使用了多个CPU的内核,那么这将导致极度的不稳定和难以隔离的错误。 但是,如果内核是为一个处理器devise的,那么使用多个处理器(它必须知道)是怎么做的呢? 这似乎是一个完全荒谬的操作系统devise,我希望在实践中不存在。

一个更合理的操作系统devise将是在启动时检测CPU,并相应地select单处理器或多处理器内核。 否则,唯一的另一个明智的devise会安装正确的内核,但是单处理器内核根本不会使用其他处理器,因此在另一个CPU中不会有任何坏处,除非它完全不被使用。

应用程序软件可能会更容易陷入麻烦,因为即使在单核系统上也可以轻松使用多个线程,所以不需要注意它是在多处理器系统上,而不是LOCKing(或使用操作系统的工具)可能会导致可怕的错误。 但是,任何认真的软件都有如此糟糕的devise,只能在安装过​​程中testinguni / multiprocessor状态吗?

世界末日警告背后的推理是什么? 如果有什么操作系统或应用程序,我应该实际预期的问题?

在安装客户操作系统之后添加或删除vCPU不是任何版本的Linux或Windows最近足以支持供应商的问题。 这个警告可以追溯到VMware的早期阶段,现在大部分都是无关紧要的。

但是,在Linux早期,内核不得不专门用SMP支持编译,偶尔UP内核不喜欢在SMP / NUMA系统上运行,反之亦然。 那些日子早已被遗忘了。

现在,Linux内核几乎总是在SMP / NUMA支持下默认编译,即使使用一个处理器也能正常运行。 对于2.6的所有情况和2.4的大部分或全部都是如此。

从Server 2003开始,Windows的performance与此类似。我无法在Internet上很快find关于2000和NT 4.0行为的明确信息,尽pipe我似乎从遥远的内存中回想起从单个CPU切换到多CPUconfiguration。

如果你计划P2V一个非常古老的系统,但理论上你可能会遇到这样的问题。