« 家庭用外付けストレージケースを選んだときの話 | Main | 書評「Webエンジニアが知っておきたいインフラの基本」 »

October 30, 2014

freeコマンドの出力結果について考える

Linuxの空きメモリ状況はfreeコマンドで確認できるのは有名ですが、出力結果がどのように構成されているのか正確に知らない部分があったので、今回改めて整理してみました。

【freeの出力結果を見てみる】
freeコマンドを実行すると下記のように表示されます。単位はKB(Kilo byte)です。

$ free
             total       used       free     shared    buffers     cached
Mem:       1018596     556204     462392        144      28188     403360
-/+ buffers/cache:     124656     893940
Swap:            0          0          0


【キャッシュ使用量込みの出力結果を見てみる】
まずはこの部分を見てみます。

             total       used       free
Mem: 1018596 556204 462392

これを見ると、トータルメモリは1,018,596KByte(約1GB)、使用量は556,204KByte(約556MB)、そして空きは462,392KByte(約462MB)です。
556,204+462,392=1,018,596なので計算が合いますね。

ちなみにここでusedに含まれる使用量にはキャッシュ使用分も含まれるので実際のデータはもっと小さいです。

【キャッシュ使用量抜きの出力結果を見てみる】
それではキャッシュ使用分を抜いたときはどうなるでしょうか?

             total       used       free
-/+ buffers/cache: 124656 893940

これを見ると、使用量は124,656KByte(約125MB)、そして空きは893,940KByte(約894MB)です。124,656+893,940=1,018,596となり、トータルメモリの数字(約1GB)と合います。
どうやらOSにはキャッシュとして、556,204-124,656=431,548KByte(約43MB)のメモリが使われていたようですね。


【キャッシュ使用量の出力結果を見てみる】
最後にそのキャッシュの使われ方を見てみます。

           shared    buffers     cached
Mem: 144 28188 403360

sharedは共有メモリに割り当てられたメモリのことを指しますが、これは昔の名残なようで現在は無視して良いようです。
buffersはバッファキャッシュに割り当てられたメモリで、ブロックデバイス用のキャッシュを指します。
cachedはページキャッシュに割り当てたメモリを指します。

sharedは無視して良いようなので、28,188+403,360を足すと431,548となり、先ほど計算した数字(約43MB)と合いますね。

【最後に】
・バッファキャッシュとページキャッシュの違いが紛らわしいですが、最近のKernelではページキャッシュに多くが統合されていると聞きます。(詳細はそのうち調べてみようと思います)


・一時的にキャッシュを解放したい場合は下記の通りです。100%完全に解放されるわけではありませんが。

$ echo 3 > /proc/sys/vm/drop_caches

|

« 家庭用外付けストレージケースを選んだときの話 | Main | 書評「Webエンジニアが知っておきたいインフラの基本」 »

サーバ・OS」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/60526408

Listed below are links to weblogs that reference freeコマンドの出力結果について考える:

« 家庭用外付けストレージケースを選んだときの話 | Main | 書評「Webエンジニアが知っておきたいインフラの基本」 »