Windows 2008R2上のSQL 2008R2の推奨ページファイルサイズ


25

このMicrosoftの記事-64ビットバージョンのWindows Server 2008またはWindows 2008 R2の適切なページファイルサイズを決定する方法は、64ビットWindows 2008およびWindows 2008R2のページファイルサイズを計算するためのガイダンスを提供します。これは間違いなく汎用サーバーでうまく機能します。Windows 2008 / R2 64ビットで実行されているSQL Server 2008R2のガイダンスは何ですか?

メモリ内のデータがページファイルにほとんどヒットしないようにすると、SQLがデータを取得するためにディスクに2回ヒットする可能性があります。SQL Serverでは、メモリ内のデータがページファイルにヒットすることさえ許可していますか?私はを通じて狩りをしましたSQL Server 2008 R2のオンラインブック指導のためにまだページファイルの使用の一切の言及を発見していません。

潜在的な使用シナリオは次のとおりです。物理サーバーに64GBのRAMがある場合、64GBのRAM全体にページファイルが必要ですか?96GBのページファイルに対応する必要がありますか?これは、単一のファイルでは少し過剰に思えます。私は、Windowsがページファイルをメモリに結合して、RAM上のアプリをより簡単にスワップアウトしようとするのが常識であったことを知っていますが、それは本当ですか?ここでは64GB未満のページファイルでパフォーマンスが低下しますか?

回答:


15

通常物理メモリのみを使用するSQL Serverの特別な設定はありません。

WindowsでMSが言うことをやれば、それだけです

ああ、とにかく私たちが1つの主題である間にRAMを追加購入してください... ;-)


6

を見てくださいlock pages in memory。このようにして、ディスクにページングするのではなく、使用可能なRAMを使用するようにSQLサービスアカウントを優先させることができます。メモリ内のロックページの詳細については、このリンクを確認してください。スニペットは次のとおりです。

Windowsポリシーの「メモリ内のページをロック」オプションはデフォルトで無効になっています。Address Windowing Extensions(AWE)を構成するには、この特権を有効にする必要があります。このポリシーは、どのアカウントがプロセスを使用して物理メモリにデータを保持できるかを決定し、システムがディスク上の仮想メモリにデータをページングするのを防ぎます。32ビットオペレーティングシステムでは、AWEを使用しないときにこの特権を設定すると、システムのパフォーマンスが大幅に低下する可能性があります。64ビットオペレーティングシステムでは、メモリ内のページをロックする必要はありません。

システムで使用する前に、この機能をテストしてください。


4
「メモリ内のページをロックする」ことは、OSによってSQLメモリがページアウトされるのを防ぐためのセーフガードとしておそらく説明できます。support.microsoft.com/kb/918483
Mark Storey-Smith

4

はい、64GB RAMには少なくとも 64GBのスワップファイルが必要です(96GBを推奨)。スワップの可能性のためではなく、Windowsメモリマネージャーの設計のためです。私はこの問題について以前に大きなRAMを搭載したマシンのシステムページファイルサイズで書いたことがあります

プロセスが/ MEM_COMMITを介してメモリを 要求する場合、要求されたサイズをページファイルで予約する必要があります。これは最初のWin NTシステムでも当てはまりましたが、今日でもWin32での仮想メモリの管理をご覧ください。VirtualAllocVirtualAllocEx

メモリがコミットされると、メモリの物理ページが割り当てられ、ページファイルにスペースが予約されます。

代替手段はoom_killerのようなものです

推奨事項に従ってください。見た目よりも少し複雑な場合があります。そして、AWEによってもたらされる合併症やロックページの特権についても触れていません...


非常に興味深い...マシンのRAMよりも小さいスワップファイルを設定すると、どのように機能しますか?実際にすべてのメモリ割り当てのためにページファイルのスペースを確保する必要がある場合、ページファイルサイズのメモリを超えるメモリを使用することはできませんか?これが実際にどのように機能するかはわかりません。
幼虫

1
それがまさに実際の仕組みです。コミットされたVA領域は、実際のスワップ予約によってサポートされる必要があります。予約 VA領域がある必要はありませんが、SQL Serverは、事実上、非コミットの予約を要求することはありません。
レムスルサヌ

2
これは正しいとは思わない。Windows Internalsの書籍など、さまざまなソースからの私の理解では、コミットされた仮想アドレススペースは、物理的なページファイルまたはRAMのいずれかによって裏付けられなければならないということです。したがって、仮想メモリをコミットしようとすると([Windowsが見る物理メモリ] + [ページングファイルサイズ])、「システムの仮想メモリが不足しています」というエラーメッセージが表示されます。Mark Russinovichがこのことについて、「コミットされたメモリ」というセクションで説明しています
ジェームズL

5
コミットされたVA領域は、ページングファイルのないシステムを起動し、Windowsが起動することを確認するだけで、スワップ予約によってバックアップされる必要がないことを自分で確認できると思います。したがって、コミットされたVASは0バイト以上必要です。
ジェームズL

この投稿は間違っています-最大コミット要件を超えるメモリがある場合、ページファイルなしで実行することは完全に可能です。ただし、クラッシュダンプを作成できないことを意味します。
Steve365
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.