再次关闭 Windows NT Kernel Logger
今天在资源监视器里看到 System(PID 4)一直往 C:/Windows/System32/LogFiles/WMI/NT Kernel Logger.etl 写入,速率约 1.2 MB/s。翻了下日记,原来之前就处理过同一个问题,更早还关过其他诊断和跟踪服务:
这次让 Codex 只读排查,logman query "NT Kernel Logger" -ets 确认会话正在运行,文件采用循环覆盖,上限 100 MiB。所以文件大小不变也照样会一直写盘。wpr -status 则显示没有正在进行的 WPR 录制。
启动来源是注册表 HKLM/SYSTEM/CurrentControlSet/Control/WMI/GlobalLogger,其中 Start = 1,EnableKernelFlags = 0x4,LogFileMode = 2,MaxFileSize = 100。当前会话的配置也能对应上:开机自动启动,记录 EXE/DLL 的模块加载事件,以循环模式保存。抽取的 10,000 条记录中,9,998 条属于模块加载、卸载,频繁出现 ntdll.dll、kernel32.dll 等系统 DLL。这些记录由内核写入,所以磁盘活动算在 System 身上。
微软文档说明,GlobalLogger 的 Start = 1 会在下次开机时启动跟踪,设置 EnableKernelFlags 后会话会改名为 NT Kernel Logger;事件标志说明中的 0x4 对应模块加载跟踪。至于最初是哪个软件开启的,或者之前关过之后又被谁打开,目前还查不到。
Codex 直接停止会话和修改注册表都遇到了权限不足,最后我在管理员 PowerShell 中执行:
logman stop "NT Kernel Logger" -ets
Set-ItemProperty -LiteralPath 'HKLM:/SYSTEM/CurrentControlSet/Control/WMI/GlobalLogger' -Name Start -Value 0 -Type DWord执行后,活动会话列表里已经没有 NT Kernel Logger,注册表的 Start 也变成了 0。22:43:11 到 22:43:31 每隔 5 秒采样一次,文件大小一直是 104,857,600 字节,最后写入时间停留在 22:41:18,没有再观察到该文件持续写入。日志文件保留着,开机自动启动配置已经关闭,还没有重启观察。
Codex 遗留的临时目录
发现 R:/TEMP 里堆了很多以 .tmp 开头的空目录,操作 Codex 时还会继续新增。查了一圈,发现和 Codex 的 NodeREPL 有关,已有症状吻合的 Issue: