簡體   English   中英

linux中確切的總內存使用情況等於系統監視器

[英]exact total memory usage in linux that equals to system monitor

通過從“ / proc / meminfo”獲取Memtotal和Memfree值並減去它們,我們必須獲得Linux中的Used Memory。 我訪問過的大多數線程和網頁都通過這種方法進行了指導,以計算Linux中的總內存使用量。 但是通過實現此方法,我使用GNOME System Monitor獲得了不同的結果! 我的結果大於該值(大約兩倍)。 那么GNOME系統監視器使用什么方法?

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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM