いつでもリモート接続できるように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からネットワーク系ドライバーを落として来てあててみても更新されないしな、、、、うむむむむ
まあ適宜再起動すればよいかな。