2
通過從「/ proc/meminfo」獲取Memtotal和Memfree值並減去它們,我們必須在Linux中獲得已用內存。我訪問過的大部分線程和網頁已經引導了這種方法來計算Linux中的總內存使用量。但是通過實施這種方法,我得到了與GNOME系統監視器不同的結果!我的結果大於(大約兩倍)。那麼GNOME系統監視器使用什麼方法?在Linux中,確切的總內存使用量等於系統監視器
通過從「/ proc/meminfo」獲取Memtotal和Memfree值並減去它們,我們必須在Linux中獲得已用內存。我訪問過的大部分線程和網頁已經引導了這種方法來計算Linux中的總內存使用量。但是通過實施這種方法,我得到了與GNOME系統監視器不同的結果!我的結果大於(大約兩倍)。那麼GNOME系統監視器使用什麼方法?在Linux中,確切的總內存使用量等於系統監視器
GNOME system monitor使用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);
GNOME是開源的。去看看他們是如何計算的! –
不知道GNOME系統監視器,但寫了一些關於top,htop,free,ps [這裏](http://unix.stackexchange.com/a/65852/28489)和[here](http:// unix.stackexchange.com/a/58541/28489)可能會有所幫助... – Runium
謝謝@Sukminder。我看到了你推薦的頁面。確切的內存使用公式是:used memory =(MemTotal-MemFree) - (Buffers + Cached); – user2949310