シャドウコピーは実際にどれぐらいのページプールを消費していますか?

  こんにちは、プラットフォームサポートの徐です。   今回は、シャドウコピーとページプールの枯渇について話したいと思います。      Windows Server 2003 ファイルサーバ上で共有フォルダのシャドウ コピー(Shadow Copy for Shared Folder)機能を有効にした場合、既定で各対象ボリュームに最大 64 世代のシャドウコピーが作成される可能性があります。   これらのシャドウコピーは、作成時に System Volume Information フォルダの下にファイルとして保存され、[以前のバージョン] タブから実際に参照される際にシャドウコピーボリュームとしてファイルシステムにマウントされますが、その時にページプールなどシステムリソースを消費することがあります。   多数のユーザより異なるシャドウコピーを参照した場合には、大量のシャドウコピーボリュームをマウントする必要があり、これが原因でページプールなどのシステムリソースが圧迫される可能性があります。       なお、ファイルサーバ上で共有フォルダのシャドウコピー機能をプランニングする時に、ページプール、非ページプール及び仮想メモリの消費について考えるべきポイントが、以下の技術情報で紹介されています。   Scalability Factors for Shadow Copies http://technet.microsoft.com/en-us/library/cc755419(WS.10).aspx     また、関連する修正モジュールとして KB913648 が公開されており、このモジュールを適用することで、大量のシャドウコピーボリュームのマウントが原因でページプールが大量に消費される問題を抑えるために、利用可能なページプールのサイズが一定の閾値(既定で 80MB )を下回った場合、すべてのシャドウコピーボリュームが一時的にディスマウントされ、ページプールを開放させる機能が実装されます。   A new Volume Shadow Copy Service update is now available that…

0

X64 の TrapFrame は信用できない?

こんにちは、八木です。 今日はデバッガに表示されるちょっと気になるメッセージについて書きたいと思います。  X64のメモリダンプをデバッガで開き、トラップフレームを表示させると、こんな注意書きが表示されます。  9: kd> .trap 0xfffff880023ae150 NOTE: The trap frame does not contain all registers. Some register values may be zeroed or incorrect. rax=fffff880023ae418 rbx=0000000000000000 rcx=fffffa807c446788 rdx=00000000c0000240 rsi=0000000000000000 rdi=0000000000000000 rip=0000000000000000 rsp=fffff880023ae2e8 rbp=0000000000000000 r8=0000000000000000  r9=0000000000000000 r10=fffffa80323d5b00 r11=0000000000000002 r12=0000000000000000 r13=0000000000000000 r14=0000000000000000 r15=0000000000000000 iopl=0         nv up ei ng nz na po nc 00000000’00000000 ??              ???  トラップフレームは、STOP エラーが発生したり割り込みが発生した場合など、その時点の…

0

Pool が枯渇した場合の調査方法

  こんにちは。プラットフォーム サポートの大貫です。   今回は、Pool が枯渇する現象のトラブル シューティングについてお話したいと思います。 Pool の説明やトラブル シューティングなどについては、以下のブログでも紹介されています。   – リソース不足について – 第 1 回 – リソース不足について – 第 2 回 – リソース不足について – 第 3 回   この内容を踏まえて、Pool が枯渇している環境をデバックしてみます。調査する環境は、2 つあります。環境は Windows 7 です。 まずは、ひとつ目の環境から。   – 環境 1 – Paged Pool 枯渇    まずは、!vm コマンドを実行します。この結果から Paged Pool の枯渇が確認でき、かなりの回数の Pool の確保が失敗しています。   1:…

0

x64 のデバッグについて

  こんにちは、プラットフォーム サポートの近藤です。   今回は、最近良く見る x64 コードのデバッグについてお話します。     – x64 呼出規約について   x64 上では、全ての呼び出しが従来の FASTCALL に似た呼出規約が用いられています。ここでは呼出規約の詳細は説明しませんが (興味ある方は記事末尾の参考資料をご覧ください)、x64 アーキテクチャで増えたレジスタを多く使用するようになっています。引数に関しましては、基本的に 4 つ目の引数までが順に rcx、rdx、r8、r9 レジスタで渡され、残りはスタックに保存されます。このように、多くの場合引数がレジスタで渡されているため、デバッグ時には注意が必要です。     では、実際の動きを見てみましょう。 今回は下記テスト プログラムをデバッグしながら進めていきます。   ================================= __declspec(noinline) void func6(DWORD64 a, DWORD64 b, DWORD64 c, DWORD64 d, DWORD64 e, DWORD64 f) {         printf(“Func6: 0x%x 0x%x 0x%x 0x%x 0x%x 0x%x\n”, a, b,…

0