【问题标题】:What's the unit of `ru_maxrss` on Linux?Linux 上 `ru_maxrss` 的单位是什么?
【发布时间】:2012-08-16 13:34:24
【问题描述】:

这是来自man getrusage

struct rusage {
    struct timeval ru_utime; /* user time used */
    struct timeval ru_stime; /* system time used */
    long   ru_maxrss;        /* maximum resident set size */
    long   ru_ixrss;         /* integral shared memory size */
    long   ru_idrss;         /* integral unshared data size */
    long   ru_isrss;         /* integral unshared stack size */
    long   ru_minflt;        /* page reclaims */
    long   ru_majflt;        /* page faults */
    long   ru_nswap;         /* swaps */
    long   ru_inblock;       /* block input operations */
    long   ru_oublock;       /* block output operations */
    long   ru_msgsnd;        /* messages sent */
    long   ru_msgrcv;        /* messages received */
    long   ru_nsignals;      /* signals received */
    long   ru_nvcsw;         /* voluntary context switches */
    long   ru_nivcsw;        /* involuntary context switches */
};

但没有具体说明单位是什么。

我看到 FreeBSD 的文档说它以千字节为单位,但我不确定它在 Linux 上是什么单位。

【问题讨论】:

    标签: c linux memory memory-management getrusage


    【解决方案1】:

    对于rusage 结构,它不是standard 字段,因此POSIX 没有任何要求。但是在Linux

    ru_maxrss(Linux 2.6.32 起)

    这是使用的最大驻留集大小(以千字节为单位)。为了 RUSAGE_CHILDREN,这是最大孩子的驻留集大小, 不是进程树的最大驻留集大小。

    【讨论】:

    • 其实是千字节(1024字节),而不是千字节(1000字节)
    【解决方案2】:

    man page 说:

    ru_maxrss(Linux 2.6.32 起)

    这是使用的最大驻留集大小(以千字节为单位)。对于 RUSAGE_CHILDREN,这是最大子节点的常驻集大小, 不是进程树的最大驻留集大小。

    因此,它以千字节表示,就像在 BSD 中一样。

    【讨论】:

    • 其实是千字节(1024字节),而不是千字节(1000字节)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 2019-08-28
    • 1970-01-01
    • 2013-07-24
    • 2016-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多