From 2f8213f99757a9878f0d0407561da992b5e6f3f1 Mon Sep 17 00:00:00 2001 From: Adeeb Shihadeh Date: Wed, 16 Sep 2020 17:42:37 -0700 Subject: [PATCH] rt debug scripts (#2165) * rt debug scripts * bigger buffer * cleanup * move to internal Co-authored-by: Comma Device old-commit-hash: ebab66062248012fe6c1a25a6d789297849cb868 --- scripts/restart_modem.sh | 2 + selfdrive/debug/internal/rt/atrace.sh | 4 ++ selfdrive/debug/internal/rt/record_trace.sh | 25 ++++++++ selfdrive/debug/internal/rt/waste3.c | 63 +++++++++++++++++++++ 4 files changed, 94 insertions(+) create mode 100755 scripts/restart_modem.sh create mode 100755 selfdrive/debug/internal/rt/atrace.sh create mode 100755 selfdrive/debug/internal/rt/record_trace.sh create mode 100644 selfdrive/debug/internal/rt/waste3.c diff --git a/scripts/restart_modem.sh b/scripts/restart_modem.sh new file mode 100755 index 0000000000..fac54b32ff --- /dev/null +++ b/scripts/restart_modem.sh @@ -0,0 +1,2 @@ +#!/usr/bin/bash +echo "restart" > /sys/kernel/debug/msm_subsys/modem diff --git a/selfdrive/debug/internal/rt/atrace.sh b/selfdrive/debug/internal/rt/atrace.sh new file mode 100755 index 0000000000..826178c329 --- /dev/null +++ b/selfdrive/debug/internal/rt/atrace.sh @@ -0,0 +1,4 @@ +#!/usr/bin/bash + +echo 96000 > /d/tracing/buffer_size_kb +atrace -t 10 sched workq -b 96000 > /tmp/trace.txt diff --git a/selfdrive/debug/internal/rt/record_trace.sh b/selfdrive/debug/internal/rt/record_trace.sh new file mode 100755 index 0000000000..00593bfca4 --- /dev/null +++ b/selfdrive/debug/internal/rt/record_trace.sh @@ -0,0 +1,25 @@ +#!/usr/bin/bash + +cd /d/tracing + +# setup tracer +echo "function" > current_tracer + +echo "start tracing" +echo 1 > tracing_on + +# do stuff +sleep 2 +#/data/openpilot/scripts/restart_modem.sh +#sleep 3 +#/data/openpilot/scripts/restart_modem.sh +sleep 5 + +# disable tracing +echo "done tracing" +echo 0 > tracing_on + +# copy +echo "copy traces" +cp trace /tmp/trace.txt +cp per_cpu/cpu3/trace /tmp/trace_cpu3.txt diff --git a/selfdrive/debug/internal/rt/waste3.c b/selfdrive/debug/internal/rt/waste3.c new file mode 100644 index 0000000000..965ce59d85 --- /dev/null +++ b/selfdrive/debug/internal/rt/waste3.c @@ -0,0 +1,63 @@ +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include "../../common/util.h" +#include "../../common/timing.h" + +#define CORES 3 +double ttime[CORES]; +double oout[CORES]; + +void waste(int core) { + prctl(PR_SET_NAME, (unsigned long)"waste", 0, 0, 0); + + cpu_set_t my_set; + CPU_ZERO(&my_set); + CPU_SET(core, &my_set); + int ret = sched_setaffinity(0, sizeof(cpu_set_t), &my_set); + printf("set affinity to %d: %d\n", core, ret); + + //struct sched_param sa; + //memset(&sa, 0, sizeof(sa)); + //sa.sched_priority = 51; + //sched_setscheduler(syscall(SYS_gettid), SCHED_FIFO, &sa); + + float32x4_t *tmp = (float32x4_t *)malloc(0x1000008*sizeof(float32x4_t)); + float32x4_t out; + + uint64_t i = 0; + double sec = seconds_since_boot(); + while(1) { + int j; + for (j = 0; j < 0x1000000; j++) { + out = vmlaq_f32(out, tmp[j], tmp[j+1]); + } + if (i == 0x8) { + double nsec = seconds_since_boot(); + ttime[core] = nsec-sec; + oout[core] = out[0] + out[1] + out[2] + out[3]; + i = 0; + sec = nsec; + } + i++; + } +} + +int main() { + pthread_t waster[CORES]; + for (int i = 0 ; i < CORES; i++) { + pthread_create(&waster[i], NULL, waste, (void*)i); + } + while (1) { + for (int i = 0 ; i < CORES; i++) { + printf("%.2f ", ttime[i]); + } + printf("\n"); + sleep(1); + } +} +