5.5. リソースの確認 -freeコマンド-
5.5. リソースの確認
5.5.1. メモリの確認 -freeコマンド-
【コマンド説明】
現在のメモリの使用状況を表示します。システムの物理メモリとスワップメモリそれぞれに対して、使用量と空き容量を表示し、カーネルが用いているバッファも表示します。
freeコマンドを実行すると下記の様な表示がされます。
total used free shared buffers cached
Mem: 24676332 7603856 17072476 0 581292 4789772
-/+ buffers/cache: 2232792 22443540
Swap: 4096564 0 4096564
それぞれの値の意味は以下の通りです。
- 一行目
項目 | Kbyte | 説明 |
total | 24676332 | 全物理メモリをKByteで表示 |
used | 7603856 | 使用しているメモリをKByte表示 |
free | 17072476 | 未使用のメモリをKByte表示 |
shared | 0 | 古い機能の名残のため特に関係無し |
buffers | 581292 | バッファとして利用されているメモリをKByte表示 |
cached | 4789772 | キャッシュとして利用されているメモリをKByte表示 |
- 二行目
項目 | Kbyte | 説明 |
used | 2232792 | 一行目のusedからbuffersとcachedを引いた値 |
free | 22443540 | 一行目のfreeにbuffersとcachedを加えた値 |
- 三行目
項目 | Kbyte | 説明 |
total | 4096564 | swapとして割り当てられているKByte |
used | 0 | 使われているswapのKByte |
使用中のメモリの量は1行目のusedの値ではなく2行目のusedの値を確認します。バッファとキャッシュが使用している値も、全てではありませんが空きメモリとして使用できるためです。ですので、実際に利用できるおおよその空きメモリ量は2行目のfreeになります。この場合では22443540Kbyteとなります。
※ バッファとキャッシュについて
Linuxではメモリにロードされたストレージのデータをページキャッシュとして利用します。
ページキャッシュは読み出し/書き出しにストレージを介さないため、非常に高速に動作します。
ページキャッシュは新たなストレージデータの読み出し/書き出し要求などがあってメモリが新規に必要とならない限り、メモリを解放しません。また、要求があってもページキャッシュは全てのメモリを解放するわけではありません。要求があればすぐにメモリの解放ができるのはページキャッシュのうちストレージとの同期がとれている部分です。要求があってもメモリの解放ができないのはページキャッシュのうちストレージと同期がとれていない部分です。ただ、ページキャッシュとストレージとの同期は定期的に行われていますので、時間が経てば解放する事が可能になります。
ページキャッシュのうちファイルなどのメタデータをキャッシュしている値がfreeコマンドのbuffers、ファイルのデータ本体をキャッシュしている値がfreeコマンドのcachedです。
ですので、buffersとcachedのうち、ストレージと同期がとれている部分は空きメモリとしてすぐに使用可能だと言えます。ただし、freeコマンドではストレージと同期がとれているページキャッシュかどうかまでは判断できず、正確な値は取得ができないため、一般的にはfreeコマンド実行時の「freeの値+buffersの値+cachedの値」を使用できるメモリ量の概算として判断することが多い様です。
【オプション説明】
-k メモリの量をキロバイト単位で表示します。オプションを何も付けない場合のデフォルトの表示でもキロバイト単位で表示されます。
-b メモリの量をバイト単位で表示します。
-m メモリの量をメガバイト単位で表示します。
-g メモリの量をギガバイト単位で表示します。
-t 物理メモリ、スワップメモリの合計を示す行も表示します。
-o バッファの分を増減した行を表示しません。
-s オプションを指定すると delay 秒間隔でポーリングを続けます。
-V バージョン情報を表示します。
【動画説明】
freeコマンドを実行してみましょう。
$ free
freeコマンドにオプションを付けて実行して見やすくしてみましょう。
$ free –m
$ free -g
freeコマンドを3秒間隔で実行してみましょう。
$ free –s 3
【問題】
1. freeコマンドを実行して自分のPCの実際に利用できる空きメモリの概算を確認しましょう