Just discovered the macOS footprint command

A beginner terminal guide using pgrep to find a PID and footprint to inspect the process
A beginner terminal guide using pgrep to find a PID and footprint to inspect the process

I’ve administered Linux systems for around 25 years and used macOS for about 15. Somehow, I had never come across the footprint command.

What a useful little command!

top and htop are great when you want to watch the whole system. When I want to understand the memory used by one process, footprint gives me a focused report that is much easier to read.

Find a process with pgrep

I tested footprint on a remote Mac using the river account. First I used pgrep to find the account’s zsh shell:

$ pgrep -u river zsh
45305

The -u river part limits the search to processes owned by river. The result, 45305, is the process ID or PID.

Type the PID into footprint

Next I typed that same number into footprint:

$ footprint -p 45305
======================================================================
zsh [45305]: 64-bit    Footprint: 2072 KB (4096 bytes per page)
======================================================================

  Dirty      Clean  Reclaimable    Regions    Category
 562 KB      16 KB          0 B        303    __DATA
 360 KB        0 B          0 B          1    MALLOC_NANO
 304 KB        0 B          0 B          3    dyld private memory
    ...        ...          ...        ...    output shortened
2072 KB    1392 KB          0 B       1732    TOTAL

Auxiliary data:
    phys_footprint: 2104 KB
    phys_footprint_peak: 2172 KB

The memory figures came from a real Intel Mac running macOS 15.5. Your PID and memory values will be different.

The terminal image at the top shows the same two-step procedure. There are no pipes, variables or shell shortcuts: read the PID from pgrep, then type it into footprint.

What should I look at?

Start with three parts of the report:

  • The first line shows the process name, PID and overall footprint.
  • The TOTAL row adds up the memory categories in the table.
  • phys_footprint near the bottom is macOS’s physical-memory accounting for the process.

The Dirty column is useful too. Its largest rows show where much of the process’s memory is being used. The footprint command reference explains the columns without making you learn every option first.

That is enough to get started. I cannot quite believe this command has been sitting in macOS all this time without me noticing it.

See also