ページキャッシュ関連パラメータ
まず、カーネルによるページキャッシュのライフサイクルを説明します。
 |
| 図1:ページキャッシュのライフサイクル |
|
[Free][Active][InactiveDirty][InactiveLaundry][InactiveClean]は、ページキャッシュの状態を表しています。
1.[Free]は、利用可能な状態を表しています。ここからプロセスに配分されたページは[Active]となります。
2.[Active]は、プロセスに配分されている状態を表し、kscandによりアクセス頻度が低いと判断された場合は[InactiveDirty]状態に移されます。
3.[InactiveDirty]は、一定期間使われていない状態を表しており、メインメモリからの削除候補となります。
4.[InactiveLaundry]は、ディスクへの書き込みを待っている状態で、書き込みが完了したあとに再利用可能な[InactiveClean]状態になります。
5.[InactiveClean]は、ディスクにsyncされたあとの状態を表しています。再利用が可能な状態です。
※3、4、5いずれの状態でも、一度アクセスがあれば[Active]状態に戻ります。
左から最小値、維持目標値、最大値が実メモリに占める割合を表しています。注目すべきは右端の最大値で、デフォルトの状態では100%までページキャッシュとして利用されることになります。OracleなどのBatch系ジョブでは、ディスクデータの再利用が頻繁におこなわれるため、最大のパフォーマンスを発揮します。ファイルサーバーなど、ユーザーごとに違うデータが頻繁に読み書きされるサーバーでは、この値を70%程度まで低くすると、パフォーマンスが改善できる場合があります。設定方法は/etc/sysctl.confに[vm.pagecache
1 15 100]と追加します。
このパラメータは、すでに使わなくなった[InactiveDirty]状態のページキャッシュの容量に対する、ページキャッシュの再利用可能な[InactiveClean]状態と、再利用可能にするための書き込み待ち[InactiveLaundry]状態の合計容量の割合を指定します。
※数式で表すと以下のとおりです。
[InactiveDirty]× 30% <[InactiveClean]+[InactiveLaundry]
このパラメータの値を増やすことにより、使われないページキャッシュ[InactiveDirty]はより積極的にディスクに書き込まれ、再利用可能な[InactiveClean]状態の割合が増えます。設定方法は/etc/sysctl.confに[vm.inactive_clean_percent
30]と追加します。
以上、カーネル・パラメータの一部をご説明しましたが、shmmaxなどOracleのパラメータと密接にかかわりのある項目もありますので、皆さんの参考になれば幸いです。 |