2012年1月アーカイブ

Linuxでは稼働時間の経過と共に(ファイルの書き込みの度に?)freeコマンドで見たところのcachedの値が増加する傾向にある。
Linuxはファイルを書き込む際に、いきなりディスクに書き込むわけではなく、一旦キャッシュ(メモリ)上に書き込み、これでI/Oを完了したとすることでパフォーマンス向上を図っているためである(ディスクに書くよりメモリに書く方が速い)。
キャッシュ上のデータは非同期でディスクに書き込まれる。
このように使われていないメモリはどんどんキャッシュとして利用されるため、時間の経過と共にcachedの値が増加する。
最終的にはメモリ全体の使用率が95%程度まで(かな?)増加するため、単純にfreeコマンド等でメモリの使用率を見るとメモリが逼迫しているように見える。
しかし、OSやアプリケーションがメモリを必要とした際には、このキャッシュ領域が開放されて使われる。
freeコマンドで表示されるbuffersやcachedは必要に応じて解放されて使われるため、メモリの空き領域の一部として考えることが多い。

上記特徴から、Linuxでメモリの使用率監視を行う際には、freeコマンドの「-/+ buffers/cache」で表示される「used」の値を使用率と見て監視することが多い。

しかし、Oracle Databaseが稼働しているサーバでは、SGA、PGA、バックグラウンドプロセスの容量を足した数値(Oracleが使っているはずのメモリの容量)が、上記usedの値よりも小さく表示されていた。
使っているはずなのに使っているように見えない??
・・・だが、実際には大量のスワップが発生していたため、やはりメモリは使われていた様子。
調べてみると、Oracleの共有メモリはfreeコマンドで見たところのusedではなく、cachedに計上されている様子。
容量の内訳からしてそうかとは思っていたが。。。
ただ、Oracleの設定によってどこに計上されるかが変わるようなので、正確なところはもっと調査の必要有り。

また、JBossが稼働しているAPサーバでも同様の傾向があるため、こちらも要調査。

Mem
 total 物理メモリ総量。
 used 物理メモリの使用量。バッファとキャッシュを含む。
 free 物理メモリの空き容量。
 shared 物理メモリのうち、共有メモリの使用量。
 buffers 物理メモリのうち、バッファキャッシュの使用量。ブロックデバイス用のキャッシュ。
 cached 物理メモリのうち、ページキャッシュの使用量。ファイル用のキャッシュ。

-/+ buffers/cache
 used 物理メモリの使用量から、バッファとキャッシュを引いた使用量。
 free 物理メモリの空き容量に、バッファとキャッシュの使用量を加えた容量。OSとアプリケーションが使える残りメモリ。

Swap
 total スワップの総量。
 used スワップの使用量。
 free スワップの空き容量。

このアーカイブについて

このページには、2012年1月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2011年11月です。

次のアーカイブは2012年3月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。