Loading tools/perf/Documentation/perf-record.txt +4 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,10 @@ OPTIONS --call-graph:: Do call-graph (stack chain/backtrace) recording. -q:: --quiet:: Don't print any message, useful for scripting. -v:: --verbose:: Be more verbose (show counter open errors, etc). Loading tools/perf/builtin-record.c +6 −2 Original line number Diff line number Diff line Loading @@ -353,7 +353,7 @@ static void create_counter(int counter, int cpu) } if (read(fd[nr_cpu][counter][thread_index], &read_data, sizeof(read_data)) == -1) { perror("Unable to read perf file descriptor\n"); perror("Unable to read perf file descriptor"); exit(-1); } Loading Loading @@ -626,7 +626,7 @@ static int __cmd_record(int argc, const char **argv) nr_cpus = read_cpu_map(cpu_list); if (nr_cpus < 1) { perror("failed to collect number of CPUs\n"); perror("failed to collect number of CPUs"); return -1; } Loading Loading @@ -761,6 +761,9 @@ static int __cmd_record(int argc, const char **argv) } } if (quiet) return 0; fprintf(stderr, "[ perf record: Woken up %ld times to write data ]\n", waking); /* Loading Loading @@ -820,6 +823,7 @@ static const struct option options[] = { "do call-graph (stack chain/backtrace) recording"), OPT_INCR('v', "verbose", &verbose, "be more verbose (show counter open errors, etc)"), OPT_BOOLEAN('q', "quiet", &quiet, "don't print any message"), OPT_BOOLEAN('s', "stat", &inherit_stat, "per thread counts"), OPT_BOOLEAN('d', "data", &sample_address, Loading tools/perf/builtin-trace.c +5 −4 Original line number Diff line number Diff line Loading @@ -625,12 +625,13 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used) dup2(live_pipe[1], 1); close(live_pipe[0]); __argv = malloc(5 * sizeof(const char *)); __argv = malloc(6 * sizeof(const char *)); __argv[0] = "/bin/sh"; __argv[1] = record_script_path; __argv[2] = "-o"; __argv[3] = "-"; __argv[4] = NULL; __argv[2] = "-q"; __argv[3] = "-o"; __argv[4] = "-"; __argv[5] = NULL; execvp("/bin/sh", (char **)__argv); exit(-1); Loading tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py +18 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,12 @@ import errno, os FUTEX_WAIT = 0 FUTEX_WAKE = 1 FUTEX_PRIVATE_FLAG = 128 FUTEX_CLOCK_REALTIME = 256 FUTEX_CMD_MASK = ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME) NSECS_PER_SEC = 1000000000 def avg(total, n): Loading @@ -26,6 +32,18 @@ def nsecs_str(nsecs): str = "%5u.%09u" % (nsecs_secs(nsecs), nsecs_nsecs(nsecs)), return str def add_stats(dict, key, value): if not dict.has_key(key): dict[key] = (value, value, value, 1) else: min, max, avg, count = dict[key] if value < min: min = value if value > max: max = value avg = (avg + value) / 2 dict[key] = (min, max, avg, count + 1) def clear_term(): print("\x1b[H\x1b[2J") Loading tools/perf/scripts/python/bin/futex-contention-record 0 → 100644 +2 −0 Original line number Diff line number Diff line #!/bin/bash perf record -a -e syscalls:sys_enter_futex -e syscalls:sys_exit_futex $@ Loading
tools/perf/Documentation/perf-record.txt +4 −0 Original line number Diff line number Diff line Loading @@ -83,6 +83,10 @@ OPTIONS --call-graph:: Do call-graph (stack chain/backtrace) recording. -q:: --quiet:: Don't print any message, useful for scripting. -v:: --verbose:: Be more verbose (show counter open errors, etc). Loading
tools/perf/builtin-record.c +6 −2 Original line number Diff line number Diff line Loading @@ -353,7 +353,7 @@ static void create_counter(int counter, int cpu) } if (read(fd[nr_cpu][counter][thread_index], &read_data, sizeof(read_data)) == -1) { perror("Unable to read perf file descriptor\n"); perror("Unable to read perf file descriptor"); exit(-1); } Loading Loading @@ -626,7 +626,7 @@ static int __cmd_record(int argc, const char **argv) nr_cpus = read_cpu_map(cpu_list); if (nr_cpus < 1) { perror("failed to collect number of CPUs\n"); perror("failed to collect number of CPUs"); return -1; } Loading Loading @@ -761,6 +761,9 @@ static int __cmd_record(int argc, const char **argv) } } if (quiet) return 0; fprintf(stderr, "[ perf record: Woken up %ld times to write data ]\n", waking); /* Loading Loading @@ -820,6 +823,7 @@ static const struct option options[] = { "do call-graph (stack chain/backtrace) recording"), OPT_INCR('v', "verbose", &verbose, "be more verbose (show counter open errors, etc)"), OPT_BOOLEAN('q', "quiet", &quiet, "don't print any message"), OPT_BOOLEAN('s', "stat", &inherit_stat, "per thread counts"), OPT_BOOLEAN('d', "data", &sample_address, Loading
tools/perf/builtin-trace.c +5 −4 Original line number Diff line number Diff line Loading @@ -625,12 +625,13 @@ int cmd_trace(int argc, const char **argv, const char *prefix __used) dup2(live_pipe[1], 1); close(live_pipe[0]); __argv = malloc(5 * sizeof(const char *)); __argv = malloc(6 * sizeof(const char *)); __argv[0] = "/bin/sh"; __argv[1] = record_script_path; __argv[2] = "-o"; __argv[3] = "-"; __argv[4] = NULL; __argv[2] = "-q"; __argv[3] = "-o"; __argv[4] = "-"; __argv[5] = NULL; execvp("/bin/sh", (char **)__argv); exit(-1); Loading
tools/perf/scripts/python/Perf-Trace-Util/lib/Perf/Trace/Util.py +18 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,12 @@ import errno, os FUTEX_WAIT = 0 FUTEX_WAKE = 1 FUTEX_PRIVATE_FLAG = 128 FUTEX_CLOCK_REALTIME = 256 FUTEX_CMD_MASK = ~(FUTEX_PRIVATE_FLAG | FUTEX_CLOCK_REALTIME) NSECS_PER_SEC = 1000000000 def avg(total, n): Loading @@ -26,6 +32,18 @@ def nsecs_str(nsecs): str = "%5u.%09u" % (nsecs_secs(nsecs), nsecs_nsecs(nsecs)), return str def add_stats(dict, key, value): if not dict.has_key(key): dict[key] = (value, value, value, 1) else: min, max, avg, count = dict[key] if value < min: min = value if value > max: max = value avg = (avg + value) / 2 dict[key] = (min, max, avg, count + 1) def clear_term(): print("\x1b[H\x1b[2J") Loading
tools/perf/scripts/python/bin/futex-contention-record 0 → 100644 +2 −0 Original line number Diff line number Diff line #!/bin/bash perf record -a -e syscalls:sys_enter_futex -e syscalls:sys_exit_futex $@