diff options
Diffstat (limited to 'tools/perf')
25 files changed, 471 insertions, 201 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/Makefile b/tools/perf/Makefile index d698c118a602..75d74e5db8d5 100644 --- a/tools/perf/Makefile +++ b/tools/perf/Makefile | |||
| @@ -155,7 +155,7 @@ endif | |||
| 155 | 155 | ||
| 156 | ### --- END CONFIGURATION SECTION --- | 156 | ### --- END CONFIGURATION SECTION --- |
| 157 | 157 | ||
| 158 | BASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include -I$(OUTPUT)/util -I$(TRACE_EVENT_DIR) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE | 158 | BASIC_CFLAGS = -Iutil/include -Iarch/$(ARCH)/include -I$(OUTPUT)util -I$(TRACE_EVENT_DIR) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE |
| 159 | BASIC_LDFLAGS = | 159 | BASIC_LDFLAGS = |
| 160 | 160 | ||
| 161 | # Guard against environment variables | 161 | # Guard against environment variables |
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[] = { |
