2009-09-10 2 views
7

私は組み込みLinuxのメモリ使用量を理解しようとしています。LinuxでのMemFreeの計算方法

トップユーティリティとプロセスファイル/ proc/meminfoを使用することで、プロセスが使用している仮想メモリの量と、システムが使用できる物理メモリの量を確認できます。しかし、どのようなプロセスでも、仮想メモリは使用されている物理メモリよりもはるかに高い可能性があります。これは組み込みシステムなのでメモリスワップは無効になります(SwapTotal = 0)

Linuxはどのように空き物理メモリを計算していますか?仮想メモリ空​​間に割り当てられたすべてのものを考慮していないようです。

答えて

12

MemFree/proc/meminfoは、バディアロケータで空きページ数をカウントしたものです。このバディアロケータは、カーネル内の物理メモリ割り当ての基本単位です。しかし、たとえ空のSLABを解放したり、キャッシュ/バッファRAMを破棄したり(たとえ実行中のプロセスでPTEを無効にしたとしても)、最後の手段として、時間の節約のためにバディアロケータにページを返す方法がたくさんあります物を交換する

実際には、MemFreeは、通常、物理RAMの総量のわずか5~10%に制限されています。余分な空きRAMは、時間の経過と共にキャッシュに取り込まれます。したがって、MemFreeだけでは全体のメモリ状況が非常に不完全です。

特定のプロセスの仮想メモリ(VSIZE)は、プロセスのアドレス空間にマップされているすべてのメモリセグメントのサイズの合計を指します。ただし、これらのすべてが物理的に存在するわけではありません - 一部はpaged in upon first accessである可能性があり、実際に使用されるまでメモリとして登録されません。指定されたページが複数の仮想アドレスにマッピングされていると正確ではないかもしれませんが、にマップされているページのみが登録されているため、常駐サイズ(RSIZE)はより正確です。複数のプロセスを検討する - 共有ライブラリは、そのライブラリを使用しているすべてのプロセスに同じ物理RAMを割り当てている)

+0

私はこれが実際にあると思い、私の混乱の核心に答えて「それだけ、今にマッピングされているページを登録して常駐サイズ(RSIZE)は、より正確な図である... ...」私のだから、いずれかのプロセスがVSIZEのすべてを割り当てることを決定した場合、物理メモリもその量に増加すると推測されます。 – simon

3

htopを使用してみてください。あなたはsudo apt-get install htopまたはyum install htopをインストールする必要があります。

メモリ使用量をより正確に表します。

基本的には、「バッファ/キャッシュ」になります。

free -m 

バッファ/キャッシュ行の自由列を見て、これは実際に利用可能なもののより正確な表現です。

   total  used  free  shared buffers  cached 
Mem:   3770  3586  183   0  112  1498 
-/+ buffers/cache:  1976  1793 
Swap:   7624  750  6874 
+0

残念ながら、私の組み込みシステムでBusyboxからhtopを入手できるようには見えません。 – simon