Ask CORE

Microsoft Japan Windows Technology Support

Windows 7 / Windows Server 2008 R2 環境でのDynamic Cache Service 利用について

こんにちは。Windows プラットフォームサポートの新川です。  以前、リソース不足について – 番外編1 (64bit 環境での注意点) という記事で、64 bit 環境でシステムキャッシュ (RAMMap で確認した場合は Mapped File や Metafile)  で物理メモリを大量に使用してしまう動作についてご紹介しました。この記事の中では、Windows 7 以降の OS ではシステム  キャッシュ周りのデザイン変更が行われているとご説明しましたが、やはり Windows Server 2008 R2 でも同様の状況が発生するとのお問い合わせをいただく事があります。  Windows 7 以降の OS では、システムキャッシュをより早く解放出来るようになっているので、物理メモリの大半をシステムキャッシュが占めていてもメモリ確保には問題がない場面も多いのですが、それでも一度にまとまった要求が行われた場合などには「メモリ不足」のエラーになってしまう事があります。対処策としては、システムキャッシュのワーキングセットの閾値を指定する事になりますが、これを行うためのツールとして弊社が公開している Microsoft Windows Dynamic Cache Service では、Windows 7 以降 (OS バージョン 6.1 以降) では意図的に動作しないように制限がかけられているため、これを解除してビルドし直す必要があります。今回の投稿では、Windows Server 2008 R2 環境でMicrosoft Windows Dynamic Cache Serviceを利用する方法についてご紹介します。 [2014 年更新]最新版の… Read more

ゲスト OS の物理メモリが大量に使われている

こんにちは、Windows サポートの新川です。  ゲスト OS のメモリ使用状況について、以下のご質問をいただく事があります。 タスクマネージャーでパフォーマンスを見ていたら、物理メモリが大量に使われているけれども、プロセス タブでそんなに物理メモリを使っているプロセスが見当たらない パフォーマンス モニタを見ていると、突然 Memory\Available Mbytes が大きく減ったけど、その時間帯の Memory カウンタや Process カウンタを見ても、ほとんど物理メモリを使っているものが見つからない。  これらは、そのゲスト OS のメモリ管理を “動的” に設定されているのであれば、バルーニング と呼ばれる仕組みによって発生しているものが大半を占めます。今回は、バルーニングの見え方について少しお話しします。    ■ Dynamic Memoryの実装 まずはバルーニングの前に Dynamic Memory についての説明です。Windows Server 2008 R2 SP1 より、Hot Add Memory が可能なゲスト OS に対して、Hyper-V ホストからシステム稼働中に動的に物理メモリを割り当てる事が可能になりました。この機能により、ゲスト OS に割り当てられるメモリが動的に最適化出来るようになっています。ただし、Dynamic Memory のゲスト OS の要件には、Hot Add Memory というのはありますが、Hot Remove Memoryというのはありません。つまり、ゲスト OS は “動的に物理メモリを追加”… Read more

リソース不足について – 番外編1 (64bit 環境での注意点)

こんにちは。 Windows テクノロジー サポートの新川です。   “リソース不足について” という内容について、以前田辺と丸山から説明させていただきました。   リソース不足について 第 1-3 回 http://blogs.technet.com/askcorejp/archive/tags/_EA30BD30FC30B9300D4EB38D_/default.aspx    今回はその番外編で、64 bit 環境でも非ページ プールなどのリソース不足が発生してしまう可能性についてお話したいと思います。   ※ 下記は Windows Server 2003 の動作を中心に記述しており、Windows Server 2008 まで同様の問題が起こりえます。 ※  Windows 7 / Windows Server 2008 R2 以降は、この問題も踏まえてメモリ管理のデザインが大きく変更されていますので、改善されています。 ※ 該当する OS など詳細については、KB 976618 もご参照ください。 (情報更新 2011年 10月) 残念ながら、Windows Server 2008 R2 や Windows Server 2008 R2 SP1 環境でも、やはりこの問題に遭遇してしまう事が確認されました。詳細については以下もご参照ください。… Read more

