メモリ使用量を表示 (free)
既定ではキロバイト単位で表示されます。オプション "-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
Mem (物理メモリ)
- total = used + free
- usedの内訳の一部として buffers, cached が存在 (OSがディスクアクセス回数を減らすため等に使用)
- 「-/+ buffers/cache」の行では buffers, cached を used ではなく free に含めた場合の容量を表示
Swap (仮想メモリ)
- total = used + free
コンテキストスイッチ
コンテキストスイッチという仕組みを用いると、CPUのコアで行っていたある処理の状態を一旦退避させ、別の新しい処理を行えます。OSはPCのコア数を越える処理を同時に行わなければならなくなった場合、コンテキストスイッチを利用して切替えながら、一つのコアに仮想的に複数のプロセス処理を同時に実行させます。コンテキストスイッチが頻繁に発生すると処理性能が落ちるため、並列プログラミングなどでコア数を越えて並列処理を実行させることは非効率ということになります。
データの読み書きにおける「ブロック」という用語
ハードディスクなどへのデータの読み書きには最小単位があり「ブロック」とよばれます。ブロックの具体的な容量は環境に依存します。
ファイルシステム毎の空き容量を表示 (df)
$ 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)
$ du -h test.txt
4.0K test.txt
スワップ領域の内容を実メモリに移動 (swapoff, swapon)
一時的に何らかの障害によってメモリが不足してスワップが発生してしまったとします。原因となるプロセスを 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使用中
関連記事
- 使い所が難しいマイナーな運用コマンドコマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
- ipコマンドの基本的な使い方ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
- プロセス関連のコマンドプロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
- rpmとyumのチートシートrpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。 rpmは "rpmパッケージファイル" があれば何でもインストールできますが、...
- 運用時に大活躍する必須コマンドファイル内容を再帰的に検索 (grep) find コマンドはファイル名についてディレクトリを再帰的に検索します。ファイルの内容について指定したディレクトリ以下を再帰的に検索するためには grep に -r オプションを付与します。その際 -n および -i オプションも付与しておくと便利です。未来創発 NRI grep です。 $ grep -nri "pattern" dir -n (--li...