Jerry Huang via Xenomai <[email protected]> writes:
> Hi, all guys, > Now I am using linux-dovetail/v5.15.6-dovetail1-rebase on my RDB board. > 1 . I am running latency command, but when I running command: > latency -t 1 -T 30 > I got the negative value: > RTD| -2.760| -2.654| -1.800| 0| 0| -2.760| > -1.400 > > 2. Then, I got the solution from google: > Run command: xeno latency -T 20 > I got: > RTD| -1.360| -1.235| -0.040| 0| 0| -1.440| > 0.440 > > 3. then I update /proc/xenomai/latency value > echo -1440 > /proc/xenomai/latency > > 4. when I run xeno latency again, I got below result: > RTD| 5.240| 5.389| 6.640| 0| 0| 5.040| > 7.600 > > 5. but when I run command again: latency -t 1 -T 30, > I still got the negative value: > RTD| -2.760| -2.652| -1.760| 0| 0| -2.760| > -1.400 > > So, How to fix the issue? The core timer needs to be calibrated, it looks like the default calibration values are too conservative for the performances of this board (is it from the Layerscape series?), especially for kernel thread/irq wakeups. This may help: https://xenomai.org/documentation/xenomai-3/html/man1/autotune/index.html > And how to check the xenomai interrupt? I remember I can get the interrupt > number through "cat /proc/xenomai/irq",but now I can't find it. > With Dovetail underneath, you just need to look at /proc/interrupts as usual. The 'oob' flag tells you whether the interrupt is handled by the real-time core in out-of-band mode (real-time). e.g. this is from an i.MX6QP SabreSD, we can see the per-CPU TWD being handled in oob mode for high-precision timing by the real-time domain. The proxy tick interrupt (315) is a synthetic IRQ created by Dovetail in order to relay some timer events to the common kernel at due date, since the real-time core manages the hardware for the whole system. ~ # cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 24: 0 0 0 0 SIRQC 24 Edge in-band work 25: 567 292 381 676 GIC-0 29 Edge oob twd 26: 0 0 0 0 GPC 55 Level i.MX Timer Tick 27: 0 0 0 0 GPC 94 Level arm-pmu 35: 50 0 0 0 GPC 26 Level 2020000.serial 55: 0 0 0 0 GPC 81 Level 20c0000.watchdog 67: 0 0 0 0 GPC 2 Level sdma 70: 1611 0 0 0 GPC 118 Level 2188000.ethernet 71: 0 0 0 0 GPC 119 Level 2188000.ethernet 72: 0 0 0 0 GPC 23 Level mmc1 73: 146 0 0 0 GPC 24 Level mmc2 74: 43 0 0 0 GPC 25 Level mmc3 75: 0 0 0 0 GPC 36 Level 21a0000.i2c 76: 0 0 0 0 GPC 37 Level 21a4000.i2c 77: 2 0 0 0 GPC 38 Level 21a8000.i2c 87: 0 0 0 0 GPC 39 Level ahci-imx[2200000.sata] 95: 0 0 0 0 gpio-mxc 4 Edge Volume Up 96: 0 0 0 0 gpio-mxc 5 Edge Volume Down 123: 0 0 0 0 gpio-mxc 0 Edge 2198000.mmc cd 125: 0 0 0 0 gpio-mxc 2 Edge 2194000.mmc cd 184: 0 0 0 0 gpio-mxc 29 Edge Power Button 315: 429 160 364 546 SIRQC 315 Edge proxy tick IPI0: 0 0 0 0 CPU wakeup interrupts IPI1: 0 0 0 0 Timer broadcast interrupts IPI2: 37 40 27 23 Rescheduling interrupts IPI3: 470 944 1352 1809 Function call interrupts IPI4: 0 0 0 0 CPU stop interrupts IPI5: 0 0 0 0 IRQ work interrupts IPI6: 0 0 0 0 completion interrupts Err: 0 -- Philippe.
