Hkey_Local_Machine\System\CurrentControlSet\Control\SessionManager\MemoryManagement
 

私のPCはどこかで述べたようにメモリー24GBのNotePCでWindows8.1である。(マウスコンピュータ製)
そのなかのRegeditで題記を詳しく見てみようと思う。

    
  
  (画像はクリックすると、別ページに原寸大で表示されます)

01)  ClearPageFileAtShutDown (値 当方は0)
         シャットダウン時にPageFile(仮想メモリ)をクリアする場合はDword値を1に、
         クリアしない場合は0にしておく。
         ページング ファイル内のデータには、パスワードまたは他の機密情報が含まれている
         可能性がある。
         小生のPCは値0である。(いじってはいない)個人用PCであり、特に他人がパスワー
         ドなどを盗むことは想定していないともいえる。
         また、1にすると、シャットダウンに多少の時間がかかる。 通常(0の時)5秒31だが、
         1にするとなんと57秒71かかった。ただし、二つぐらいの作業(Speccyなど)した最近の時間は6秒19。
         ただし、再起動は1分36秒65から1分40秒10かかっている。
         同じ条件で0にしたときは再起動に41秒71かかっている(普通44秒程度で41秒は誤差の
         うちと思う)
         これからいえるが、シャットダウンまたは再起動時にClear..wnが1だと時間がかかる。
         思うに、高速スタートアップも関係するのであろう。
       (シャットダウンは有効、再起動は高速は有効にならない)
         いずれにせよClear..AtShut..は有効であるが、0にセットすべき
だろう。大きな疑問は、
   PageFile.Sysを瞬時ではあるが無効にすることができるが(根本的には無しにするのは
   問題なのだが)そのとき、パスワードまたは他の機密情報はどこに保持されるのだろうか。

02) DisablePageCombining (値 1)
 
   これについては英語の説明しかないので(日本語の説明文章はない)いまひとつわかり難い。
   ただ、小生のPCも1がセットされているので、なんらかの説明が必要かもしれない。
   ページ結合=Combiningということのようだ。
   また、ページの結合は、DWORD値を1に設定することで無効にできますといっている。
   要するに、RAMを節約するために、同一ロジックを節約したりするのだが、
   それが置き換わることで反対のロジックになったときは厄介な問題を生ずる。
   DWARD値が1の時はページの結合を起こさないのだからRAMが潤沢なら
   そのような手間はないということかな。

03) DisablePagingExecutive (値 1)
   カーネルは ハードとソフトのやり取りをコントロールする、OSの中核となる
   ソフトウェアで通常 メインメモリと仮想メモリに分散され配置されているが、動作速度の
   遅い仮想メモリにはできるだけ配置したくない。
   すべてのカーネルが メインメモリに配置されるように設定(1)にしたい。
   小職の設定はメインメモリに配置されるようにされていた。(1が設定されていた)

04) IoPageLockLimit(値 8000000(16進))
        CPUが効率的なデータ処理をするためにハードディスクのデータを読み書きする時に
      「I/Oバッファ」という特殊なメモリ領域にデータを一時的に蓄え、CPUが「I/Oバッファ」内の
        データを処理する間にハードディスクは次のデータを先読みして「I/Oバッファ」に蓄えていく
        というもので大きければそれなりに意味があるものといえる。
        ただし、WindowsXP SP3はIoPageLockLimitを参照していないと言う情報や
        Windows2000の無印は参照しており、2000のsp4から、処理が変わっている、
        WinVistaと7ではIoPageLockLimitの項目はなくなっているという情報もあるが、
        小生のPCはそれより後のPCであるのにIoPageLockLimitが存在しているのであるが、
        Windows8以降は確かに存在価値がないかもしれない。
        某氏の検討によると 例えば8GBのメインメモリを搭載していれば40MBが適正なので
      「値のデータ」欄には40,000,000と入力とある。
        小生の機械では(無調整であるが)8000000(ただし、16進法で)とある。
        十進法でいうと134,217,728となるらしい。
 
05) LargeSystemCache(値 0)
        Windowsは用途に合わせてメモリの優先割り当て方法を変更することができる。
        システムのファイルキャッシュに優先的に割り当てるサーバー向けの設定(1)と、
        コンシューマ向けのアプリケーション優先(0)を選ぶことが可能。
   サーバー向けの設定にした場合、プラグインを呼び出したりする一部のアプリケーションの
         動作が遅くなるので、設定の変更には十分な注意が必要とのこと。
         一方、Microsoftの説明もあるが、英語の直訳である点と、対象としてはWindows XP
         Windows VistaとWindows2003/2008Serverだけのようだ。
         まあ、小生のPCは設定0だから、どっちにせよ問題なさそうである。

06) NonPagedPoolQuota (以下は英文和訳である。)(値 0)
         任意のプロセスで割り当てることができる、非ページプール内の最大スペースを確立します。
         プロセスが非ページプールにより多くのスペースを割り当てようとすると失敗します。
         0の場合(0MB)
     システムは、コンピューター上の物理メモリーの量に基づいてこのエントリーの最適値
               を計算し、メモリーの量が変化した場合にこの値を調整します。
     この値は、ほとんどのシステムに最適です。
    1から128メガバイツ
     システムによって計算された値を上書きし、システムがこの値を動的に調整できない
               ようにします。この設定により、パフォーマンスが低下する可能性があります。
     注釈 
     このエントリの値は変更しないでください。 システムはこの値を動的に調整します。
              値を変更すると、システムがアルゴリズムを使用してシステムの最適値を
              計算できなくなります。  
