mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 06:24:53 +08:00
0d68bc92c4
The perf kmem command records and analyze kernel memory allocation only
for SLAB objects. This patch implement a simple page allocator analyzer
using kmem:mm_page_alloc and kmem:mm_page_free events.
It adds two new options of --slab and --page. The --slab option is for
analyzing SLAB allocator and that's what perf kmem currently does.
The new --page option enables page allocator events and analyze kernel
memory usage in page unit. Currently, 'stat --alloc' subcommand is
implemented only.
If none of these --slab nor --page is specified, --slab is implied.
First run 'perf kmem record' to generate a suitable perf.data file:
# perf kmem record --page sleep 5
Then run 'perf kmem stat' to postprocess the perf.data file:
# perf kmem stat --page --alloc --line 10
-------------------------------------------------------------------------------
PFN | Total alloc (KB) | Hits | Order | Mig.type | GFP flags
-------------------------------------------------------------------------------
4045014 | 16 | 1 | 2 | RECLAIM | 00285250
4143980 | 16 | 1 | 2 | RECLAIM | 00285250
3938658 | 16 | 1 | 2 | RECLAIM | 00285250
4045400 | 16 | 1 | 2 | RECLAIM | 00285250
3568708 | 16 | 1 | 2 | RECLAIM | 00285250
3729824 | 16 | 1 | 2 | RECLAIM | 00285250
3657210 | 16 | 1 | 2 | RECLAIM | 00285250
4120750
| 16 | 1 | 2 | RECLAIM | 00285250
3678850 | 16 | 1 | 2 | RECLAIM | 00285250
3693874 | 16 | 1 | 2 | RECLAIM | 00285250
... | ... | ... | ... | ... | ...
-------------------------------------------------------------------------------
SUMMARY (page allocator)
========================
Total allocation requests : 44,260 [ 177,256 KB ]
Total free requests : 117 [ 468 KB ]
Total alloc+freed requests : 49 [ 196 KB ]
Total alloc-only requests : 44,211 [ 177,060 KB ]
Total free-only requests : 68 [ 272 KB ]
Total allocation failures : 0 [ 0 KB ]
Order Unmovable Reclaimable Movable Reserved CMA/Isolated
----- ------------ ------------ ------------ ------------ ------------
0 32 . 44,210 . .
1 . . . . .
2 . 18 . . .
3 . . . . .
4 . . . . .
5 . . . . .
6 . . . . .
7 . . . . .
8 . . . . .
9 . . . . .
10 . . . . .
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Joonsoo Kim <js1304@gmail.com>
Cc: Minchan Kim <minchan@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: linux-mm@kvack.org
Link: http://lkml.kernel.org/r/1428298576-9785-4-git-send-email-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
58 lines
940 B
Plaintext
58 lines
940 B
Plaintext
perf-kmem(1)
|
|
============
|
|
|
|
NAME
|
|
----
|
|
perf-kmem - Tool to trace/measure kernel memory properties
|
|
|
|
SYNOPSIS
|
|
--------
|
|
[verse]
|
|
'perf kmem' {record|stat} [<options>]
|
|
|
|
DESCRIPTION
|
|
-----------
|
|
There are two variants of perf kmem:
|
|
|
|
'perf kmem record <command>' to record the kmem events
|
|
of an arbitrary workload.
|
|
|
|
'perf kmem stat' to report kernel memory statistics.
|
|
|
|
OPTIONS
|
|
-------
|
|
-i <file>::
|
|
--input=<file>::
|
|
Select the input file (default: perf.data unless stdin is a fifo)
|
|
|
|
-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)
|
|
|
|
-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
|
|
|
|
SEE ALSO
|
|
--------
|
|
linkperf:perf-record[1]
|