リソース不足について – 第 3 回

こんにちは。 Windows テクノロジー サポートの丸山です。   第 1 回、および第 2 回では、リソース不足の問い合わせにおいて、原因となることが多いページプール、非ページプールの不足についてお話をさせていただきました。   今回は、ページプール、非ページプールの上限値の確認方法と、Windows Vista や 64-bit Windows についてお話します。   ページプール、非ページプールの上限値確認方法について   まず、パフォーマンスモニタでは、以下の値が確認可能であることをお話ししました。   – Pool Nonpaged bytes – Pool paged bytes (この値は、ページアウトされた分も含めた、ページプールの全体サイズを示しています) – Pool paged resident bytes (この値は、ページプールの中でも、物理メモリ上にあるメモリサイズを示しています)   しかしながら、パフォーマンスモニタでは、これらの最大サイズを確認することができません。 カーネルデバッガを使用して、!vm コマンドを実行することで、値を確認することができます。 ただし、Windows Vista 以降の OS をお使いの場合では、デバッガを接続するためにWindows をデバッグモードで起動する必要があります。ちょっと面倒ですね。   そこで、代わりに今回は Process Explorer ツールを使用した方法についてご紹介します。 Process Explorer では、シンボルの設定を行うことで、現在確保されているプールのサイズや、その上限値を確認することができます。… Read more

リソース不足について – 第 2 回

こんにちは。 Windows テクノロジー サポートの田辺です。 リソース不足について – 第 2 回 では、ページ プールと非ページ プールについて もう少し掘り下げて見ていきたいと思います。 第 1 回と比較をすると細かい内容となりますが、トラブルシュートを行う上では欠かせない要素もいくつかありますので、がんばって進めていくことにしましょう。     割り当てられる領域につける名札について   ページ プールおよび非ページ プール内の領域が、各要求元のドライバに割り当て (Allocate) られる際には、Tag と呼ばれる 1 ~ 4 文字の名札がつけられます。 大抵この Tag には 要求元のドライバにより一意の文字が指定されるので、ドライバのどのような動作の際に確保されたプール (ページ プールもしくは 非ページ プール) なのかを判断する事ができ、この Tag 毎に使用されている値を見る事でプールの枯渇が発生した場合に、どのドライバが “限りあるリソース” を消費しているのかを追跡する事が可能となるのです。ただし、Tag そのものから確保されたプールがページ プールもしくは非ページ プールなのかを判別する事はできません。多くの場合、ページ プールと非ページ プールで共通の Tag が使用されます。   いくつか例を挙げてみますと、、、   MmSt –… Read more

リソース不足について – 第 1 回

こんにちは。 Windows テクノロジー サポートの田辺です。   システムの管理を行っていると必ずと言って良い程直面するのが、システムのリソース不足だと思います。 システム リソースって?と聞かれるとまず思いつくのが、物理メモリになるかと思いますが、システムで使用しているリソースは、実は物理的に搭載しているメモリだけではありません。   そこで今回はシステム リソースの中からも、デバイスの開発者やサポート業務等に従事している方以外にはあまり知られていないような、ページ プールや 非ページ プールといったリソースをピックアップして紹介させていただきたいと思います。     ページ プールと非ページ プールについて   一言で言うと、ページ アウトしないプール領域とページ アウトする事が出来るプール領域という事になりますが、言葉だけだとさっぱり分かりませんね。 そこで漠然とですが説明しますと、、    – ページ プール   ページ プールとは、カーネル モードで動作するドライバによって確保される仮想メモリ空間で、OS コンポーネントやアプリケーションにより利用される。 ページ プールはページング ファイルへの書き出し (ページ アウト) を行うことが可能。 ページ アウトが可能なため、確保されているページ プールが全て物理メモリ上に存在しているわけでは無い。    – 非ページプール   ページ プールとは異なり、ページ アウトが行われない領域。   となります。   ページ プール、非ページ プールの用途は多岐に渡りますが、実際にプール領域を比較的多く使用するモジュールとしては、OS モジュールのほか、I/O… Read more