既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。
$ free
total used free shared buffers cached
Mem: 510824 133932 376892 0 10448 56216
-/+ buffers/cache: 67268 443556
Swap: 1048568 0 1048568
コンテキストスイッチという仕組みを用いると、CPUのコアで行っていたある処理の状態を一旦退避させ、別の新しい処理を行えます。OSはPCのコア数を越える処理を同時に行わなければならなくなった場合、コンテキストスイッチを利用して切替えながら、一つのコアに仮想的に複数のプロセス処理を同時に実行させます。コンテキストスイッチが頻繁に発生すると処理性能が落ちるため、並列プログラミングなどでコア数を越えて並列処理を実行させることは非効率ということになります。CPUのコアについてはこちらを参照してみてください。
ハードディスクなどへのデータの読み書きには最小単位があり「ブロック」とよばれます。ブロックの具体的な容量は環境に依存します。
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
31G 1.7G 27G 6% /
tmpfs 250M 0 250M 0% /dev/shm
/dev/sda1 485M 52M 409M 12% /boot
$ du -h test.txt
4.0K test.txt
一時的に何らかの障害によってメモリが不足してスワップが発生してしまったとします。原因となるプロセスを kill するなどして、スワップ領域に格納された内容をすべて格納できる十分な空きが実メモリにできた場合、以下のコマンドでスワップ領域の内容をすべて実メモリに移動できます。
スワップ領域のためにマウントされているファイルを確認
$ cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 950268 49604 -1
ちなみにこれは /etc/fstab で起動時にマウントされたものです。
$ grep swap /etc/fstab
/dev/mapper/VolGroup-lv_swap swap swap defaults 0 0
$ ls -l /dev/mapper/VolGroup-lv_swap
lrwxrwxrwx. 1 root root 7 4月 28 23:29 2015 /dev/mapper/VolGroup-lv_swap -> ../dm-1
現在のメモリ状況を確認
$ free -m
total used free shared buffers cached
Mem: 458 329 129 0 10 228
-/+ buffers/cache: 90 367 ← 実メモリの空きは367MB (>48MB)
Swap: 927 48 879 ← 927MBが確保され48MBが使用中
スワップを無効にして内容を実メモリに移動 (しばらくかかります)
$ sudo swapoff /dev/dm-1
メモリ状況を確認
$ free -m
total used free shared buffers cached
Mem: 458 376 82 0 10 229
-/+ buffers/cache: 135 322 ← freeが367-48で約319MBになった
Swap: 0 0 0 ← スワップ領域が0MBになった
再びスワップ領域を有効化
$ sudo swapon /dev/dm-1
メモリ状況を確認
$ free -m
total used free shared buffers cached
Mem: 458 376 81 0 10 229
-/+ buffers/cache: 136 322
Swap: 927 0 927 ← 927MB確保された。0MB使用中