freeコマンドはシステムの使用中のメモリ量や空きメモリ量を確認することができます。
オプションなしで利用するデフォルトの表示はKB単位(正確には、1024の倍数を意味するKiB単位)で表示されます。
freeコマンドの単位は1024の倍数を示すのにKi, Mi, Giのような単位を利用し、1000の倍数を表す場合はK, M, Gのような単位が利用されます。
freeコマンドの数値をより見やすい形で利用したい場合は-h(--human)オプションを利用するとよいでしょう。そうすると、数値のスケールをそれぞれの単位ごとに自動的に合わせて表示してくれます。
目次
freeコマンドの簡単な使い方
freeコマンドを利用すると以下のように表示できます。-h(--human)オプションを利用すると数値をより見やすい形式で表示されます。また、buff/cacheの列を分割したい場合は-wオプションを利用します。
1 2 3 4 5 6 7 8 |
$ free -h total used free shared buff/cache available Mem: 1.9Gi 638Mi 248Mi 20Mi 1.1Gi 1.1Gi Swap: 448Mi 0B 448Mi $ free -h -w total used free shared buffers cache available Mem: 1.9Gi 638Mi 248Mi 20Mi 43Mi 1.0Gi 1.1Gi Swap: 448Mi 0B 448Mi |
それぞれの列の意味は以下の表のようになります。
それぞれの列の意味
項目 | 説明 |
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
1 2 3 4 5 6 7 8 9 10 11 12 |
$ free total used free shared buff/cache available Mem: 2025528 629080 297904 22148 1098544 1215460 Swap: 459208 0 459208 $ free -m total used free shared buff/cache available Mem: 1978 614 290 21 1072 1186 Swap: 448 0 448 $ free -g total used free shared buff/cache available Mem: 1 0 0 0 1 1 Swap: 0 0 0 |
-h(--human)オプションを用いると自動的に数値の単位を合わせて表示してくれます。
1 2 3 4 |
$ free -h total used free shared buff/cache available Mem: 1.9Gi 614Mi 290Mi 21Mi 1.0Gi 1.2Gi Swap: 448Mi 0B 448Mi |
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
1 2 3 4 5 6 7 8 9 10 11 12 |
$ free --kilo total used free shared buff/cache available Mem: 2074140 644390 304529 22679 1125220 1244409 Swap: 470228 0 470228 $ free --mega total used free shared buff/cache available Mem: 2074 644 304 22 1125 1244 Swap: 470 0 470 $ free --giga total used free shared buff/cache available Mem: 2 0 0 0 1 1 Swap: 0 0 0 |
または--siオプションと-k, -m, -g, -h(--human)オプションを組み合わせることで1000のべき乗の単位で表示もできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$ free --si -k total used free shared buff/cache available Mem: 2074140 644874 304013 22679 1125253 1243934 Swap: 470228 0 470228 $ free --si -m total used free shared buff/cache available Mem: 2074 644 304 22 1125 1244 Swap: 470 0 470 $ free --si -g total used free shared buff/cache available Mem: 2 0 0 0 1 1 Swap: 0 0 0 $ free --si -h total used free shared buff/cache available Mem: 2.0G 614M 289M 21M 1.1G 1.2G Swap: 448M 0B 448M |
1行の文字数の表示幅を広げる(-wオプション)
-wオプションを用いると行が80文字を超えるように表示されます。
また、buff/cacheの列が分割され、別々のbuffersとcacheの列になります。
1 2 3 4 |
$ free -w total used free shared buffers cache available Mem: 2025528 630776 281444 22152 45692 1067616 1209036 Swap: 459208 0 459208 |
一定の時間間隔で出力を表示(-sオプション)
-sオプションを利用すると一定の時間間隔で空きメモリ量や使用中のメモリ量を表示できます。
指定する数値の単位は秒で、浮動小数点数も指定できます。
また、中断する場合はCtrl+cになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
$ free -s 3 total used free shared buff/cache available Mem: 2025528 633660 266220 22820 1125648 1205420 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633660 266220 22820 1125648 1205420 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633660 266220 22820 1125648 1205420 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633660 266220 22820 1125648 1205420 Swap: 459208 0 459208 ^C $ free -s 0.5 total used free shared buff/cache available Mem: 2025528 632852 266960 22820 1125716 1206228 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633104 266708 22820 1125716 1205976 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633104 266708 22820 1125716 1205976 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633104 266708 22820 1125716 1205976 Swap: 459208 0 459208 ^C $ |
何回表示するかを指定する(-cオプション)
-cオプションは-sオプションと組み合わせて利用します。
-cオプションを利用することで何回表示するかを指定できます。
1 2 3 4 5 6 7 8 |
$ free -s 5 -c 2 total used free shared buff/cache available Mem: 2025528 633340 266456 22820 1125732 1205740 Swap: 459208 0 459208 total used free shared buff/cache available Mem: 2025528 633356 266440 22820 1125732 1205724 Swap: 459208 0 459208 |
ロ―メモリとハイメモリを表示(-lオプション)
-lオプションは64bitのOSでは特に意味のないオプションになると思います。64bitのOSの仮想アドレス空間のサイズは十分大きい(アーキテクチャによるが例えば256TB(=2の48乗)などになる)ため、ハイメモリは使用されないためです。
また、補足として、64bitのOSの仮想アドレス空間のサイズは理論上では16EB(エクサバイト, =2の64乗)ですが、現実問題としてここまでのアドレス空間に必要なく、実際のアーキテクチャの実装はアドレス変換のコストの兼ね合いで64bitのすべてはアドレス空間へ割り当てないため、理論上の数値より低い数値(それでも十分に大きい数値)になっているそうです。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ free -l total used free shared buff/cache available Mem: 2025528 677592 411560 20392 936376 1167420 Low: 2025528 1613968 411560 High: 0 0 0 Swap: 459208 0 459208 $ free -l -h total used free shared buff/cache available Mem: 1.9Gi 661Mi 401Mi 19Mi 914Mi 1.1Gi Low: 1.9Gi 1.5Gi 401Mi High: 0B 0B 0B Swap: 448Mi 0B 448Mi |
ハイメモリ(high memory)は、物理メモリのサイズが仮想アドレス空間の最大サイズに近づくか超える場合に使用されます。 そのような場合は、カーネルがすべての物理メモリを常にマップしたままにすることは不可能になります。
例えば、32bitのOSでは仮想アドレス空間のサイズは4GB(=2の32乗)になります。32bitのOSに4GBを超える物理メモリが搭載されるとハイメモリが使用されます。このようなとき、ローメモリはカーネルが使用する領域となり、ハイメモリはユーザが使用する領域となります。
次の例はVirtual Boxで32bitのOS(Ubuntu 16.04.06 i386版)をインストールして、メモリとして5GBを割り当てた場合の例になります。仮想アドレス空間(この場合は4GB)を超える物理メモリが搭載されているので、ハイメモリとローメモリに分割されます。
1 2 3 4 5 6 7 8 9 10 11 12 |
$ free -l total used free shared buff/cache available Mem: 5175740 335652 4298724 9784 541364 4384380 Low: 842228 81680 760548 High: 4333512 795336 3538176 Swap: 998396 0 998396 $ free -l -h total used free shared buff/cache available Mem: 4.9G 326M 4.1G 9.6M 528M 4.2G Low: 822M 79M 742M High: 4.1G 775M 3.4G Swap: 974M 0B 974M |
列の合計行を表示(-tオプション)
-tオプションはRAM + SWAPとしてそれぞれの列の合計を表す行が表示されます。
1 2 3 4 5 6 7 8 9 10 |
$ free -t total used free shared buff/cache available Mem: 2025528 658760 266096 20380 1100672 1184092 Swap: 459208 0 459208 Total: 2484736 658760 725304 $ free -t -h total used free shared buff/cache available Mem: 1.9Gi 643Mi 259Mi 19Mi 1.0Gi 1.1Gi Swap: 448Mi 0B 448Mi Total: 2.4Gi 643Mi 708Mi |