diff options
Diffstat (limited to 'tools/perf')
| -rw-r--r-- | tools/perf/Documentation/perf-bench.txt | 78 | ||||
| -rw-r--r-- | tools/perf/bench/mem-memcpy.c | 4 | ||||
| -rw-r--r-- | tools/perf/bench/mem-memset.c | 8 | ||||
| -rw-r--r-- | tools/perf/builtin-bench.c | 4 |
4 files changed, 83 insertions, 11 deletions
diff --git a/tools/perf/Documentation/perf-bench.txt b/tools/perf/Documentation/perf-bench.txt index a3dbadb26ef5..f3c716a4cad3 100644 --- a/tools/perf/Documentation/perf-bench.txt +++ b/tools/perf/Documentation/perf-bench.txt | |||
| @@ -12,7 +12,7 @@ SYNOPSIS | |||
| 12 | 12 | ||
| 13 | DESCRIPTION | 13 | DESCRIPTION |
| 14 | ----------- | 14 | ----------- |
| 15 | This 'perf bench' command is general framework for benchmark suites. | 15 | This 'perf bench' command is a general framework for benchmark suites. |
| 16 | 16 | ||
| 17 | COMMON OPTIONS | 17 | COMMON OPTIONS |
| 18 | -------------- | 18 | -------------- |
| @@ -45,14 +45,20 @@ SUBSYSTEM | |||
| 45 | 'sched':: | 45 | 'sched':: |
| 46 | Scheduler and IPC mechanisms. | 46 | Scheduler and IPC mechanisms. |
| 47 | 47 | ||
| 48 | 'mem':: | ||
| 49 | Memory access performance. | ||
| 50 | |||
| 51 | 'all':: | ||
| 52 | All benchmark subsystems. | ||
| 53 | |||
| 48 | SUITES FOR 'sched' | 54 | SUITES FOR 'sched' |
| 49 | ~~~~~~~~~~~~~~~~~~ | 55 | ~~~~~~~~~~~~~~~~~~ |
| 50 | *messaging*:: | 56 | *messaging*:: |
| 51 | Suite for evaluating performance of scheduler and IPC mechanisms. | 57 | Suite for evaluating performance of scheduler and IPC mechanisms. |
| 52 | Based on hackbench by Rusty Russell. | 58 | Based on hackbench by Rusty Russell. |
| 53 | 59 | ||
| 54 | Options of *pipe* | 60 | Options of *messaging* |
| 55 | ^^^^^^^^^^^^^^^^^ | 61 | ^^^^^^^^^^^^^^^^^^^^^^ |
| 56 | -p:: | 62 | -p:: |
| 57 | --pipe:: | 63 | --pipe:: |
| 58 | Use pipe() instead of socketpair() | 64 | Use pipe() instead of socketpair() |
| @@ -115,6 +121,72 @@ Example of *pipe* | |||
| 115 | 59004 ops/sec | 121 | 59004 ops/sec |
| 116 | --------------------- | 122 | --------------------- |
| 117 | 123 | ||
| 124 | SUITES FOR 'mem' | ||
| 125 | ~~~~~~~~~~~~~~~~ | ||
| 126 | *memcpy*:: | ||
| 127 | Suite for evaluating performance of simple memory copy in various ways. | ||
| 128 | |||
| 129 | Options of *memcpy* | ||
| 130 | ^^^^^^^^^^^^^^^^^^^ | ||
| 131 | -l:: | ||
| 132 | --length:: | ||
| 133 | Specify length of memory to copy (default: 1MB). | ||
| 134 | Available units are B, KB, MB, GB and TB (case insensitive). | ||
| 135 | |||
| 136 | -r:: | ||
| 137 | --routine:: | ||
| 138 | Specify routine to copy (default: default). | ||
| 139 | Available routines are depend on the architecture. | ||
| 140 | On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. | ||
| 141 | |||
| 142 | -i:: | ||
| 143 | --iterations:: | ||
| 144 | Repeat memcpy invocation this number of times. | ||
| 145 | |||
| 146 | -c:: | ||
| 147 | --clock:: | ||
| 148 | Use perf's cpu-cycles event instead of gettimeofday syscall. | ||
| 149 | |||
| 150 | -o:: | ||
| 151 | --only-prefault:: | ||
| 152 | Show only the result with page faults before memcpy. | ||
| 153 | |||
| 154 | -n:: | ||
| 155 | --no-prefault:: | ||
| 156 | Show only the result without page faults before memcpy. | ||
| 157 | |||
| 158 | *memset*:: | ||
| 159 | Suite for evaluating performance of simple memory set in various ways. | ||
| 160 | |||
| 161 | Options of *memset* | ||
| 162 | ^^^^^^^^^^^^^^^^^^^ | ||
| 163 | -l:: | ||
| 164 | --length:: | ||
| 165 | Specify length of memory to set (default: 1MB). | ||
| 166 | Available units are B, KB, MB, GB and TB (case insensitive). | ||
| 167 | |||
| 168 | -r:: | ||
| 169 | --routine:: | ||
| 170 | Specify routine to set (default: default). | ||
| 171 | Available routines are depend on the architecture. | ||
| 172 | On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. | ||
| 173 | |||
| 174 | -i:: | ||
| 175 | --iterations:: | ||
| 176 | Repeat memset invocation this number of times. | ||
| 177 | |||
| 178 | -c:: | ||
| 179 | --clock:: | ||
| 180 | Use perf's cpu-cycles event instead of gettimeofday syscall. | ||
| 181 | |||
| 182 | -o:: | ||
| 183 | --only-prefault:: | ||
| 184 | Show only the result with page faults before memset. | ||
| 185 | |||
| 186 | -n:: | ||
| 187 | --no-prefault:: | ||
| 188 | Show only the result without page faults before memset. | ||
| 189 | |||
| 118 | SEE ALSO | 190 | SEE ALSO |
| 119 | -------- | 191 | -------- |
| 120 | linkperf:perf[1] | 192 | linkperf:perf[1] |
diff --git a/tools/perf/bench/mem-memcpy.c b/tools/perf/bench/mem-memcpy.c index 71557225bf92..d990365cafa0 100644 --- a/tools/perf/bench/mem-memcpy.c +++ b/tools/perf/bench/mem-memcpy.c | |||
| @@ -32,13 +32,13 @@ static bool no_prefault; | |||
| 32 | static const struct option options[] = { | 32 | static const struct option options[] = { |
| 33 | OPT_STRING('l', "length", &length_str, "1MB", | 33 | OPT_STRING('l', "length", &length_str, "1MB", |
| 34 | "Specify length of memory to copy. " | 34 | "Specify length of memory to copy. " |
| 35 | "available unit: B, MB, GB (upper and lower)"), | 35 | "Available units: B, KB, MB, GB and TB (upper and lower)"), |
| 36 | OPT_STRING('r', "routine", &routine, "default", | 36 | OPT_STRING('r', "routine", &routine, "default", |
| 37 | "Specify routine to copy"), | 37 | "Specify routine to copy"), |
| 38 | OPT_INTEGER('i', "iterations", &iterations, | 38 | OPT_INTEGER('i', "iterations", &iterations, |
| 39 | "repeat memcpy() invocation this number of times"), | 39 | "repeat memcpy() invocation this number of times"), |
| 40 | OPT_BOOLEAN('c', "clock", &use_clock, | 40 | OPT_BOOLEAN('c', "clock", &use_clock, |
| 41 | "Use CPU clock for measuring"), | 41 | "Use cycles event instead of gettimeofday() for measuring"), |
| 42 | OPT_BOOLEAN('o', "only-prefault", &only_prefault, | 42 | OPT_BOOLEAN('o', "only-prefault", &only_prefault, |
| 43 | "Show only the result with page faults before memcpy()"), | 43 | "Show only the result with page faults before memcpy()"), |
| 44 | OPT_BOOLEAN('n', "no-prefault", &no_prefault, | 44 | OPT_BOOLEAN('n', "no-prefault", &no_prefault, |
diff --git a/tools/perf/bench/mem-memset.c b/tools/perf/bench/mem-memset.c index e9079185bd72..bf0d5f552017 100644 --- a/tools/perf/bench/mem-memset.c +++ b/tools/perf/bench/mem-memset.c | |||
| @@ -31,14 +31,14 @@ static bool no_prefault; | |||
| 31 | 31 | ||
| 32 | static const struct option options[] = { | 32 | static const struct option options[] = { |
| 33 | OPT_STRING('l', "length", &length_str, "1MB", | 33 | OPT_STRING('l', "length", &length_str, "1MB", |
| 34 | "Specify length of memory to copy. " | 34 | "Specify length of memory to set. " |
| 35 | "available unit: B, MB, GB (upper and lower)"), | 35 | "Available units: B, KB, MB, GB and TB (upper and lower)"), |
| 36 | OPT_STRING('r', "routine", &routine, "default", | 36 | OPT_STRING('r', "routine", &routine, "default", |
| 37 | "Specify routine to copy"), | 37 | "Specify routine to set"), |
| 38 | OPT_INTEGER('i', "iterations", &iterations, | 38 | OPT_INTEGER('i', "iterations", &iterations, |
| 39 | "repeat memset() invocation this number of times"), | 39 | "repeat memset() invocation this number of times"), |
| 40 | OPT_BOOLEAN('c', "clock", &use_clock, | 40 | OPT_BOOLEAN('c', "clock", &use_clock, |
| 41 | "Use CPU clock for measuring"), | 41 | "Use cycles event instead of gettimeofday() for measuring"), |
| 42 | OPT_BOOLEAN('o', "only-prefault", &only_prefault, | 42 | OPT_BOOLEAN('o', "only-prefault", &only_prefault, |
| 43 | "Show only the result with page faults before memset()"), | 43 | "Show only the result with page faults before memset()"), |
| 44 | OPT_BOOLEAN('n', "no-prefault", &no_prefault, | 44 | OPT_BOOLEAN('n', "no-prefault", &no_prefault, |
diff --git a/tools/perf/builtin-bench.c b/tools/perf/builtin-bench.c index b0e74ab2d7a2..1f3100216448 100644 --- a/tools/perf/builtin-bench.c +++ b/tools/perf/builtin-bench.c | |||
| @@ -33,7 +33,7 @@ struct bench_suite { | |||
| 33 | }; | 33 | }; |
| 34 | \ | 34 | \ |
| 35 | /* sentinel: easy for help */ | 35 | /* sentinel: easy for help */ |
| 36 | #define suite_all { "all", "test all suite (pseudo suite)", NULL } | 36 | #define suite_all { "all", "Test all benchmark suites", NULL } |
| 37 | 37 | ||
| 38 | static struct bench_suite sched_suites[] = { | 38 | static struct bench_suite sched_suites[] = { |
| 39 | { "messaging", | 39 | { "messaging", |
| @@ -75,7 +75,7 @@ static struct bench_subsys subsystems[] = { | |||
| 75 | "memory access performance", | 75 | "memory access performance", |
| 76 | mem_suites }, | 76 | mem_suites }, |
| 77 | { "all", /* sentinel: easy for help */ | 77 | { "all", /* sentinel: easy for help */ |
| 78 | "test all subsystem (pseudo subsystem)", | 78 | "all benchmark subsystem", |
| 79 | NULL }, | 79 | NULL }, |
| 80 | { NULL, | 80 | { NULL, |
| 81 | NULL, | 81 | NULL, |
