「/proc/meminfo」から Memtotal と Memfree の値を取得し、それらを差し引くことで、Linux の使用済みメモリを取得する必要があります。私が訪れたほとんどのスレッドと Web ページは、Linux での合計メモリ使用量を計算するためのこのアプローチをガイドしています。しかし、この方法を実装することで、GNOME System Monitor で別の結果が得られます! 私の結果はそれよりも大きい (約 2 倍)。では、GNOME System Monitor が使用する方法は何ですか?
質問する
582 次
1 に答える
1
GNOME システム モニターはlibgtop
、さまざまなプラットフォームのメモリ情報を取得するために使用します。Linux の場合、ルーチンは次のようにsysdeps/linux/mem.c
2を使用します。
"MemTotal"のような文字列は の見出しです/proc/meminfo
。
…
buf->total = get_scaled(buffer, "MemTotal:");
buf->free = get_scaled(buffer, "MemFree:");
buf->used = buf->total - buf->free;
buf->shared = 0;
buf->buffer = get_scaled(buffer, "Buffers:");
buf->cached = get_scaled(buffer, "Cached:");
buf->user = buf->total - buf->free - buf->cached - buf->buffer;
アプリケーションで報告されたメモリは ですbuf->user
。より正確にはsrc/load-graph.cpp
1で:
mempercent = (float)mem.user / (float)mem.total;
set_memory_label_and_picker(GTK_LABEL(graph->labels.memory),
GSM_COLOR_BUTTON(graph->mem_color_picker),
mem.user, mem.total, mempercent);
于 2013-11-03T23:30:01.107 に答える