2

「/proc/meminfo」から Memtotal と Memfree の値を取得し、それらを差し引くことで、Linux の使用済みメモリを取得する必要があります。私が訪れたほとんどのスレッドと Web ページは、Linux での合計メモリ使用量を計算するためのこのアプローチをガイドしています。しかし、この方法を実装することで、GNOME System Monitor で別の結果が得られます! 私の結果はそれよりも大きい (約 2 倍)。では、GNOME System Monitor が使用する方法は何ですか?

4

1 に答える 1

1

GNOME システム モニターlibgtop、さまざまなプラットフォームのメモリ情報を取得するために使用します。Linux の場合、ルーチンは次のようにsysdeps/linux/mem.c2を使用します。

"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.cpp1で:

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 に答える