読者です 読者をやめる 読者になる 読者になる

意訳 - Linux ate my RAM!

Linux

Linux に触り始めのころに陥りがち話を、以下のサイトが軽快に解説しているので意訳してみた。
Linux ate my RAM!
(尚、連絡先が不明で作者さんに未承諾)


Linux がメモリを食い尽くしてしまう!
落ち着け!メモリは問題ない!


なんでさ?
Linux は未使用のメモリをディスク・キャシュとして使用する。
これは一見、メモリを逼迫するかのようだが、
まったく問題なし!



なんでそんな事すんの?
ディスク・キャッシュはシステムの高速化に寄与するためである。
デメリットは無いのだが、よく混乱を招いている。
アプリケーションからメモリを奪うことは絶対にない!



たくさんのアプリを実行するんだけど?
もしたくさんのメモリが必要な場合、アプリはディスク・キャッシュから取り戻すだけだ。
ディスク・キャッシュは直ちにアプリへ還元される!



もっと swap が必要なんじゃ?
不要。
ディスク・キャッシュは、アプリが、その時点で不要なメモリを使用する。
swap は使わない。
もしアプリがより多くのメモリを必要とする場合、ディスク・キャッシュから取り戻す。
スワッピングは行わない。



どうすれば Linux でディスク・キャッシュを無効にできるの?
無効にすることはできない。
無効にする理由として、「アプリが利用できるメモリが少なくなってしまうから」と考えがちだけど、そんなことはない!
ディスク・キャッシュのおかげでアプリの起動は早くなるし、実行速度も向上する。
だから、無効にする理由なんて無いんだよ!



なんで top / free コマンドの結果で、全メモリが使用中(used)になるの?
単なる言い回しの勘違いによるもの。
君とLinuxは各々、「未使用なメモリを“free”」、「アプリが使用中のメモリを“used” 」と呼ぶ。
では、「“何か”に使われているが、アプリにも有効なメモリ」を何と呼ぶか?

おそらく君は “free” と呼び、Linux は “used” と呼ぶ。

メモリが… 君の呼び方 Linux の呼び方
アプリによって使用中 Used Used
“何か”に使われているが、アプリにも有効 Free Used
未使用 Free Free

上記の“何か”とは top/free コマンドで言う “buffer” と “cached” である。
君とLinux とで認識の違いがあるだけで、メモリが逼迫してるように見えて、実はそうではないんだ。



どうすれば実際にどれくらいの未使用メモリがあるか確認できるの?
アプリが使用可能な未使用メモリがどれくらいあるか確認するには、free -m を実行して、
得られた出力から “-/+ buffers/cache” 行の “free” の列に注目する。

ガバイトでの結果は以下のとおり:

$ free -m
             total       used       free     shared    buffers     cached
Mem:          1504       1491         13          0         91        764
-/+ buffers/cache:        635        869
Swap:         2047          6       2041
$

もしこの数字をどのように見れば判らない場合、メモリは99%フルと捉えてしまうが、実際には42%である。



どうやって裏付けすればいい?
ディスク・キャッシュについての詳細と、より深い知識については、このページを参考のこと。



(おわり。気が向いたら、リンク先のページも意訳してみよう)