diff options
author | Sergey Senozhatsky <sergey.senozhatsky@gmail.com> | 2015-11-05 18:45:20 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-11-05 19:34:48 -0800 |
commit | 4980a9639b4bf4948f4cba60e3e6c45a635b98ec (patch) | |
tree | 60657bf18171f02d2288366f55a7d93f6f0b2dfa | |
parent | 2b10075539d334b4732a07857672972fe971f7df (diff) |
tools/vm/slabinfo: limit the number of reported slabs
Introduce opt "-N|--lines=K" to limit the number of slabs
being reported in output_slabs().
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | tools/vm/slabinfo.c | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/tools/vm/slabinfo.c b/tools/vm/slabinfo.c index 258ed014729d..2ef7f0ca0168 100644 --- a/tools/vm/slabinfo.c +++ b/tools/vm/slabinfo.c @@ -79,6 +79,7 @@ int sort_active = 0; int set_debug = 0; int show_ops = 0; int show_activity = 0; +int output_lines = -1; /* Debug options */ int sanity = 0; @@ -124,6 +125,7 @@ static void usage(void) "-v|--validate Validate slabs\n" "-z|--zero Include empty slabs\n" "-1|--1ref Single reference\n" + "-N|--lines=K Show the first K slabs\n" "\nValid debug options (FZPUT may be combined)\n" "a / A Switch on all debug options (=FZUP)\n" "- Switch off all debug options\n" @@ -1242,11 +1244,14 @@ static void output_slabs(void) { struct slabinfo *slab; - for (slab = slabinfo; slab < slabinfo + slabs; slab++) { + for (slab = slabinfo; (slab < slabinfo + slabs) && + output_lines != 0; slab++) { if (slab->alias) continue; + if (output_lines != -1) + output_lines--; if (show_numa) slab_numa(slab, 0); @@ -1285,6 +1290,7 @@ struct option opts[] = { { "validate", no_argument, NULL, 'v' }, { "zero", no_argument, NULL, 'z' }, { "1ref", no_argument, NULL, '1'}, + { "lines", required_argument, NULL, 'N'}, { NULL, 0, NULL, 0 } }; @@ -1296,7 +1302,7 @@ int main(int argc, char *argv[]) page_size = getpagesize(); - while ((c = getopt_long(argc, argv, "aAd::Defhil1noprstvzTS", + while ((c = getopt_long(argc, argv, "aAd::Defhil1noprstvzTSN:", opts, NULL)) != -1) switch (c) { case '1': @@ -1358,7 +1364,13 @@ int main(int argc, char *argv[]) case 'S': sort_size = 1; break; - + case 'N': + if (optarg) { + output_lines = atoi(optarg); + if (output_lines < 1) + output_lines = 1; + } + break; default: fatal("%s: Invalid option '%c'\n", argv[0], optopt); |