web-dev-qa-db-ja.com

Windows Server 2008でのメモリ不足

8GBのRAMがインストールされたWindows2008x64サーバーがあります。

タスクマネージャーとリソースモニターはどちらも、7.5GBのRAMが使用中であると主張しています。ただし、プロセス(メモリプライベートバイト)の下のメモリリストは合計されません。私はすべてのユーザーからのプロセスの表示をチェックし、約3.5GBのRAMを思いついた数値を手作業で追加しています。

また、SysInternals ProcessExplorerの最新のコピーも調べました。また、プライベートバイトもワーキングセットも、合計で約3.5GBを超えるRAMが使用されています。

どうしたの?

=====

更新:サーバーをバウンスして、メモリ使用率がどうなるかを確認しました。起動と通常の操作が開始された後、それは3GBのRAM使用量になりました。 18時間後、最大6.8GBの使用量に戻り、3.5GB程度の追加のRAMがどこで使用されているかはわかりません。

リソースモニターとタスクマネージャーのスクリーンショットへのリンクは次のとおりです。

リソースモニター

タスクマネージャー

アップデート2:まあ、私は問題を見つけたと思います。大きなデータベースの1つをSQLサーバーから切り離すと、「使用中」と表示されるRAMの量が大幅に減少しました。メモリプライベートバイト数はほとんど移動していません。したがって、SQLサーバーには、どのモニターにも実際には表示されないメモリを割り当てる方法があると思います。

さらに進んで新しいデータベースファイルを作成し、デタッチしたものからすべてのデータを転送しました。同じデータがあり、同じトランザクションを通過していますが、使用中のメモリは少なくなっています。 DBに破損があったのではないでしょうか。私はそれをDBの神々に任せて、別の「問題」を探しに行きます;)

7
NotMe

私は今日、ロックされたページ、AWE、および64ビットシステムについて詳しく説明しているこの記事を見つけました。 http://blogs.msdn.com/psssql/archive/2009/09/11/fun-with-locked-pages-awe-task-manager-and-the-working-set.aspx

箇条書き(#3)の1つは、「タスクマネージャーがSQLServerに割り当てられたすべてのメモリを表示しないのはなぜですか」というタイトルです。

とてもいい説明です。結局、これが表示されない理由は、SQLサーバーがメモリ内のそれらのページを「ロック」したためです。ロックされたページはワーキングセットの一部ではないため、タスクマネージャーには表示されず、アプリケーションのメモリセットの一部としても表示されません。

select * from sys.dm_os_process_memoryを実行すると、locked_pa​​ge_allocations_kbフィールドが表示され、RAM SQLサーバーがそれらのページに割り当てた量がわかります。

7
NotMe

タスクマネージャには、CPUバー/グラフの下にメモリバー/グラフがあります。これは、アプリケーションによって使用される量です。

そのグラフで示されている量と「使用可能」と示されている量の合計は、合計8GBになります。

「キャッシュ」が「利用可能」に含まれているため、「利用可能」は「無料」以上です。

1
ThatGraemeGuy

同様の問題が発生しています。このtechnetの記事-907877に出くわしました。SQLコマンドDBCCMEMORYSTATUSを使用して、AWEに割り当てられたエントリが不足しているメモリと等しいかどうかを確認してください。

1
steve

ビデオカードとRAMを共有している可能性があります。BIOS設定を確認してください。

では、手掛かりではありません。ここでいくつかの提案は、メモリモジュールをテストすることです。

0
user3914

どのアプリケーションを実行していますか?メモリリークのある開発アプリまたはサードパーティのソフトウェアパッケージを実行している可能性がありますか?

0
V. Romanov