perf sched: Use linux/time64.h
Probably the next step is to introduce linux/time.h and use timespec_to_ns(), etc. Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: David Ahern <dsahern@gmail.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/n/tip-4nqhskn27fn93cz3ukbc8drf@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
a8ad8329b9
commit
4fc76e495b
|
@ -26,6 +26,7 @@
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <api/fs/fs.h>
|
#include <api/fs/fs.h>
|
||||||
|
#include <linux/time64.h>
|
||||||
|
|
||||||
#define PR_SET_NAME 15 /* Set process name */
|
#define PR_SET_NAME 15 /* Set process name */
|
||||||
#define MAX_CPUS 4096
|
#define MAX_CPUS 4096
|
||||||
|
@ -199,7 +200,7 @@ static u64 get_nsecs(void)
|
||||||
|
|
||||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||||
|
|
||||||
return ts.tv_sec * 1000000000ULL + ts.tv_nsec;
|
return ts.tv_sec * NSEC_PER_SEC + ts.tv_nsec;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void burn_nsecs(struct perf_sched *sched, u64 nsecs)
|
static void burn_nsecs(struct perf_sched *sched, u64 nsecs)
|
||||||
|
@ -223,7 +224,7 @@ static void sleep_nsecs(u64 nsecs)
|
||||||
|
|
||||||
static void calibrate_run_measurement_overhead(struct perf_sched *sched)
|
static void calibrate_run_measurement_overhead(struct perf_sched *sched)
|
||||||
{
|
{
|
||||||
u64 T0, T1, delta, min_delta = 1000000000ULL;
|
u64 T0, T1, delta, min_delta = NSEC_PER_SEC;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
|
@ -240,7 +241,7 @@ static void calibrate_run_measurement_overhead(struct perf_sched *sched)
|
||||||
|
|
||||||
static void calibrate_sleep_measurement_overhead(struct perf_sched *sched)
|
static void calibrate_sleep_measurement_overhead(struct perf_sched *sched)
|
||||||
{
|
{
|
||||||
u64 T0, T1, delta, min_delta = 1000000000ULL;
|
u64 T0, T1, delta, min_delta = NSEC_PER_SEC;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
|
@ -452,8 +453,8 @@ static u64 get_cpu_usage_nsec_parent(void)
|
||||||
err = getrusage(RUSAGE_SELF, &ru);
|
err = getrusage(RUSAGE_SELF, &ru);
|
||||||
BUG_ON(err);
|
BUG_ON(err);
|
||||||
|
|
||||||
sum = ru.ru_utime.tv_sec*1e9 + ru.ru_utime.tv_usec*1e3;
|
sum = ru.ru_utime.tv_sec * NSEC_PER_SEC + ru.ru_utime.tv_usec * NSEC_PER_USEC;
|
||||||
sum += ru.ru_stime.tv_sec*1e9 + ru.ru_stime.tv_usec*1e3;
|
sum += ru.ru_stime.tv_sec * NSEC_PER_SEC + ru.ru_stime.tv_usec * NSEC_PER_USEC;
|
||||||
|
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
@ -667,12 +668,12 @@ static void run_one_test(struct perf_sched *sched)
|
||||||
sched->run_avg = delta;
|
sched->run_avg = delta;
|
||||||
sched->run_avg = (sched->run_avg * (sched->replay_repeat - 1) + delta) / sched->replay_repeat;
|
sched->run_avg = (sched->run_avg * (sched->replay_repeat - 1) + delta) / sched->replay_repeat;
|
||||||
|
|
||||||
printf("#%-3ld: %0.3f, ", sched->nr_runs, (double)delta / 1000000.0);
|
printf("#%-3ld: %0.3f, ", sched->nr_runs, (double)delta / NSEC_PER_MSEC);
|
||||||
|
|
||||||
printf("ravg: %0.2f, ", (double)sched->run_avg / 1e6);
|
printf("ravg: %0.2f, ", (double)sched->run_avg / NSEC_PER_MSEC);
|
||||||
|
|
||||||
printf("cpu: %0.2f / %0.2f",
|
printf("cpu: %0.2f / %0.2f",
|
||||||
(double)sched->cpu_usage / 1e6, (double)sched->runavg_cpu_usage / 1e6);
|
(double)sched->cpu_usage / NSEC_PER_MSEC, (double)sched->runavg_cpu_usage / NSEC_PER_MSEC);
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/*
|
/*
|
||||||
|
@ -680,8 +681,8 @@ static void run_one_test(struct perf_sched *sched)
|
||||||
* accurate than the sched->sum_exec_runtime based statistics:
|
* accurate than the sched->sum_exec_runtime based statistics:
|
||||||
*/
|
*/
|
||||||
printf(" [%0.2f / %0.2f]",
|
printf(" [%0.2f / %0.2f]",
|
||||||
(double)sched->parent_cpu_usage/1e6,
|
(double)sched->parent_cpu_usage / NSEC_PER_MSEC,
|
||||||
(double)sched->runavg_parent_cpu_usage/1e6);
|
(double)sched->runavg_parent_cpu_usage / NSEC_PER_MSEC);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
@ -696,13 +697,13 @@ static void test_calibrations(struct perf_sched *sched)
|
||||||
u64 T0, T1;
|
u64 T0, T1;
|
||||||
|
|
||||||
T0 = get_nsecs();
|
T0 = get_nsecs();
|
||||||
burn_nsecs(sched, 1e6);
|
burn_nsecs(sched, NSEC_PER_MSEC);
|
||||||
T1 = get_nsecs();
|
T1 = get_nsecs();
|
||||||
|
|
||||||
printf("the run test took %" PRIu64 " nsecs\n", T1 - T0);
|
printf("the run test took %" PRIu64 " nsecs\n", T1 - T0);
|
||||||
|
|
||||||
T0 = get_nsecs();
|
T0 = get_nsecs();
|
||||||
sleep_nsecs(1e6);
|
sleep_nsecs(NSEC_PER_MSEC);
|
||||||
T1 = get_nsecs();
|
T1 = get_nsecs();
|
||||||
|
|
||||||
printf("the sleep test took %" PRIu64 " nsecs\n", T1 - T0);
|
printf("the sleep test took %" PRIu64 " nsecs\n", T1 - T0);
|
||||||
|
@ -1213,10 +1214,10 @@ static void output_lat_thread(struct perf_sched *sched, struct work_atoms *work_
|
||||||
avg = work_list->total_lat / work_list->nb_atoms;
|
avg = work_list->total_lat / work_list->nb_atoms;
|
||||||
|
|
||||||
printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13.6f s\n",
|
printf("|%11.3f ms |%9" PRIu64 " | avg:%9.3f ms | max:%9.3f ms | max at: %13.6f s\n",
|
||||||
(double)work_list->total_runtime / 1e6,
|
(double)work_list->total_runtime / NSEC_PER_MSEC,
|
||||||
work_list->nb_atoms, (double)avg / 1e6,
|
work_list->nb_atoms, (double)avg / NSEC_PER_MSEC,
|
||||||
(double)work_list->max_lat / 1e6,
|
(double)work_list->max_lat / NSEC_PER_MSEC,
|
||||||
(double)work_list->max_lat_at / 1e9);
|
(double)work_list->max_lat_at / NSEC_PER_SEC);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int pid_cmp(struct work_atoms *l, struct work_atoms *r)
|
static int pid_cmp(struct work_atoms *l, struct work_atoms *r)
|
||||||
|
@ -1491,7 +1492,7 @@ static int map_switch_event(struct perf_sched *sched, struct perf_evsel *evsel,
|
||||||
if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu))
|
if (sched->map.cpus && !cpu_map__has(sched->map.cpus, this_cpu))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
color_fprintf(stdout, color, " %12.6f secs ", (double)timestamp/1e9);
|
color_fprintf(stdout, color, " %12.6f secs ", (double)timestamp / NSEC_PER_SEC);
|
||||||
if (new_shortname) {
|
if (new_shortname) {
|
||||||
const char *pid_color = color;
|
const char *pid_color = color;
|
||||||
|
|
||||||
|
@ -1753,7 +1754,7 @@ static int perf_sched__lat(struct perf_sched *sched)
|
||||||
|
|
||||||
printf(" -----------------------------------------------------------------------------------------------------------------\n");
|
printf(" -----------------------------------------------------------------------------------------------------------------\n");
|
||||||
printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n",
|
printf(" TOTAL: |%11.3f ms |%9" PRIu64 " |\n",
|
||||||
(double)sched->all_runtime / 1e6, sched->all_count);
|
(double)sched->all_runtime / NSEC_PER_MSEC, sched->all_count);
|
||||||
|
|
||||||
printf(" ---------------------------------------------------\n");
|
printf(" ---------------------------------------------------\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue