free - システムの使用中のメモリ量や空きメモリ量を表示する

スポンサーリンク

freeコマンドはシステムの使用中のメモリ量や空きメモリ量を確認することができます。
オプションなしで利用するデフォルトの表示はKB単位(正確には、1024の倍数を意味するKiB単位)で表示されます。
freeコマンドの単位は1024の倍数を示すのにKi, Mi, Giのような単位を利用し、1000の倍数を表す場合はK, M, Gのような単位が利用されます。
freeコマンドの数値をより見やすい形で利用したい場合は-h(--human)オプションを利用するとよいでしょう。そうすると、数値のスケールをそれぞれの単位ごとに自動的に合わせて表示してくれます。

スポンサーリンク

freeコマンドの簡単な使い方

freeコマンドを利用すると以下のように表示できます。-h(--human)オプションを利用すると数値をより見やすい形式で表示されます。また、buff/cacheの列を分割したい場合は-wオプションを利用します。

それぞれの列の意味は以下の表のようになります。

それぞれの列の意味

項目 説明
total メモリの合計
used 使用中のメモリ
free 使用されていないメモリ
shared 主にtmpfsによって使用中のメモリ
buffers カーネルバッファで使用中のメモリ
cache ページキャッシュとスラブで使用中のメモリ
buff/cache buffersとcacheの合計
available スワップなしで新しいアプリケーションを開始するために使用できるメモリ量の推定

 

 

 

1024のべき乗の単位で表示

-b(--bytes), -k(--kibi), -m(--mebi), -g(--gibi)オプションの単位は1024(2の10乗)のべき乗で表されます。
それぞれのオプションは以下のようになります。

B単位の表示(-bオプション) : 1B = 1 byte
ki単位の表示(-kオプション, デフォルト) : 1Ki = 1 kibibyte = 1024 bytes
Mi単位の表示(-mオプション) : 1Mi = 1 mebibyte = 1024 kibibytes
Gi単位の表示(-gオプション) : 1Gi = 1 gibibyte = 1024 mebibytes
Ti単位の表示(--tebiオプション) : 1Ti = 1 tebibyte = 1024 gibibytes
Pi単位の表示(--pebiオプション) : 1Pi = 1 pebibyte = 1024 tebibytes

-h(--human)オプションを用いると自動的に数値の単位を合わせて表示してくれます。

 

 

 

1000のべき乗の単位で表示

--kilo, --mega, --giga, --tera, --petaオプションの単位は1000のべき乗で表されます。

1 kilobyte = 1000 bytes
1 megabyte = 1000 kilobytes
1 gigabyte = 1000 megabytes
1 terabyte = 1000 gigabytes
1 petabyte = 1000 terabytes

または--siオプションと-k, -m, -g, -h(--human)オプションを組み合わせることで1000のべき乗の単位で表示もできます。

 

 

 

1行の文字数の表示幅を広げる(-wオプション)

-wオプションを用いると行が80文字を超えるように表示されます。
また、buff/cacheの列が分割され、別々のbuffersとcacheの列になります。

 

 

 

一定の時間間隔で出力を表示(-sオプション)

-sオプションを利用すると一定の時間間隔で空きメモリ量や使用中のメモリ量を表示できます。
指定する数値の単位は秒で、浮動小数点数も指定できます。
また、中断する場合はCtrl+cになります。

 

 

 

何回表示するかを指定する(-cオプション)

-cオプションは-sオプションと組み合わせて利用します。
-cオプションを利用することで何回表示するかを指定できます。

 

 

 

ロ―メモリとハイメモリを表示(-lオプション)

-lオプションは64bitのOSでは特に意味のないオプションになると思います。64bitのOSの仮想アドレス空間のサイズは十分大きい(アーキテクチャによるが例えば256TB(=2の48乗)などになる)ため、ハイメモリは使用されないためです。
また、補足として、64bitのOSの仮想アドレス空間のサイズは理論上では16EB(エクサバイト, =2の64乗)ですが、現実問題としてここまでのアドレス空間に必要なく、実際のアーキテクチャの実装はアドレス変換のコストの兼ね合いで64bitのすべてはアドレス空間へ割り当てないため、理論上の数値より低い数値(それでも十分に大きい数値)になっているそうです。

ハイメモリ(high memory)は、物理メモリのサイズが仮想アドレス空間の最大サイズに近づくか超える場合に使用されます。 そのような場合は、カーネルがすべての物理メモリを常にマップしたままにすることは不可能になります。
例えば、32bitのOSでは仮想アドレス空間のサイズは4GB(=2の32乗)になります。32bitのOSに4GBを超える物理メモリが搭載されるとハイメモリが使用されます。このようなとき、ローメモリはカーネルが使用する領域となり、ハイメモリはユーザが使用する領域となります。
次の例はVirtual Boxで32bitのOS(Ubuntu 16.04.06 i386版)をインストールして、メモリとして5GBを割り当てた場合の例になります。仮想アドレス空間(この場合は4GB)を超える物理メモリが搭載されているので、ハイメモリとローメモリに分割されます。

 

 

 

列の合計行を表示(-tオプション)

-tオプションはRAM + SWAPとしてそれぞれの列の合計を表す行が表示されます。