[英]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.