---
name: "perf-kmem"
section: "1"
platform: "linux"
package: "perf"
version: "7.3.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/perf-kmem"
---

# perf-kmem(1)

Tool to trace/measure kernel memory properties

## NAME

perf-kmem - Tool to trace/measure kernel memory properties

## SYNOPSIS

```
perf kmem [<options>] {record|stat}
```

## DESCRIPTION

There are two variants of perf kmem:

```
'perf kmem [<options>] record [<perf-record-options>] <command>' to
record the kmem events of an arbitrary workload. Additional 'perf
record' options may be specified after record, such as '-o' to
change the output file name.
```

```
'perf kmem [<options>] stat' to report kernel memory statistics.
```

## OPTIONS

- \-i \<file\>, --input=\<file\>

  For stat, select the input file (default: perf.data unless stdin is a fifo)

- \-f, --force

  Don’t do ownership validation

- \-v, --verbose

  Be more verbose. (show symbol address, etc)

- \--caller

  Show per-callsite statistics

- \--alloc

  Show per-allocation statistics

- \-s \<key\[,key2...\]\>, --sort=\<key\[,key2...\]\>

  Sort the output (default: *frag,hit,bytes* for slab and *bytes,hit* for page). Available sort keys are *ptr, callsite, bytes, hit, pingpong, frag* for slab and *page, callsite, bytes, hit, order, migtype, gfp* for page. This option should be preceded by one of the mode selection options - i.e. --slab, --page, --alloc and/or --caller.

- \-l \<num\>, --line=\<num\>

  Print n lines only

- \--raw-ip

  Print raw ip instead of symbol

- \--slab

  Analyze SLAB allocator events.

- \--page

  Analyze page allocator events

- \--live

  Show live page stat. The perf kmem shows total allocation stat by default, but this option shows live (currently allocated) pages instead. (This option works with --page option only)

- \--time=\<start\>,\<stop\>

  Only analyze samples within given time window: \<start\>,\<stop\>. Times have the format seconds.microseconds. If start is not given (i.e., time string is *,x.y*) then analysis starts at the beginning of the file. If stop time is not given (i.e, time string is *x.y,*) then analysis goes to end of file.

## SEE ALSO

[**perf-record**(1)](/perf-record/1.md)
