我正在试图弄清楚为什么我们的软件在虚拟化环境下运行得如此之慢。大多数统计数据显示,最坏情况下只会有10%的性能损失,但在Windows虚拟服务器上,性能惩罚可能达到100-400%。我一直在尝试分析差异,但是分析结果对我来说没有太多意义。以下是我在没有虚拟化的Vista 32位电脑上进行分析时看到的情况:
以下是在带有虚拟化的Windows 2008 64位服务器上运行的情况:
较慢的那个花费了大量时间在
有人能为我解释这其中的任何问题吗?甚至只是提供一些关于这些
![enter image description here](https://istack.dev59.com/qQAbX.webp)
![enter image description here](https://istack.dev59.com/HV6lv.webp)
RtlInitializeExceptionChain
中,而快速的那个则显示为0.0秒。你知道这是做什么的吗?此外,当我连接到进程时,我的机器上只有一个线程PulseEvent
,但是当我在服务器上连接时,有两个线程GetDurationFormatEx
和RtlInitializeExceptionChain
。据我所知,我们编写的代码仅使用单个线程。另外,值得一提的是,这是一个纯C编写的控制台应用程序,没有任何UI界面。有人能为我解释这其中的任何问题吗?甚至只是提供一些关于这些
ntdll
和kernel32
调用在做什么方面的信息?我也不确定差异中有多少与64/32位相关,有多少与虚拟/非虚拟相关。不幸的是,我没有轻松访问其他配置来确定差异。