---
name: "memstat"
section: "8"
platform: "linux"
package: "memstat"
version: "0.1-1"
release: "Debian 2.1 (Slink)"
platforms: ["linux"]
url: "https://new.carta.tech/memstat/8"
---

# memstat(8)

Identify what's using up virtual memory.

## NAME

memstat - Identify what's using up virtual memory.

## SYNOPSIS

**memstat** \[**-w**\]\

## DESCRIPTION

**memstat lists all the processes, executables, and shared libraries** **that are using up virtual memory.**

**First, the processes are listed.  An amount of memory is shown along** **with a process ID and the name of the executable which the process is** **running.  The amount of memory shown does not include shared memory:** **it only includes memory which is private to that process.  So, if a** **process is using a shared library like libc, the memory used to hold** **that library is not included.  The memory used to hold the** **executable's text-segment is also not included, since that too is** **shareable.**

**After the processes, the shared objects are listed.  An amount of** **memory is shown along with the filename of the shared object, followed** **by a list of the processes using the shared object.**

**Finally, a grand total is shown.  Note that this program shows the** **amount of virtual (not real) memory used by the various items.**

**meminfo gets its input from the /proc filesystem.  This must be** **compiled into your kernel and mounted for meminfo to work.  The** **pathnames shown next to the shared objects are determined by scanning** **the disk.  meminfo uses a configuration file, /etc/meminfo.conf,** **to determine which directories to scan.  This file should include all** **the major bin and lib directories in your system, as well as the /dev** **directory.  If you run an executable which is not in one of these** **directories, it will be listed by meminfo as \`\`unknown''.**

### Options

**The -w switch causes a wide printout: lines are not truncated at** **80 columns.**

## NOTES

**These reports are intended to help identify programs that are using an** **excessive amount of memory, and to reduce overall memory waste.**

## FILES

```
/etc/meminfo.conf
/proc/*/maps
```

## SEE ALSO

**[ps(1)](/ps/1.md), [top(1)](/top/1.md), [free(1)](/free/1.md), [vmstat(8)](/vmstat/8.md)**

## BUGS

**If you do the math, you'll see that ps and memstat don't always agree** **about how much virtual memory a process is using.  This is because** **most processes seem to map certain shared pages twice.  memstat counts** **these pages once, ps counts them twice.  I'm not sure which is** **the \`\`right'' way to measure it.**

**The proc filesystem identifies files by their device number and inode** **number.  To be useful, these numbers must be translated back into** **filenames.  This requires searching the disk (and thus the awkward** **configuration file meminfo.conf).  There should be some way around** **this.**

**The stat system call returns a dev\_t type, but the proc filesystem** **contains a device readout in the form of a string.  I have improvised** **a routine to convert the device readout string into a dev\_t, but I'm** **not sure it will work on all architectures.**

**It is possible to confuse meminfo by using mmap in combination** **with a block-device.  In the original version, meminfo treated** **block devices just like any other file, and if you mmap'ed one of** **them, they would show up on the shared-object list.  This worked for** **mmap'ed hard disks and floppies, but it produced absurd results with** **block devices like /dev/zero and /dev/mem.  As a partial fix,** **meminfo now ignores all mapped block devices, though this may** **cause meminfo to ignore some memory usage.**

**We really ought to show some real-memory usage statistics, but it's** **just not there in /proc.**

**Memory used by the kernel itself is not listed.**

## AUTHOR

**Written by Joshua Yelon \<jyelon@uiuc.edu\>**
