Windows   发布时间:2022-05-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Windows CPU Scheduler – 内核时间非常长大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我们正在尝试了解 Windows cpu Scheduler如何工作以优化我们的应用程序,以实现最大可能的基础架构/实际工作比率.在xperf中有一些我们不理解的东西,并且想要让社区了解真正发生的事情.
当我们得到一些服务器“缓慢”或“无响应”的报告时,我们最初开始调查这些问题.

背景资料

我们有一台运行我们的中间件基础架构的Windows 2012 R2 Server,其规格如下.

我们发现有30%的cpu浪费在内核上,所以我们开始深入挖掘.

Windows CPU Scheduler – 内核时间非常长

上面的服务器运行“主机”~500个进程(作为windows服务),这些“主机”进程中的每一个都有一个内部while循环,延迟〜250毫秒(yuck!),并且每个“主机”进程可能有〜 1..2执行实际工作的“子”进程.

虽然在迭代之间具有250毫秒延迟的无限循环,但“主机”应用程序执行的实际有用工作可能仅每10..15秒出现一次.所以浪费了很多周期来进行不必要的循环.

我们知道,“主机”应用程序的设计至少可以说是次优的,适用于我们的场景.应用程序将更改为基于事件的模型,该模型不需要循环,因此我们期望cpu利用率图中的“内核”时间显着减少.

然而,当我们调查这个问题时,我们已经做了一些xperf分析,它提出了几个关于Windows cpu Scheduler的一般性问题,我们无法找到任何明确/简明的解释.

我们不明白的是什么

以下是其中一个xperf会话的屏幕截图.

Windows CPU Scheduler – 内核时间非常长

您可以从“cpu使用率(精确度)”中看到

>有15毫秒的时间片,其中大部分未被充分利用.这些切片的利用率约为35-40%.因此,我认为这反过来意味着cpu大约在35%到40%的时间内被利用,但系统的性能(假设通过系统周围的随意修改可观察到)实际上是缓慢的.
>有了这个,我们就有了这个“神秘的”30%内核时间成本,由任务管理器cpu利用率图判断.
>有些cpu明显用于整个15 ms及更高的切片.

问题

就多处理器系统上的Windows cpu调度而言:

>什么导致30%的内核成本?上下文切换?别的什么?在编写应用程序以降低此成本时应该考虑哪些因素?甚至 – 以最小的基础设施成本实现完美的利用(在多处理器系统上,其中进程数高于核心数)

>这些15毫秒切片是什么?
>为什么cpu利用率在这些切片中存在差距?

解决方法

要诊断cpu使用率问题,您应该使用Windows事件跟踪(ETW)来捕获cpu采样数据(不精确,这对于检测挂起很有用).

捕获数据,install the Windows Performance Toolkit,这是Windows SDK的一部分.

Windows CPU Scheduler – 内核时间非常长

现在运行WPRUI.exe,选择First Level,在Resource select cpu usage下,单击start.

Windows CPU Scheduler – 内核时间非常长

现在捕获1分钟的cpu使用率. 1分钟后点击“保存”.

现在analyze the generated ETL file with the Windows Performance Analyzer by drag&将cpu使用情况(采样)图表拖放到分析窗格并按照图片中的顺序排列列:

Windows CPU Scheduler – 内核时间非常长

在WPA内部,load the debug symbols并扩展了SYstem过程的Stack.在此演示中,cpu使用率来自nVIDIA驱动程序.

大佬总结

以上是大佬教程为你收集整理的Windows CPU Scheduler – 内核时间非常长全部内容,希望文章能够帮你解决Windows CPU Scheduler – 内核时间非常长所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: