非Pageプールのメモリリーク調査

いつでもリモート接続できるようにPCは24時間起動しているのですが、最近どうも非ページが増える。
日々仕事が終わるとログオフしているのですが、だんだんとメモリを圧迫するようになります。消費量を見ているとメモリリークしているような動き
圧迫するといってもメモリは16Gつんでいるので微々たる物なのですが、なんか気になるのでどのドライバが悪いか調べてみた。

環境構築

まず、非ページを調査するには通常のツールでは調査が出来ないので以下のWidowsKitをインストールしましょう。
https://developer.microsoft.com/en-us/windows/hardware/windows-driver-kit

そうすると「C:\Program Files (x86)\Windows Kits\8.1\Tools\x86」の下に「poolmon.exe」がインストールされます。
早速起動して「P」で非ページに切り替え、「B」をおしてバイトでソートして状態を見ます。
メモリリークの調査なので、スナップショットを取りながら時間経過に合わせて変化を見ていきます。

初期状態 (非ページ377K)

 Memory:16703856K Avail:10192424K  PageFlts: 45698   InRam Krnl:15512K P:1333648K
 Commit:7214488K Limit:33405852K Peak:7517640K            Pool N:386452K P:1340480K
 System pool information
 Tag  Type     Allocs            Frees            Diff   Bytes       Per Alloc

 Cont Nonp        299 (   0)         0 (   0)      299 119050528 (     0) 398162
 File Nonp   21722082 (2024)  21619437 (1973)   102645 34309552 ( 17136)    334
 Ntfx Nonp     159171 (  57)     58352 (   0)   100819 33510608 ( 20064)    332
 MmCa Nonp     311617 (  62)    217467 (  11)    94150 24031792 ( 13056)    255
 SASC Nonp     384095 (  65)    285364 (  21)    98731 22115744 (  9856)    224
 NDam Nonp   10178797 (  62)  10171261 (  62)     7536 21542208 (     0)   285
 FMsl Nonp     153875 (   0)     52316 (   0)   101559 19499328 (     0)    19
 SAds Nonp      93946 (   0)     23333 (   0)    70613 11298080 (     0)    16
 SAHC Nonp     573641 (   4)    513005 (   4)    60636 10671936 (     0)    17
 Pool Nonp         21 (   0)        15 (   0)        6 6481488 (     0) 108024
 MmSd Nonp      46292 (   0)      6783 (   0)    39509 5057152 (     0)    128
 IWA1 Nonp          2 (   0)         0 (   0)        2 4276224 (     0) 213811
 IPRT Nonp       9482 (   0)      6753 (   0)     2729 4230912 (     0)   1550
 FSro Nonp      63606 (   0)     14218 (   0)    49388 3951040 (     0)     80
 CcSc Nonp     414102 (   1)    407959 (   1)     6143 3243504 (     0)    528
 Even Nonp    3772437 (  23)   3747492 (  27)    24945 3203072 (  -512)    128

ある程度時間がたってから再度見る(非ページ 585K)

 Memory:16703856K Avail:11056936K  PageFlts: 16348   InRam Krnl:15276K P:1370544K
 Commit:5581508K Limit:33405852K Peak:7517640K            Pool N:599476K P:1386248K
 System pool information
 Tag  Type     Allocs            Frees            Diff   Bytes       Per Alloc

 NDam Nonp   36289071 (5044)  36197666 (5026)    91405 235410352 ( 54512)   2575
 File Nonp   98943505 ( 330)  98864305 ( 350)    79200 26339936 ( -6720)    332
 Ntfx Nonp     456363 (   3)    379195 (   0)    77168 25332768 (  1056)    328
 MmCa Nonp     972089 (   4)    900970 (   5)    71119 18144160 (  -256)    255
 SASC Nonp     946229 (   4)    870851 (   1)    75378 16884672 (   672)    224
 FMsl Nonp     455619 (   3)    378491 (   0)    77128 14808576 (   576)    192
 Pool Nonp         34 (   0)        28 (   0)        6 12772944 (     0) 2128824
 SAHC Nonp    2474859 (  36)   2438128 (  36)    36731 6464656 (     0)    176
 SAds Nonp     262415 (   3)    223364 (   0)    39051 6248160 (   480)    160
 NDCM Nonp   23741528 (  14)  23731739 (2186)     9789 4862656 (-340032)    496
 IWA1 Nonp          2 (   0)         0 (   0)        2 4276224 (     0) 2138112
 FSro Nonp     110027 (   0)     59384 (   0)    50643 4051440 (     0)     80
 ViMm Nonp    3437661 (   0)   3432804 (   0)     4857 2947104 (     0)    606
 MmCi Nonp       9156 (   0)      3507 (   0)     5649 2755296 (     0)    487
 Even Nonp   15897548 ( 163)  15876868 ( 156)    20680 2657088 (   896)    128
 CcSc Nonp    1687317 (   1)   1682468 (   6)     4849 2560272 ( -2640)    528
 Thre Nonp     225296 (   1)    223367 (   4)     1929 2494576 ( -3888)   1293
 Mm   Nonp     905203 (   0)    905193 (   0)       10 2021920 (     0) 202192
 VoSm Nonp       1530 (   0)      1498 (   0)       32 1908320 (     0)  59635
 IWBX Nonp          3 (   0)         0 (   0)        3 1852560 (     0) 617520

行見てみるとだんだんとNDamが増えており怪しい。

ドライバーの調査

タグがわかったらドライバを調査。
タグ名からドライバを探すには強引に「findstr」で文字列検索。力技でいきましょう。
ドライバがあるディレクトリに移動して

C:\>cd C:\Windows\System32\drivers
C:\Windows\System32\drivers>findstr /m /l NDam *.sys
ndis.sys

悪さしているっぽいドライバーが見つかったのでこいつについて調べてみる。
ndis.sysはNetwork Device Interface Specificationフィルタドライバのことで、つまりネットワーク関係のデバイスっぽい。

さらにドライバクエリで見てみる

driverquery /V
モジュール名 表示名                 説明                   ドライバーの  開始モード 状態       ステータス 停止の受理  一時停止の受 ページ プ  コード(バ  BSS(バ リンク日時             パス                                             Init(バイ
============ ====================== ====================== ============= ========== ========== ========== =========== ============ ========== ========== ====== ====================== ================================================ ==========
NDIS         NDIS System Driver     NDIS System Driver     Kernel        Boot       Running    OK         TRUE        FALSE        397,312    348,160    0      2015/10/13 12:30:31    C:\Windows\system32\drivers\ndis.sys             24,576

確かに起動時から読み込まれて今も動いている。

メーカーのHPからネットワーク系ドライバーを落として来てあててみても更新されないしな、、、、うむむむむ
まあ適宜再起動すればよいかな。