smem(8) - Linux man page
Name
smem - Report memory usage with shared memory divided proportionally.Synopsis
smem [options]Description
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.
Output Formatting
- -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 providing 'Pss' metric in /proc/<pid>/smaps (generally 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/smemSource code repository: http://selenic.com/repo/smem
Mailing list: http://selenic.com/mailman/listinfo/smem