挂起进程持续时间

最适用于:应用程序开发人员

相关评估:

  • 启动性能(快速启动)
  • 待机性能
  • 休眠性能

该指标衡量计算机通知进程即将发生的电源状态更改所花费的时间。

在此阶段,客户端/服务器运行时服务器子系统 (Csrss.exe) 将 WM_POWERBROADCAST 窗口消息与事件类型 PBT_APMSUSPEND 一起广播到拥有窗口的每个应用程序。 系统也可能会关闭监视器器。

此活动可以在 WPA 活动图表中被视为被挂起的连续进程之间的巨大差距。 预计需要一秒钟或更长时间来关闭显示器电源。 这是挂起/关闭期间的必要阶段,不应将其视为该指标的性能瓶颈。

查看这段时间内的“CPU 使用情况(采样)”图,以显示以下堆栈上 csrss.exe 进程中的 CPU 使用情况:

[Root] (csrss.exe) 
winsrv.dll!RegisterForDeviceBroadcastNotifications 
|- winsrv.dll!ZwUserCallNoParam 
|    win32k.sys!xxxUserPowerStateCalloutWorker 
|    |- win32k.sys!PowerOffMonitor 
|    |    |- win32k.sys!FadeDesktop 
|    |    |- win32k.sys!DrvSetMonitorPowerState 
|    |    |- win32k.sys!UpdateDisplayState 
|    |    |- win32k.sys!DwmSyncClearSwapChain 
|    |    |- win32k.sys!RestoreGammaRamp

由于其他堆栈上的 CPU 消耗,或是由于当前堆栈上没有 CPU 利用率的延迟而导致的暂停进程的差距,可能表明有需要进一步调查的区域。

扩展指标时,会显示更详细的阶段视图,其中包含一组子指标,用于衡量每个进程响应挂起通知所花费的时间。 这些列显示以下信息:

  • 在“详细信息”列中按迭代显示 PID。 在默认视图中,此列可能包含“Various”值,因为 PID 不能跨迭代聚合。 展开迭代以查看各个 PID。

  • 此特定过程在此阶段所花费的时间。

注意

如果一个应用程序有多个窗口,同一个进程可以收到多个通知。

典型影响因素

每个应用程序都可以延迟系统关闭,方法是延迟其对具有 PBT_APMSUSPEND 事件类型的 WM_POWERBROADCAST 消息的响应。 由于此指标捕获所有 Windows GUI 进程响应挂起通知所花费的累积时间,因此除了所有进程响应的累积时间之外,耗时过长的单个进程也可能会影响此指标。 请注意,必须运行该进程才能影响此指标;由于启动性能(快速启动)评估在收集数据进行分析之前会重新启动,因此这些过程几乎完全来自启动应用程序或计划任务。

分析和修正步骤

确定对该指标影响最大的进程。 在 Windows 评估控制台中,展开“挂起进程持续时间”指标以获取此阶段的详细信息。 在此阶段的“进程”列表中,按降序对“持续时间”进行排序并查找最大的影响因素。

如果可能,请从启动路径中删除应用程序。 作为最佳实践,应将启动应用程序保持在最低限度。 如果不重要的应用程序会导致延迟,请考虑将其从启动应用程序列表中删除。

要对启动路径产生重大影响的问题进行故障排除和修复,则需要对应用程序延迟进行深入分析。 有关常见最佳实践的列表,请参阅开/关评估结果主题中时间关键任务的最佳实践

其他信息

MSDN:PBT_APMSUSPEND 事件