优化性能和响应能力

客户期望拥有高性能且响应迅速的系统。 这包括从启动时间到用户与应用程序的流畅互动等广泛的场景。 分析性能问题需要大量专业知识和特定领域的知识。 Microsoft 提供的工具可以帮助你处理这个复杂的任务。

本指南介绍了用于测量、分析和解决关键领域性能问题的根本原因的过程。 主题包括:

  • 使用 Windows Performance Toolkit (WPT)

  • 捕获事件跟踪日志 (ETL) 跟踪

  • 启动、应用程序启动和 UI 延迟

  • CPU 和磁盘资源使用情况分析

  • 关键路径和等待分析

目标

本指南将展示如何执行以下任务:

  • 收集相关数据以分析任何系统上的性能问题

  • 了解分析过程,以查看 CPU 和磁盘等系统资源消耗

  • 确定在某些关键 Windows 方案中可能会影响系统响应速度的情况

工具

ADK 中的 Windows Assessment Toolkit 提供了一组称为“评估”的性能相关测试。 评估结果用于诊断潜在问题,使你开发的硬件和软件不仅响应迅速,而且对电池使用寿命、启动性能和关机时间的影响最小。 OEM/ISV/IHV 合作伙伴、爱好者以及社区的其他成员可以使用相同的评估,以建立一个通用框架来衡量、比较和审查质量的各个方面。

Windows Performance Toolkit 包含两个独立的工具:Windows Performance Recorder (WPR) 和 Windows Performance Analyzer (WPA)。 WPR 是一种功能强大的录制工具,用于为 Windows (ETW) 录制创建事件跟踪。 可以通过用户界面 (UI) 或命令行 (CL) 运行 WPR。 WPR 提供可用于选择要记录的事件的内置配置文件。 WPA 是一种功能强大的分析工具,它将灵活的 UI 与广泛的图形功能相结合,以及可透视并具有全文搜索功能的数据表。

快速启动行为

快速启动是在 Windows 8 中引入的,它是一个默认的启动行为。 关机过程已更新,现在包括以类似于休眠的工作方式将数据写入磁盘。 在启动期间,系统会经历下表中所述的阶段。

阶段 说明
BIOS 初始化 操作系统初始化 BIOS 所需的时间,包括预启动执行环境 (PXE)。
休眠文件读取 操作系统从磁盘读取休眠文件所需的时间。 休眠文件包含关机期间写入的所有系统上下文。
恢复设备 操作系统恢复设备并使它们重返活动电源状态所需的时间。
WinLogon 恢复 操作系统恢复 Winlogon 进程所需的时间。
资源管理器初始化 操作系统初始化 Windows shell (explorer.exe) 所需的时间。 当用户看到桌面或“开始”屏幕时,此阶段结束。
Post 开/关持续时间 Windows 在显示桌面之后、CPU 和磁盘资源进入空闲状态之前完成所有启动任务所需的时间。

有关快速启动行为的详细信息,请参阅 MSDN 上的开/关转换性能主题。

CPU 计划和线程

由于系统中处理器的数量有限,因此不能同时运行所有线程。 Windows 实现了处理器分时,这允许一个线程在处理器切换到另一个线程之前运行一段时间。 在线程之间切换的行为称为“上下文切换”,它是由称为“调度程序”的 Windows 组件执行的。 每个线程在任何给定时间都处于特定的执行状态。 Windows 使用与性能相关的三种状态:正在运行、就绪和正在等待。

正在执行的线程处于“正在运行”状态。 可以执行但当前未在运行的线程处于“就绪”状态。 由于正在等待特定事件而无法运行的线程处于“正在等待”状态。 下图说明了可能的线程转换。

显示可能的线程转换的示意图。

  1. 处于“正在运行”状态的线程通过调用等待函数(例如 WaitForSingleObject 或 Sleep (> 0))来发起向“正在等待”状态的转换。

  2. 正在运行的线程或内核操作准备好处于“正在等待”状态的线程(例如,SetEvent 或计时器到期)。

  3. 当正在运行的线程等待或达到其执行量程的末尾时,调度程序会调度一个处于“就绪”状态的线程进行处理。

  4. 当处于“正在运行”状态的线程被更高优先级的线程抢占或者当其量程结束时,调度程序会将其切换为“就绪”状态。

仅当用户等待线程完成操作时,线程状态才成为性能的一个重要因素。

有关 CPU 计划的详细信息,请参阅 MSDN 上的 CPU 分析主题。

练习

本指南包含以下练习。