非分页池的消耗
我最近在处理一个问题,服务器在几天内耗尽了NonPagedPool。通常,我们只需要使用像PoolMon这样的工具来识别有问题的pool标记,然后使用本文中的方法找到使用该pool标记的驱动程序。然而,让这个案例有趣的是pool标记,而且我们无法使用常规方法识别驱动程序。你一会儿就会明白我的意思了。支持给我提供了服务器处于状态时的内核转储,这就是我发现的。
让我们先看看虚拟内存的使用情况:
2: kd> !vm*** Virtual Memory Usage ***Physical Memory:851420 ( 3405680Kb)
Page File: \??\C:\pagefile.sys
Current:3584000 Kb Free Space: 3568552Kb
Minimum:3584000 Kb Maximum: 3584000Kb
Available Pages:573277 ( 2293108Kb)
ResAvail Pages:800628 ( 3202512Kb)
Locked IO Pages:1067 ( 4268Kb)
Free System PTEs:25102 ( 100408Kb)
Free NP PTEs:335 ( 1340Kb)
Free Special NP:0 ( 0Kb)
Modified Pages:22 ( 88Kb)
Modified PF Pages:22 ( 88Kb)
NonPagedPool Usage:31369 ( 125476Kb) ß Very high
NonPagedPool Max:31986 ( 127944Kb)********** Excessive NonPaged Pool Usage *****PagedPool0 Usage: 19071 ( 76284Kb)
PagedPool1 Usage: 735 ( 2940Kb)
PagedPool2 Usage: 747 ( 2988Kb)
PagedPool3 Usage: 720 ( 2880Kb)
PagedPool4 Usage: 746 ( 2984Kb)
PagedPool Usage:22019 ( 88076Kb)
PagedPool Maximum:38912 ( 155648Kb)********** 3 pool allocations have failed **********
- 上一篇: 仅通过转储来排除内存泄漏
- 下一篇: 使用Java中的InputStream读取文件数据