小编rea*_*idt的帖子

为 Hyper-V 主机禁用 SpeedStep 的最佳实践?

我正在分析一个问题,即虚拟机内受 CPU 限制的工作负载的性能通常(并非总是)低于我们基于底层硬件的预期。

我们在 Windows Server 2012 R2 上使用 Hyper-V。该服务器具有双 Intel Xeon E5-2643 v2 @ 3.50 GHz。

以下是一些似乎相关的数字:

  • Hyper-V 管理程序逻辑处理器,总运行时间百分比,实例 _Total:平均 20%
  • Hyper-V 管理程序虚拟处理器、每次调度的 CPU 等待时间、实例 _Total:平均 20000(这个数字似乎完全安全,因此管理程序似乎不必从虚拟 CPU 中“提取”来安排时间到另一个 VM 的逻辑 CPU;似乎转化为 2% 的开销)
  • Hyper-V 管理程序逻辑处理器,最大频率百分比,实例 _Total:平均 34%
  • CPU-Z 工具显示两个处理器的 Core #0 大部分时间都在 1200 MHz 左右(与性能监视器报告的最大频率百分比非常匹配)

在只有几个核心的台式机上,一旦开始受 CPU 限制的活动,核心速度就会立即提高。

然而,在我们的 Hyper-V 主机上,只有当整个系统负载似乎很高几秒钟时,核心速度才会上升。现在,例如,如果您有一个虚拟机,在总共 24 个物理 CPU 中有 4 个虚拟 CPU(打开超线程),并且此虚拟机需要 CPU 功率,并且虚拟机内的任务管理器显示接近 100% 的 CPU 使用率,大部分时间是时钟物理CPU的速度不会上升,性能很差。

显然,这是不需要的行为。想想一个数据库服务器需要 3 倍的时间来回答查询,因为服务器没有“足够”的负载来提高 CPU 频率。那没有任何意义。

我发现了一篇博客文章,描述了2011 年VMWare 和 Cisco …

intel hyper-v hyper-v-server-2012-r2

6
推荐指数
1
解决办法
1万
查看次数

ASP.NET 缓存修剪知道应用程序池内存限制吗?

我在 Win2003 32 位上运行一个 ASP.NET 应用程序,它往往会分配大量内存。为了避免在 W3P 进程超过 1 GB 时开始出现 OutOfMemoryExceptions,我为此应用程序池设置了 850 MB 的最大虚拟内存限制,因此应用程序将重新启动而不是抛出异常。

虽然不会抛出异常,但这些重启仍然会导致暂时的性能退化(低缓存命中率、aspx 编译等),所以我想尽量减少重启的次数。观察性能计数器,我可以看到 ASP.NET 缓存按设计工作(项目计数和缓存命中率在启动后增加,而某些项目可能由于到期日期而被删除),除了缓存修整。

例如 我希望缓存修整在例如 750 MB 正在使用并且其中一半是缓存时启动。但它永远不会发生,在负载下它会继续分配越来越多的内存,而不是例如丢弃低优先级缓存项,直到达到内存限制。

有人知道什么会真正触发缓存修剪吗?可用物理内存?是否有任何其他设置可用于优化此场景?

(是的,我知道,32 位是 2004 年,使用 x64 这个问题会消失,甚至可能使用相同数量的内存,但对于这个应用程序,我在这台服务器上又卡住了几个月,必须保持它跑步...)

asp.net application-pools cache 32-bit

5
推荐指数
1
解决办法
9041
查看次数