Windows タスク マネージャと SQL Anywhere に割り当てられるデータベース・キャッシュ

このドキュメントでは、AWE (Address Windowing Extensions) が有効なときに、Windows (Windows 2000、Windows 2003) コンピュータの Windows タスク マネージャで表示される値の解釈方法について説明します。

背景

10GB のキャッシュが割り当てられた dbsrv9 プロセスを起動すると、[Windows タスク マネージャ] の [プロセス] タブの [メモリ使用量] および [仮想メモリ サイズ] の値が 250 ~ 500MB 程度と表示されます。動的なキャッシュ・サイズの変更は無効になっています。
しかし、[パフォーマンス] タブを開くと、[物理メモリ] の値が適切に調整されています。

解釈

タスク マネージャの [メモリ使用量] は、割り当てられたメモリ量ではなく、プロセスの作業セットのサイズを示すものです。基本キャッシュでも、通常は作業セットは実際のキャッシュ・サイズより大幅に小さくなります。AWE を有効にした場合、データベース・キャッシュ・ページは物理的にメモリとして確保されてスワップ・アウトできないため、プロセスの作業セットには含まれません。perfmon を使用して Processオブジェクトを監視し、データベース・サーバ・プロセスを選択して Virtual Bytes カウンタを追加すると、データベース・サーバのアドレス空間サイズが確認できます。

Microsoft の資料によれば、タスク マネージャの仮想メモリ・サイズは、「プロセスに与えられた仮想メモリまたはアドレス空間の容量」であると定義されています。ここで「与えられた」というのは、スワップ・ファイルによって確保されるアドレス空間を意味します。AWE を有効にした場合、ページ・イメージをキャッシュするために割り当てられたアドレス空間はスワップ・ファイルによって確保されない (つまり、確保されたメモリではない) ため、タスク マネージャの [仮想メモリ サイズ] にも表示されません。現在、プロセスによって割り当てられた AWEメモリ量を確認できるシステム・ユーティリティはありません。