5

我正在开发一个软实时应用程序,该应用程序部署到许多由于其他进程而具有不同负载量的服务器。我们已经确定,至少在一种设置中,性能因缺乏足够的 cpu 资源而受到阻碍。

我知道在 Windows 上,线程/进程可以进入就绪状态,如果 CPU 不可用,它将保持在该状态。

我有点希望会有一个像 Process.Current.ReadyTime 这样的调用,它可以让我检查和监控这种情况的发生并在应用程序日志中发出警告/错误。例如,您可以在已知时间段内获取 delta,并设置一个阈值,即您可以容忍处于就绪状态的时间。

我很难找到任何直接甚至间接的方法来获得它。有没有人有任何想法如何实现这一目标或类似的东西?

TL;DR - 我们正在寻找一种方法让线程/进程检查它处于就绪状态的时间(即有工作要做但没有可用的 CPU)

谢谢,

G人

4

2 回答 2

2

我不认为有这样的属性Process.Current.ReadyTime(但也许在 Windows 性能计数器中有适合您需要的东西?),但是对于线程,您可以使用ThreadState 枚举

就绪 指示线程由于没有空闲处理器而正在等待使用处理器的状态。线程准备在下一个可用处理器上运行。

运行指示线程当前正在使用处理器的状态。

您可以创建一个监视线程,其工作只是循环遍历应用程序的所有线程并记录它们的状态或计算它们在就绪状态中花费的时间。

于 2012-06-17T08:53:46.073 回答
0

框架中没有类似的东西,但可能值得搜索WMI

我知道 WMI 公开PercentProcessorTime,它告诉您处理器空闲的时间百分比。

这将使您了解机器上的 CPU 负载,这将为您提供间接线索。

于 2012-06-17T09:02:52.043 回答