2011-07-12 17 views
0

私はシステムで使用されているメモリの総量を計算してから、使用されたメモリの総量をプロセスや他のエンティティに基づいて計算しなければなりませんでした。メモリ使用量の分析

私は/ proc/meminfoを使用して、合計使用メモリ(Total Usable Mem - Total Mem Mem)を取得しました。 その後、すべてのプロセスと個々のメモリ使用量がリストされます。 しかし両方の数字は、私が予想していなかったものと一致しませんでした。 すべてのプロセスで使用されているメモリの合計でも、メモリを使用するために7MBのアカウントを取得できませんでした。

ここに情報が欠けていますか?

答えて

0

共有ライブラリは数字を台無しにする可能性があります。プロセスはメモリを直接共有できます。メモリの一部のセクションは、ハードウェアのI/Oマッピングやその他のOS内部用に予約されています。

+0

であっ探しているかもしれないと推測その差が実際には(もっと)大きくなっていることを意味します。あなたは 'ゼロコピー'バッファを指していますか?これらは、実際にはユーザープロセスによって割り当てられ、所有されます。 (_カーネルは、ページをロックしたままにし、アドレスをカーネルスペースIIRC_に再マップするよう通知されます)。 – sehe

1

あなたは<quote>は、すべてのプロセスを一覧表示され、[原文のまま]を使用して、個々のメモリ使用量</quote>psあなたはそれをすることはないだろう

The SIZE and RSS fields don't count some parts of a process including the page tables, kernel stack, struct thread_info, and struct task_struct. This is usually at least 20 KiB of memory that is always resident. SIZE is the virtual size of the process (code+data+stack).

+0

共有メモリに正しく課金するという問題もあります。 (およびページテーブルの共有セクション) – Spudd86