Blob Blame History Raw
<html>
<title>smem memory reporting tool</title>
<body>
<h1>smem memory reporting tool</h1>

<p><b>smem</b> is a tool that can give numerous reports on memory usage on
  Linux systems. Unlike existing tools, smem can
  report <i>proportional set size</i> (PSS), which is a more meaningful
  representation of the amount of memory used by libraries and
  applications in a virtual memory system.</p>

<p>Because large portions of physical memory are typically shared
  among multiple applications, the standard measure of memory usage
  known as resident set size (RSS) will significantly overestimate
  memory usage. PSS instead measures each application's "fair share" of each
  shared area to give a realistic measure.<p>

<p>smem has many features:<p>

<ul>
 <li>system overview listing
 <li>listings by process, mapping, user
 <li>filtering by process, mapping, or user
 <li>configurable columns from multiple data sources
 <li>configurable output units and percentages
 <li>configurable headers and totals
 <li>reading live data from /proc
 <li>reading data snapshots from directory mirrors or compressed tarballs
 <li>built-in chart generation
</ul>

<p>smem has a few requirements:<p>
<ul>
<li>a reasonably modern kernel (> 2.6.27 or so)
<li>a reasonably recent version of Python (2.4 or so)
<li>the <a href="http://matplotlib.sourceforge.net/index.html">matplotlib</a>
  library for chart generation
</ul>

<h3>Using smem</h3>

<table>
<tr><td>
Show basic process information
</td><td>
smem
</td></tr>

<tr><td>
Show library-oriented view
</td><td>
smem -m
</td></tr>

<tr><td>
Show user-oriented view
</td><td>
smem -u
</td></tr>

<tr><td>
Show system view
</td><td>
smem -R 4G -K /path/to/vmlinux -w
</td></tr>

<tr><td>
Show totals and percentages
</td><td>
smem -t -p
</td></tr>

<tr><td>
Show different columns
</td><td>
smem -c "name user pss"
</td></tr>

<tr><td>
Sort by reverse RSS
</td><td>
smem -s rss -r
</td></tr>

<tr><td>
Show processes filtered by mapping
</td><td>
smem -M libxml
</td></tr>

<tr><td>
Show mappings filtered by process
</td><td>
smem -m -P [e]volution
</td></tr>

<tr><td>
Read data from capture tarball
</td><td>
smem --source capture.tar.gz
</td></tr>

<tr><td>
Show a bar chart labeled by pid
</td><td>
smem --bar pid -c "pss uss" 
</td></tr>

<tr><td>
Show a pie chart of RSS labeled by name
</td><td>
smem --pie name -s rss
</td></tr>

</table>


<h3>Getting smem</h3>

<p>To get the latest release version, <a href="download">click
    here</a>.</p>

<p>The latest source code can be grabbed from smem's Mercurial
  repository <a href="http://selenic.com/repo/smem">here</a> with
  the command:</p>

<pre>hg clone http://selenic.com/repo/smem</pre>

<h3>Feedback</h3>

<p>Write to the <a
href="http://selenic.com/mailman/listinfo/smem">smem</a> list at smem@selenic.com.</p>

</body>