1. はじめに
現在,Cisco 製品には Linux をベースとした製品も多数リリースされています。このドキュメントでは Linux での一般的なメモリの使われ方について解説します。
2. Linux のメモリ領域について
Linux のメモリ領域とその利用状況については top コマンドや free コマンドで確認が可能です.
Server$ free
total used free shared buff/cache available
Mem: 12884400 83348 12744820 68 56232 12621940
Swap: 4194304 0 4194304
free コマンドで表示される項目については以下を参照ください.
- Toal: 物理メモリ
- used: 使用しているメモリ
- free: 空きメモリ
- shared: 共有メモリに割り当てられたメモリ
- buff/cache: バッファ,ページキャッシュに割り当てられたメモリ
- available: スワップ無しに新しいプロセスに割り当てられるメモリ
3. メモリの使われ方
used として使用されているメモリはプロセスによって使用されているメモリです。プロセス数が増えれば使用量が増えます。
buff/cache はプロセスが扱うデータが大きくなれば使用量が増え、基本的には空きメモリがある限り増え続ける傾向があります。
プロセスが終了した場合,buff/cache のメモリは解放され、free のサイズが増える事になります。
また,free のサイズが少なくなると、buff/cache は解放されますが,ディスクへの読み書きが増え、物理メモリよりも使用領域が大きくなると一部をスワップに書き出すという動作が行われます。buff/cache の解放、スワップの利用によって I/O のパフォーマンスが低下する事になります。
4. “free が減っていく=メモリーリーク” ではない
free のサイズが減っていくのを見て「メモリーリークではないか?」という質問がたまにありますが、前述の通りメモリの使われ方として buff/cache が増大し free が減っていくという振る舞いは基本的には正常な動作です。
もし free のサイズが減ったとしてもメモリーリークとは決めつけず、まずは定期的に free を実行し、表示される値の観測を行ってください。また,ps や top コマンドでプロセス毎のメモリの使用状況を確認し、特定のプロセスが大量に生成されていないか、各プロセスの利用メモリの増減はどうかをチェックする事も一つ確認手段となります。
5. 最後に
内容については基礎的なものとなり、深い内容については専門書などで学習する事をお勧めします。
なお、本ドキュメントの内容については予告なく変更されることがあります。