跳转至

LatencyTest

  • 菜单路径:「选项 / 工具 / LatencyTest」

测试版

LatencyTest 目前位于 Process Lasso 测试版(18.5.0.13 及之后)中,将随下一个正式版发布。独立的 LatencyTest 同样是免费的测试版。

LatencyTest 用于找出导致音频爆音、噼啪声与游戏卡顿的驱动程序。它会测量每个驱动程序的中断例程运行了多久,以及实时线程在 Windows 唤醒它之后等待了多久才真正运行。然后用一句话告诉您这台电脑是否可能有问题,以及是哪个驱动程序造成的。

LatencyTest 包含在免费版中。它和 Process Lasso 其他部分一样需要管理员权限,且自身不安装任何驱动:它通过一个专用跟踪会话读取内核自身的跟踪事件。

LatencyTest 以独立程序(LatencyTest.exe)运行,沿用 Process Lasso 的语言与主题,并且在 Process Lasso 窗口关闭后继续运行。同一时间只能运行一个 LatencyTest。它也可以单独免费获取(安装程序或便携版 zip),供没有安装 Process Lasso 的电脑使用:请见 bitsum.com 上的 LatencyTest。

LatencyTest 只在其窗口可见时测量。最小化窗口会暂停测试,恢复窗口则继续测试,关闭窗口会结束跟踪会话,因此在您不看它时不会带来任何额外开销。

LatencyTest 窗口,驱动程序选项卡

运行测试

  1. 打开「选项 / 工具 / LatencyTest」。窗口一旦打开,测试即开始。
  2. 以问题出现时的相同方式使用电脑:玩那个游戏、运行那段音频工作,或开始那个似乎会引发问题的下载或复制。让测试至少运行几分钟,因为许多问题是间歇性的。
  3. 阅读窗口顶部的结论,以及其下方指出原因的那句话。
  4. 查看 驱动程序 选项卡,看看哪些驱动程序运行得最久。

停止 会暂停测试并保留结果,开始 继续测试,重置 清除结果。

结论

结论是以下三句话之一:

  • 良好:「这台电脑应当能够顺畅处理实时音频与游戏,不会出现爆音或卡顿。」
  • 警告:「这台电脑在实时音频中可能偶尔出现爆音,或在游戏中偶尔卡顿。」
  • 较差:「这台电脑很可能在实时音频中出现爆音,并在游戏中卡顿。」

其下方的那句话解释是哪项测量决定了结论:它会指出中断服务例程(ISR)或延迟过程调用(DPC)耗时最长的驱动程序,或者说明实时线程等待过久的频率。

测量项 警告 较差
单次最长的 ISR 或 DPC 500 µs 及以上 2,000 µs(2 ms)及以上
1 ms 及以上的线程唤醒 每分钟超过 6 次
3 ms 及以上的线程唤醒 任意一次 每分钟超过 6 次

ISR 与 DPC 以单次最长者判定,因为某个例程运行过久就说明该驱动程序有问题。线程唤醒则以「慢得有多频繁」判定:空闲的电脑偶尔会晚唤醒某个休眠核心,而孤立的一次慢唤醒很少会造成可听见的爆音。在第一分钟内,速率显示为计数。

LatencyTest 测量什么

  • 中断服务例程(ISR): 设备发出中断时驱动程序立即运行的代码。在它结束之前,该 CPU 上不会运行其他任何东西,因此过长的 ISR 会拖慢一切,包括音频。
  • 延迟过程调用(DPC): 驱动程序从其 ISR 中安排的后续工作,例如处理收到的网络数据包。DPC 同样先于该 CPU 上的任何线程运行,因此过长的 DPC 是音频爆音最常见的原因。
  • 线程唤醒延迟: 高优先级线程像音频线程等待下一个缓冲区那样,等待一个 1 ms 定时器。LatencyTest 测量从 Windows 使该线程就绪到它真正运行之间的时间。
  • 硬页面错误(可选): 勾选「包含硬页面错误」后,LatencyTest 还会按进程统计内存需要从磁盘读回的频率。持续发生页面错误的进程可能停滞,即便所有驱动程序都正常。勾选或取消勾选该框会重新启动跟踪会话。

