Windows 上的 LSAISO 进程中 CPU 使用率过高

本文提供了 LSAISO 进程在运行 Windows 的计算机上遇到 CPU 使用率过高的问题的解决方法。

适用于:Windows 10 - 所有版本、Windows Server 2016、Windows Server 2019
原始 KB 编号: 4032786

症状

LSAISO (LSA 独立) 进程在运行 Windows 10、Windows Server 2016 或更高版本的计算机上遇到高 CPU 使用率。

原因

在 Windows 中,LSAISO 进程作为独立用户模式 (IUM) 进程在新的安全环境中运行,该环境称为虚拟安全模式 (VSM) 。

尝试将 DLL 加载到 IUM 进程、注入线程或提供用户模式 APC 的应用程序和驱动程序可能会破坏整个系统的稳定。 这种不稳定可能包括“症状”部分中提到的高 LSAISO CPU 方案。

解决方法 1:使用消除过程

某些应用程序通常 ((例如防病毒程序)) 将 DLL 或队列 APC 注入 LSAISO 进程。 这会导致 LSAISO 进程遇到高 CPU 使用率。

对于故障排除,无法将工具附加到 IUM 进程。 这会阻止你在 LSAISO CPU 高峰期间使用 Windows 调试工具或 WPA\XPERF 捕获堆栈跟踪。 因此,此方案中的最佳故障排除方法是使用“消除过程”方法。 为此,请禁用应用程序和驱动程序,直到 CPU 峰值得到缓解。 确定导致该问题的软件后,请与供应商联系以获取软件更新。 可以引用以下 MSDN 主题中列出的 ISV 建议:

独立用户模式 (IUM) 进程

注意

在测试 CPU 峰值时禁用可疑软件和驱动程序后,此方法可能需要重新启动。

解决方法 2:检查排队的 APC

下载适用于 Windows (WinDbg、KD、CDB、NTSD) 的免费调试工具。 这些工具包含在 Windows 驱动程序工具包 (WDK) 和 Windows 驱动程序工具包 (WDK) 中。 然后,按照以下步骤确定哪个驱动程序正在将 APC 排队到 LSAISO:

  1. 重现 CPU 峰值时,请使用以下 Sysinternals 网站中的 NotMyFault.exe 等工具生成内核内存转储:

    Sysinternals 套件

    注意

    不建议使用完整的内存转储,因为如果在系统上启用了 VSM,则需要解密。 若要启用内核转储,请执行以下步骤:

    1. 在 控制面板 中打开“系统”项,然后选择“高级系统设置”。
    2. 在“系统属性”对话框的“高级”选项卡上,选择“启动和恢复”区域中的“设置”。
    3. “启动和恢复”对话框中的“写入调试信息”列表中选择“内核内存转储”。
    4. 记下在步骤 5 中使用的 转储文件 位置,然后选择“ 确定”。
  2. 从 Windows 调试工具中打开 WinDbg.exe 工具。

  3. 在“ 文件 ”菜单上,单击“ 符号文件路径”,将 Microsoft 符号服务器的以下路径添加到“ 符号路径 ”框中,然后选择“ 确定”
    https://msdl.microsoft.com/download/symbols

  4. 在“ 文件 ”菜单上,单击“ 打开故障转储”。

  5. 浏览到步骤 1d 中记录的内核转储文件的位置,然后选择“ 打开”。 检查 .dmp 文件的日期,确保它是在此故障排除会话期间新创建的。

  6. “命令” 窗口中,键入 !apc,然后按 Enter。

    显示 !apc 的内核转储文件的命令框的屏幕截图。

    输出应类似于以下屏幕截图。

    !apc 命令的输出的屏幕截图。在此示例中,名为 ProblemDriver.sys 的驱动程序列在 LsaIso.exe 下。

  7. 在结果中搜索 LsaIso.exe。 如果在 LsaIso.exe (下列出了名为 <ProblemDriver>.sys 的驱动程序,如步骤 6) 输出的示例屏幕截图所示,请与供应商联系,然后参考 IUM) Process 主题中列出的独立用户模式 ( 建议的缓解措施。

    注意

    如果在 Lsaiso.exe下未列出驱动程序,则表示 LSAISO 进程没有排队的 APC。

更多信息

VSM 使用称为虚拟信任级别的隔离模式 (VTL) 来保护 IUM 进程 (也称为信任) 。 IUM 进程(如 LSAISO)在 VTL1 中运行,而其他进程在 VTL0 中运行。 VTL1 中运行的进程的内存页受到保护,免受 VTL0 中运行的任何恶意代码的影响。

在Windows 10和Windows Server 2016之前,本地安全机构子系统服务 (LSASS) 进程只负责管理本地系统策略、用户身份验证和审核,同时它还处理敏感的安全数据,例如密码哈希和 Kerberos 密钥。

为了利用 VSM 的安全优势,在 VTL1 中运行的 LSAISO 信任Let 通过 RPC 通道与在 VTL0 中运行的 LSAISO 进程进行通信。 LSAISO 机密在发送到 LSASS 之前进行加密,LSAISO 的页面受到保护,使其免受 VTL0 中运行的任何恶意代码的影响。