|
||||||||||
| 1 2 3 次のページ | ||||||||||
| データベースサーバにおけるメモリ管理の重要性 | ||||||||||
|
一般に、データベースサーバにおいて、ページキャッシュ(ファイルキャッシュ)を管理することは、性能上あるいはシステム安定稼動の観点から重要です。 今回は、DB2がオンライン処理を実行中に、大規模ファイルアクセス(読み取り、書き込み)を伴う処理が実行される場合のメモリ管理を取り上げます。具体的には、Linuxページキャッシュ(ファイルキャッシュ)が大量に確保され、そのかわりにDB2のメモリがスワップされて、DB2がスローダウンしてしまうようなことを回避する方法について検討します。 DB2が利用するメモリは、そのパラメータ構成により上限のサイズを決めることができます。一方のLinux側におけるページキャッシュの最大利用量は、指定する方法がありませんので(Linuxソースコードを自身で修正することを除き)、一般的な対応方法としては以下のようなものが考えられます。
表1:メモリワップの一般的な対応 |
||||||||||
| Linuxカーネルパラメータでの対応 | ||||||||||
|
Linuxカーネルパラメータでの対応においては、本連載の「第5回:カーネルをチューニングする」の「メモリ」にあげたカーネルパラメータを調整します。 具体的には、プロセス/メモリがスワップされづらいようにするために、カーネルパラメータ(vm.swappiness)の値を小さくします。また、ページキャッシュ内の「更新されたダーティなデータ」をはやめにディスクに書き込んで、ページキャッシュのメモリを再利用されやすくするため、カーネルパラメータのvm.dirty_ratioおよびvm.dirty_background_ratioの値を小さくするなどの調整をします。 実際には、負荷テストを行いながらその効果を確認することになります。 |
||||||||||
|
Linuxにおけるメモリの開放 データベースサーバなどを運用していると、、ページキャッシュを開放して、フリーメモリを増やしたい場合があると思います。カーネル2.6.16以降ではvm.drop_cachesがサポートされ、以下の値が利用可能です。
SUSE Linux Enterprise Server 10の環境にて、簡単に検証してみた結果が以下です。
sles10a:~ # free -m
約1GBのファイルの読み取りで、約1GBほどページキャッシュに蓄えられた後、vm.drop_cachesの設定により、メモリが開放されています。 |
||||||||||
|
|
||||||||||
|
1 2 3 次のページ |
||||||||||
|
|
||||||||||
|
|
||||||||||
|
||||||||||
|
|
||||||||||
|
||||||||||