ISR 与 DPC 的时间是排他的,与 Windows Performance Analyzer 相同:当某个 ISR 打断了同一 CPU 上的 DPC 时,其时间只计在 ISR 所属的驱动程序上。

选项卡

选项卡上方有三个图块显示决定结论的数字:最长的 DPC 与最长的 ISR(各带所属驱动程序),以及每分钟有多少次线程唤醒耗时 1 ms 或更久。每个图块的彩色边缘显示各自属于良好、警告还是较差。

  • 概览: 最近五分钟内每秒的最高 ISR、DPC 与线程唤醒延迟图表,警告与较差区间以色块标示,并附有整个测试的摘要。图表刻度适配最近一分钟;把鼠标滚轮悬在图表上可放大或缩小刻度,双击图表(或单击 重置)可回到自动刻度。
  • 驱动程序: 所有运行过 ISR 或 DPC 的驱动程序,含次数、单次最长例程、总时长,以及有多少次超过 500 µs。超过警告或较差阈值的时间会被着色,决定结论的驱动程序会高亮,框架驱动程序则会淡显。单击列标题可排序。
  • CPU: 按逻辑处理器给出相同的统计,以及各自的最高线程唤醒。在混合架构 CPU 上,核心类型列显示性能核与能效核。
  • 硬页面错误: 勾选该选项后,列出发生硬页面错误的进程。

修复有问题的驱动程序

当某个驱动程序在 驱动程序 选项卡中格外突出时:

  1. 更新该驱动程序,尽量从电脑或设备厂商网站获取,而不是通过 Windows 更新。网络、Wi-Fi、显卡、音频与存储驱动是常见的元凶。
  2. 右键单击该驱动程序并选择 中断设置...(或双击它)。这会打开「中断相关性策略」并选中该驱动程序的设备,您可以把它的中断移到游戏或音频软件不使用的 CPU 上。
  3. 如果该设备并非必需,可在设备管理器中禁用它,然后重新运行测试以确认差异。

右键单击驱动程序还可以使用 打开文件位置 与 属性。

框架驱动程序

有些 Windows 驱动程序会替其他驱动程序运行中断与 DPC 例程,因此它们的时间无法归到某个设备上:Wdf01000.sys、ndis.sys、storport.sys、dxgkrnl.sys、tcpip.sys、ntoskrnl.exe、hal.dll、ucx01000.sys、usbport.sys、hidclass.sys、ks.sys、portcls.sys、ataport.sys 与 scsiport.sys。当其中之一排在列表顶部时,原因通常是使用它的某个设备的驱动程序:

  • ndis.sys 与 tcpip.sys: 某个网络或 Wi-Fi 适配器。试试适配器厂商的最新驱动,或禁用该适配器后测试。
  • Wdf01000.sys: 许多现代驱动程序都建立在这个框架之上,包括某些网络适配器。查看测试期间哪些设备比较繁忙。
  • storport.sys: 某个存储控制器或硬盘。
  • dxgkrnl.sys: 某个显卡。

对框架驱动程序选择 中断设置... 时,会给出上述说明。

报告

复制报告 会把结论、摘要与所有表格的文本报告复制到剪贴板,可直接粘贴到论坛帖子或支持请求中。保存报告... 会把同一份报告保存为文本文件,或供脚本使用的 JSON 文件。

说明

  • 在 Windows 8 及之后,LatencyTest 使用自己的专用跟踪会话,因此可以与 LatencyMon、Windows Performance Recorder 和 xperf 同时运行。Windows 7 只有一个内核跟踪会话:如果有其他工具正在使用它,LatencyTest 会给出提示,并且不去动那个工具的会话。
  • 远程桌面会话在某些电脑上会抬高线程唤醒延迟。为获得最有代表性的结果,请在电脑本机上运行测试。
  • 结果的好坏取决于负载:对空闲电脑的测试,说明不了游戏中出现的问题。