What's the unit of `ru_maxrss` on Linux?

c, getrusage, linux, memory, memory-management

Solution

It's not a standard field for the `rusage` structure so POSIX doesn't mandate anything about it. But on Linux

`ru_maxrss` (since Linux 2.6.32)

This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest child, not the maximum resident set size of the process tree.

Problem

This is from `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 */ }; ``` However it's not specified what's the unit. I saw FreeBSD's documentation which says it's in kilobytes, but I'm not sure about what unit it is on Linux.

Original source