rt debug scripts (#2165)

* rt debug scripts

* bigger buffer

* cleanup

* move to internal

Co-authored-by: Comma Device <device@comma.ai>
albatross
Adeeb Shihadeh 2020-09-16 17:42:37 -07:00 committed by GitHub
parent 45c58f561a
commit ebab660622
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,2 @@
#!/usr/bin/bash
echo "restart" > /sys/kernel/debug/msm_subsys/modem

View File

@ -0,0 +1,4 @@
#!/usr/bin/bash
echo 96000 > /d/tracing/buffer_size_kb
atrace -t 10 sched workq -b 96000 > /tmp/trace.txt

View File

@ -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

View File

@ -0,0 +1,63 @@
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <sched.h>
#include <arm_neon.h>
#include <sys/prctl.h>
#include <sys/syscall.h>
#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);
}
}