パフォーマンス カウンタ Memory\\% Committed Bytes in Use を監視します
システムの % Committed Bytes In Use (Memory\% Committed Bytes In Use) がしきい値を超えました。全体的なシステムのパフォーマンスが著しく低下する可能性があります。これによって、オペレーティング システムとアプリケーションのパフォーマンスが低下します。
% Committed Bytes In Use パフォーマンス カウンタは、Memory\Committed Bytes の Memory\Commit Limit に対する割合を表示します。Committed Bytes はコミットされた仮想メモリのサイズを表し、Commit Limit はページング ファイルを拡張する必要なしにコミットできる仮想メモリのサイズを表します。
多くの場合、このパフォーマンスしきい値の超過は、ページ ファイルを拡張できないか、拡張に時間がかかり過ぎたことが原因でアプリケーションのメモリ要件を満たせなかったことを示します。
利用可能な物理メモリの量は、次の状況で足りなくなることがあります。
コンピュータ上で同時に実行されているアプリケーションの数が多すぎます。
長時間にわたって、アプリケーションでメモリ リークが発生している。
過度なページングが発生しているかどうかを確認するには、Avg.Disk sec/Transfer (物理ディスク カウンタ) と Pages/sec カウンタの値を足します。これらのカウンタを足した結果が 0.1 を超える場合は、ディスク アクセス時間の 10% 以上がページングに使用されています。この状態が長期間継続する場合は、メモリを増量する必要があります。
次に、アプリケーションの実行が原因で過度なページングが発生していないかを確認します。可能であれば、ワーキング セット値が最も高いアプリケーションを停止し、ページング率が大きく変化するかどうかを確認します。過度なページングが疑われる場合は、システム モニタで Pages/sec カウンタを確認します。Memory オブジェクトの種類の一部であるこのカウンタは、物理メモリに存在せず、ディスクから読み取る必要があったページ数を表示します (このカウンタと Page Faults/sec の違いに注意してください。Page Faults/sec は、データがメモリの指定されたワーキング セットですぐに使用できなかったことのみを示します)。
物理メモリの量が少なくなった場合、管理者は次の 1 つまたは複数のオプションを選択できます。
1 つまたは複数のアプリケーション、サービス、プロセスを終了、または停止する。
コンピュータに物理メモリを追加する。
アプリケーションを 1 つまた複数のコンピュータに移動する (サーバーのみ適用可)。
システムに十分な量の物理メモリとアプリケーション負荷が割り当てられているにもかかわらず、時間が経つにつれ頻繁に利用可能なメモリのしきい値を超える場合は、アプリケーションでメモリ リークが発生している可能性があります。メモリをリークしているアプリケーションを特定するには、管理者は次の手順を実行します。
システム モニタを開き、次のシステム全体のパフォーマンス カウンタを一定期間にわたってモニタします。
Paging File\% Usage
Paging File\%
Memory\Pool Nonpaged Bytes
Memory\Pool Paged Bytes
これらのカウンタのいずれかが、時間が経つにつれ増加し続ける場合は、アプリケーションでメモリ リークが発生している可能性があります。これらのパフォーマンス カウンタの最近の履歴を見るには、次の表示を使用できます。
システムにメモリ リークの兆候が見られる場合は、システム モニタを使って、実行中の各プロセスの次のカウンタを監視することによって、メモリ リークが発生しているアプリケーションを特定できます。
Process\Page File Bytes
Process\Pool Nonpaged Bytes
Process\Pool Paged Bytes
Process\Private Bytes
Process\Thread Count
これらのカウンタのいずれかで、一貫して大きな増加が見られる場合は、アプリケーション ベンダにサポートを要請する必要があります。
Target | Microsoft.Windows.Client.Vista.OperatingSystem | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Instance Name | Memory | ||
Counter Name | \% Committed Bytes In Use | ||
Frequency | 120 | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | System.Performance.AverageThreshold | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.Windows.Client.Vista.OperatingSystem.PercentCommittedBytesInUse" Accessibility="Public" Enabled="true" Target="Vista!Microsoft.Windows.Client.Vista.OperatingSystem" ParentMonitorID="SystemHealth!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="SystemPerf!System.Performance.AverageThreshold" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Client.Vista.OperatingSystem.PercentCommittedBytesInUse.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="OverThreshold" MonitorTypeStateID="UnderThreshold" HealthState="Success"/>
<OperationalState ID="UnderThreshold" MonitorTypeStateID="OverThreshold" HealthState="Error"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<CounterName>% Committed Bytes In Use</CounterName>
<ObjectName>Memory</ObjectName>
<Frequency>120</Frequency>
<Threshold>80</Threshold>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>