NAME¶
smem - Report memory usage with shared memory divided proportionally.
SYNOPSIS¶
smem [
options]
DESCRIPTION¶
smem reports physical memory usage, taking shared memory pages into
account. Unshared memory is reported as the USS (Unique Set Size). Shared
memory is divided evenly among the processes sharing that memory. The unshared
memory (USS) plus a process's proportion of shared memory is reported as the
PSS (Proportional Set Size). The USS and PSS only include physical memory
usage. They do not include memory that has been swapped out to disk.
Memory can be reported by process, by user, by mapping, or systemwide. Both text
mode and graphical output are available.
OPTIONS¶
GENERAL OPTIONS¶
- -h, --help
- Show help.
SOURCE DATA¶
By default, smem will pull most of the data it needs from the /proc filesystem
of the system it is running on. The --source option lets you used a tarred set
of /proc data saved earlier, possibly on a different machine. The --kernel and
--realmem options let you specify a couple things that smem cannot discover on
its own.
- -K KERNEL, --kernel=KERNEL
- Path to an uncompressed kernel image. This lets smem
include the size of the kernel's code and statically allocated data in the
systemwide (-w) output. (To obtain an uncompressed image of a kernel on
disk, you may need to build the kernel yourself, then locate file vmlinux
in the source tree.)
- -R REALMEM,
--realmem=REALMEM
- Amount of physical RAM. This lets smem detect the amount of
memory used by firmware/hardware in the systemwide (-w) output. If
provided, it will also be used as the total memory size to base
percentages on. Example: --realmem=1024M
- -S SOURCE, --source=SOURCE
- /proc data source. This lets you specify an alternate
source of the /proc data. For example, you can capture data from an
embedded system using smemcap, and parse the data later on a different
machine. If the --source option is not included, smem reports memory usage
on the running system.
REPORT BY¶
If none of the following options are included, smem reports memory usage by
process.
- -m, --mappings
- Report memory usage by mapping.
- -u, --users
- Report memory usage by user.
- -w, --system
- Report systemwide memory usage summary.
FILTER BY¶
If none of these options are included, memory usage is reported for all
processes, users, or mappings. (Note: If you are running as a non-root user,
and if you are not using the --source options, then you will only see data
from processes whose /proc/ information you have access to.)
- -M MAPFILTER,
--mapfilter=MAPFILTER
- Mapping filter regular expression.
- -P PROCESSFILTER,
--processfilter=PROCESSFILTER
- Process filter regular expression.
- -U USERFILTER,
--userfilter=USERFILTER
- User filter regular expression.
- -c COLUMNS,
--columns=COLUMNS
- Columns to show.
- -H, --no-header
- Disable header line.
- -k, --abbreviate
- Show unit suffixes.
- -n, --numeric
- Show numeric user IDs instead of usernames.
- -p, --percent
- Show percentages.
- -r, --reverse
- Reverse sort.
- -s SORT, --sort=SORT
- Field to sort on.
- -t, --totals
- Show totals.
OUTPUT TYPE¶
These options specify graphical output styles.
- --bar=BAR
- Show bar graph.
- --pie=PIE
- Show pie graph.
REQUIREMENTS¶
smem requires:
- •
- Linux kernel 2.6.27 or newer.
- •
- Python 2.x (at least 2.4 or so).
- •
- The matplotlib library (only if you want to generate
graphical charts).
EMBEDDED USAGE¶
To capture memory statistics on resource-constrained systems, the the
smem source includes a utility named
smemcap.
smemcap
captures all /proc entries required by
smem and outputs them as an
uncompressed .tar file to STDOUT.
smem can analyze the output using the
--source option.
smemcap is small and does not require Python.
To use
smemcap:
- 1.
- Obtain the smem source at http://selenic.com/repo/smem
- 2.
- Compile smemcap.c for your target system.
- 3.
- Run smemcap on the target system and save the
output:
smemcap > memorycapture.tar
- 4.
- Copy the output to another machine and run smem on it:
smem -S memorycapture.tar
FILES¶
/proc/$pid/cmdline
/proc/$pid/smaps
/proc/$pid/stat
/proc/meminfo
/proc/version
RESOURCES¶
Main Web Site:
http://www.selenic.com/smem
Source code repository:
http://selenic.com/repo/smem
Mailing list:
http://selenic.com/mailman/listinfo/smem
SEE ALSO¶
free(1),
pmap(1),
proc(5),
ps(1),
top(1),
vmstat(8)
COPYING¶
Copyright (C) 2008-2009 Matt Mackall. Free use of this software is granted under
the terms of the GNU General Public License version 2 or later.
AUTHOR¶
smem was written by Matt Mackall.