这既是一篇问题解决帖,也是一篇阶段性的求助记录。

首先在这里说明一下笔者的英伟达驱动版本是Game ready的591.59,window更新为Windows 11, version 24H2

由于个人使用习惯的原因,我平时很少对电脑进行关机操作,笔记本大多数时间处于睡眠状态。起初并未在意,但在最近几周里,我逐渐发现每次打开电脑后系统异常卡顿,甚至偶尔会出现自动重启的情况。

最开始我怀疑是某些流氓软件在后台偷偷运行,占用了大量 CPU 或内存资源。然而打开任务管理器后却发现,进程列表中并不存在明显异常的高占用程序,但整体内存使用率却长期维持在 95% 左右。

(类似如此在并未打开一些大型占用软件日常占用高达80%以上)

进一步查看“性能”选项卡后,问题逐渐浮出水面:非分页缓冲池(Non-Paged Pool)占用高达 12GB,而我的设备总运行内存仅为 16GB。这意味着大量内存被内核态长期占用,却无法被正常回收。

(类似不过这是睡眠5小时的非分页占用,如果是一整晚会飙升到12g甚至以上直到99%占用)

在向 AI 及相关技术社区求助后,基本可以确认这并非普通应用程序问题,而是严重的驱动层内存泄露,常见原因包括网卡驱动、虚拟化组件或某些内核级软件异常。本篇文章也正是围绕这一问题的完整排查与解决过程展开。

在本次问题排查过程中,我主要借助了两个工具:RamMap 和 PoolMon。

RamMap 是一款由 Microsoft Sysinternals 提供的内存分析工具,用于直观展示 Windows 对物理内存的分配情况。通过 RamMap,可以清晰地看到系统中各类内存(如 Standby、Modified、Nonpaged Pool 等)的实时占用状态。除了用于分析问题本身,在实际使用中,我也会通过 RamMap 释放部分可回收的运行内存,其效果往往比一些功能冗余、原理不明的第三方“内存清理”或杀毒软件更加直接和可靠。

RamMap 的官方下载地址如下:
https://learn.microsoft.com/en-us/sysinternals/downloads/rammap

另一个关键工具是 PoolMon。需要注意的是,PoolMon 并不是一个独立下载的软件,而是包含在 Windows Driver Kit(WDK) 中。微软官方文档中对 WDK 的安装环境、依赖关系以及使用方式都有较为详细的说明。

由于我的系统中已经安装了 Visual Studio 2022,因此只需额外安装对应版本的 Windows SDK 和 WDK 即可。SDK 的安装相对简单,直接选择最新版本并使用默认安装路径即可;而 WDK 在安装时则需要特别留意其安装目录,因为后续在命令行中调用 poolmon 工具时会用到该路径。本次排查中,我使用的同样是 WDK 的默认安装路径。

WDK 官方下载地址:
https://learn.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk

借助 RamMap 的分析结果可以看到,系统中 Nonpaged Pool(非分页缓冲池) 的占用率明显高于其他内存类型。需要强调的是,非分页缓冲池直接分配于物理内存中,其内容不会被交换到磁盘,因此属于典型的内核态内存。当 Nonpaged Pool 成为内存占用的主要来源时,说明系统内核态内存正在被异常大量占用,而这部分内存又无法通过系统机制自动回收

(Nonpaged Pool占用异常)

(需要提一嘴的是rammap的empty working sets可以用来释放运行内存)

由于非分页缓冲池属于内核态内存,其分配和释放完全由驱动程序或内核组件控制,想要进一步定位问题源头,就必须借助更底层的调试工具PoolMon ,它是 Windows 提供的内核内存池监视工具,能够实时统计不同内存池标签(Pool Tag)的分配情况,从而帮助我们判断是否存在异常的内存占用行为。

在安装好 WDK 后,以管理员权限打开命令提示符,切换到 PoolMon 所在目录,笔者是默认地址C:\Program Files (x86)\Windows Kits\10\Tools\10.0.26100.0\x64在里面有个poolmon.exe的程序,我们win+r输入cmd打开命令窗口cd到这个地址

