【问题标题】:exact total memory usage in linux that equals to system monitorlinux中确切的总内存使用量等于系统监视器
【发布时间】:2013-11-03 06:37:07
【问题描述】:

通过从“/proc/meminfo”中获取 Memtotal 和 Memfree 值并减去它们,我们必须得到 Linux 中的 Used Memory。我访问过的大多数线程和网页都通过这种方法来计算 Linux 中的总内存使用量。但是通过实施这种方法,我使用 GNOME 系统监视器得到了不同的结果!我的结果大于(大约两倍)。那么 GNOME System Monitor 使用的方法是什么?

【问题讨论】:

  • GNOME 是开源的。去看看他们是怎么计算的!
  • 不确定 GNOME 系统监视器,但写了一些关于 top、htop、free、ps herehere 的行,这可能会有所帮助...
  • 谢谢@Sukminder。我看到了你推荐的页面。确切的内存使用公式是:used memory=(MemTotal-MemFree)-(Buffers+Cached);
  • @user2949310:是的,我想是的。换句话说,与free 相同。添加了更详细的答案并包含源参考。

标签: c linux


【解决方案1】:

GNOME system monitor 使用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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2014-08-12
    • 2012-04-24
    • 2020-04-19
    • 1970-01-01
    相关资源
    最近更新 更多