本記事では、Linux上でfreeコマンドとtopコマンドを使って、実際の物理メモリの情報とSWAPメモリの情報を確認する方法、およびメモリ使用率の計算方法について紹介します。
管理人本記事の読者層は以下の方を想定しています。
- Linuxターミナルからメモリの状態を確認したい方
- リアルタイムでメモリの動きを監視したい方
パソコンやサーバーを使っていると、「なんだか動作が重いな」「メモリが足りているのか気になる」と感じる場面があると思います。そんなときにまず確認したいのが、Linuxのメモリ使用状況です。本記事では、代表的な確認方法であるfreeコマンドとtopコマンドの2つを、実際の出力例とあわせて紹介します。
メモリの使用状態を確認する方法
メモリは、コンピューターが必要な情報を一時的に記憶しておく場所です。Linuxではメモリの記憶構造は、「MEM」と「SWAP」という2つのブロック領域に分かれています。
①Mem:実際の物理メモリの情報
②Swap:ストレージ上に取られたメモリとして使用する領域
②のswapは実際のハード内メモリではありません。swapは物理メモリの情報が足りないときに利用されるメモリ領域として使われます。
実際にubuntu Linux上でどのように見えるか確認してみましょう。
Linuxには、このメモリの空き容量を確認する「free」というコマンドがあります。この「Free」コマンドを使ってこの2つのメモリ使用量を調べることができます。
/usr/bin/free
ターミナルからfree -hにて以下のように確認
free -h
total used free shared buff/cache available
Mem: 5.8G 1.0G 153M 14M 4.6G 4.5G
Swap: 6.0G 27M 6.0Gここで「Mem:」と「Swap:」という表示がでていますが、その右側に数字と記号が表示されています。ここで英記号は、単位のことで、バイトで表示されています。主な記号の意味を以下で示します。
- 読みやすい単位で表示 -h
- ギガバイト単位で表示 -g
- メガバイト単位で表示 -m
- キロバイト単位で表示 -k
- バイト単位で表示 -b
次に表示されている意味について確認していきます。
以下、表示されるオプションです。見方は以下の通り。
- total 「全体のメモリサイズ」
- used 「メモリ使用量」
- free 「メモリの空き容量」
- shared 「共有メモリ」
- buffers/cached 「バッファキャシュとページキャシュ」
- available 「利用できるメモリ容量」
ここで、SWAPの容量は6G,MEMの容量も6Gほどで、このサーバー機では合計12GB利用できるようになっています。
Buffers/cashed
Linuxでは、物理メモリにおいて、使用メモリ(used + shared memory)を割り振った残りをバッファー(Buffers)とキャシュ(cashed)として割り当てるkとおでディスク出力の入力負荷を減らしています。
この2つの違いは、「バッファー」はデータの一時的な蓄積や中継を目的として、「キャッシュ」は高速なデータアクセスを提供するために使われています。つまり、バッファーは頻繁にアクセスされますが、キャシュは良くアクセスされるデータや命令を保持するために使用されますが、比較的更新頻度が低いです。
バッファーは通常、数キロバイトからスウメがバイト程度の領域から、時には数十メガバイト以上の大きな領域を使用します。キャッシュについても同様です。
topコマンドで確認する方法
topコマンドでもメモリの状態を確認できます。freeが実行した瞬間の値を1回だけ表示するのに対し、topは起動している間、数秒おきに自動で数値が更新され続けるため、リアルタイムでメモリの動きを見たいときに便利です。
ターミナルから以下を実行します。
top画面の上部に、以下のようなメモリ情報の行が表示されます。
MiB Mem : 5943.0 total, 1234.5 free, 1876.3 used, 2832.2 buff/cache
MiB Swap: 6144.0 total, 6117.0 free, 27.0 used. 4530.8 avail Memtotal・free・used・buff/cacheは、freeコマンドの各列とほぼ同じ意味です。Swap行の末尾に表示されるavail Memは、freeコマンドのavailable列に相当する値です。
topを終了するにはqキーを押します。
メモリの使用率
次にこの結果から、数字を押さえて行きましょう。
メモリ使用率 = ( ( Total – available ) / Total * 100 )
今回の例では、Total=5.8GB, available=4.5GBであるため、メモリの使用率は、22%となります。
_Free_ = ( Total – Used-( Buff/ Cache ))
今回の例では、Free=0.2GB=200MBであることから、表示の153MBとほぼ一致しますね。
まとめ
本記事ではfreeコマンドとtopコマンドを使ったメモリの状態の確認方法について学びました。
- freeコマンドでMem(物理メモリ)とSwap(仮想メモリ領域)の使用状況を確認できる
- topコマンドでもリアルタイムにメモリの状態を確認でき、Swap行末尾のavail Memはfreeのavailableとほぼ同じ意味
- メモリ使用率は(Total−available)/Total×100で計算できる
- free・topの他にも、vmstatやhtop、psコマンドなどで確認する方法もある
次回の記事をご期待下さい。どうぞよろしくお願いいたします。
関連リンク









コメント