C:\Users\ACER>cd C:\Program Files (x86)\Windows Kits\10\Tools\10.0.26100.0\x64

C:\Program Files (x86)\Windows Kits\10\Tools\10.0.26100.0\x64>poolmon.exe

执行以下命令启动工具:

poolmon.exe

启动后,PoolMon 会以表格形式显示当前系统中各类内存池的分配情况。为了聚焦问题,我们可以通过以下快捷键进行筛选:

按 P 键,仅显示 Nonpaged Pool
按 B 键,按照已分配字节数(Bytes)进行排序

此时,列表顶部往往可以看到某个或少数几个 Pool Tag 占用了异常大量的非分页缓冲池内存。例如:

可以明显看到当前系统中占用非分页缓冲池最多的 Pool Tag 为 rtlf

为了进一步确认 rtlf Pool Tag 的具体来源,我根据 AI 给出的排查建议,对可能相关的 Pool Tag 进行了反向搜索。ai 建议关注 Rpp 与 rtlf,是因为在以往的 Windows 非分页缓冲池泄露案例中,这一类 Tag 常与网络相关驱动,并且占用率最高便是rtlf,尤其是 Realtek 系列网卡驱动存在较高关联度。我们打开一个新的命令行窗口,输入

findstr /s /m RPp C:\Windows\System32\drivers\*.sys
findstr /m /l "RTLF" C:\Windows\System32\drivers\*.sys

对 RTLF Pool Tag 的搜索结果,一个想法是:非分页缓冲池异常增长,来源于 Realtek 网卡相关驱动在内核态发生了内存泄露,因为rtf64x64.sys文件名高度符合 Realtek 网络适配器驱动命名规则,然而,比较遗憾的是,在后续尝试中,我并未找到一个能够从根本上彻底解决该内存泄露问题的有效方案。在此期间,我尝试过的解决方式包括但不限于:卸载并重新安装网卡驱动(卸载网卡驱动重启电脑让电脑重新拉取驱动)

以及尝试关闭 Windows 系统中的 Network Data Usage(NDU,网络数据使用监控) 服务,具体操作如下:

sc config ndu start= disabled

但从实际效果来看,上述措施并未显著改善非分页缓冲池异常增长的问题。尽量避免系统长时间睡眠或者重启来释放资源正如文章开头所提到的,这篇文章不仅是一份问题排查与记录,也是一篇仍在持续中的求助贴。(已解决)

另外可以检查一下:

诸位如果遇到类似的问题可以求助claude这类框架下的智能体(deepseekv4pro)他会帮你检查相关内核泄露问题,以前笔者只能定位到是网卡泄露现在算是找出泄露问题了,可能是之前学校学习安装的,各位也可以参照笔者的相关详情去询问自己的智能体。

惠普如果跟我一样是RTF暴增可以试试这个:

  具体操作:

  1. 在 OMEN Gaming Hub 中关闭“网络助推器 / Network Booster”。
  2. 在 WLAN、以太网等网络适配器属性中,取消勾选:
  Realtek LightWeight Filter (NDIS6.40)
  3. 当时还以管理员权限执行了:

  Disable-NetAdapterBinding -Name "WLAN" -ComponentID nt_rtf64
  Disable-NetAdapterBinding -Name "以太网" -ComponentID nt_rtf64
  Disable-NetAdapterBinding -Name "本地连接" -ComponentID nt_rtf64

  问题驱动是:

  服务:rtf64
  文件:C:\Windows\System32\drivers\rtf64x64.sys
  Pool Tag:RTLF
  来源:OMEN Gaming Hub Network Booster / Realtek Network SDK

然后OMEN大概率是网络助推器识别不到网卡尝试卸载重装:OMEN Gaming Hub清理重装教程 - 惠普支持社区 - 1326823

查看这篇文章,如果没问题的话全部设置完成后会逐渐返还给非分页缓冲池的占用,正常重启就没事了。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