PagedPoolQuota(値 0)
    任意のプロセスで割り当てることができるページプール内の最大スペースを確立します。
    プロセスがページプールにさらにスペースを割り当てようとすると失敗します。
   0の場合
     システムは、コンピューター上の物理メモリーの量に基づいてこのエントリーの最適値を
              計算し、メモリーの量が変化した場合にこの値を調整します。
              この値は、ほとんどのシステムに最適です。
   1から128メガバイツ
     システムによって計算された値を上書きし、システムがこの値を動的に調整できない
              ようにします。この設定により、パフォーマンスが低下する可能性があります。
   注釈
       システムは、コンピューター上の物理メモリーの量に基づいてこのエントリーの
              最適値を計算し、メモリーの量が変化した場合にこの値を調整します。
              この値は、ほとんどのシステムに最適です。 

NonPagedPoolQuotaとPagedPoolQuotaの説明はほぼ同じ。
いずれにせよ、どちらも0が最適であり、当該システムもそうなっている。

07)NonPagedPoolSize/PagedPoolSize(PagedPoolSizeの説明が見つからないがNonの英文を和訳する)(値 0)
   非ページプールのサイズを指定します。(おそらくページプールサイズ指定がPagePoolSizeだろう)
   0の場合(0バイト)
     システムは、コンピューター上の物理メモリーの量に基づいてこのエントリーの最適値を計算し、
     メモリーの量が変化した場合にこの値を調整します。 この値は、ほとんどのシステムに最適です。
     指定されたバイト数
       指定されたサイズの非ページプールを作成します。 これにより、システムによって計算された値が
            上書きされ、システムがこの値を動的に調整できなくなります。
            この設定により、パフォーマンスが低下する可能性があります。
     ヒント
       ページプールと非ページプールの詳細については、Webリソースページのマイクロソフトサポート
             技術情報のリンクを参照してください。
             ナレッジベースで記事Q126402を検索するか、
       キーワードPagedPoolSizeおよびNonPagedPoolSizeを使用してください。
      注釈
       この値を変更すると、コンピューターのパフォーマンスが低下する可能性があります。

08) PhysicalAddressExtension(値 1) 
        32Bit OSにおいて、4GB以上の物理メモリを扱う物理アドレス拡張(PAE)を有効にする。
        これが0だと4GB以上のメモリ空間を扱えない。Windows Server2003の場合、
        boot.iniに/NOPAE スイッチが設定されていない場合、コンピュータを再起動すると
   自働的に 1 にリセットされる。
   また,XP SP2以降のOSではDEP(データ実行防止機能)を明示的に抑制していない限り、
   起動のたびにPAEは強制的に有効化され、この値は1に設定される。
   というか、24GBもメモリを積んだ64BitのOSなのだから、1は当然か。

09) SecondLevelDataCache(値 0)
   CPU2次キャッシュ(L2キャッシュ)をHAL(Hardware Abstraction Layer)が認識
   できなかった場合に割り当てられるデフォルト値(単位バイト)。
   0であると、256KB。(小職のも0になっている。)
   あくまでHALが認識できなかった時の値。たしかに2次キャッシュは256KBであった。
   コマンドプロンプトで WMIC MEMCACHE GET MAXCACHESIZE,DESCRIPTION と
   打ってみると、わかる。
               

10) SessionPoolSize(当方の設定4) SessionViewSize(当方の設定48)
        リモートから遠隔地にあるコンピュータのWindowsデスクトップに接続して、あたかも
        ローカル・デスクトップのように利用できるターミナル・サービスは便利な機能だ。
        サーバのリモート・メンテナンスはもちろん、自宅のWindowsコンピュータから、
   会社のデスクトップ・コンピュータに接続すれば、会社のWindows環境を自宅からそっくり
   使うことができる。
   Windows Server 2003は標準でこのターミナル・サービス機能を備えている。
   Windows Server 2003のターミナル・サービスを利用してリモートから接続し、
   アプリケーションを実行したとき、画面が崩れるなどのエラーが発生することがある。
   ターミナル・サービス・セッションに割り当てられるデフォルトのセッション用メモリ不足が
   原因となっている可能性がある。
   この場合はレジストリの値を増加させることで問題を回避できる。
   その際に変更するのが題記の2つのレジストリーキイである。
   また、NETを調べると、WindowsXPモード(Windows7でのXPモード)にても、
   メモリに余裕があるので大きめに設定できるが自動設定を試したら問題なく動いた。
   SessionPoolSize:0(自動)、SessionViewSize:0(自動)に設定。 
   XPモードの休止状態からの起動が速くなり動きが良くなった。とあるが、
   0が自動なのかな。

11) 結局、下手にRegistryをいじるのは危険であろうという結論になった。
   0と1などの2つしか選択肢がない場合で内容を理解しているケースのみ(当該事例でいうと 
   ClearPageFileAtShutDown)操作するのはいいが下手にいじってシステムが暴走するのは、
   なんとしても避けねばならない。
   以前のWin7などでよく聞いたRegistryの値もあるが、はじめて聞く内容もある。
   生半可の知識でRegistryをいじるのは厳に慎むべきであろう。