This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Reducing SysLink MessageQ latency

Other Parts Discussed in Thread: OMAP-L138, OMAPL138

In our OMAP-L138 application we are getting MessageQ latencies ~120 us in direction from ARM (Linux) to DSP (SYS/BIOS) and ~220 us in direction from DSP to ARM. We already switched notify driver to ti.sdo.ipc.notifyDrivers.NotifyDriverCirc and MessageQ transport to ti.sdo.ipc.transports.TransportShmNotify. Is there any way to further reduce these latencies?

  • Stanislaw,

    I assume you are using SysLink 2.x on ARM and IPC 1.x on DSP?

    You are probably dealing with Linux scheduler latencies. A typical Linux configuration is to get as much work done as possible at the expense of responsiveness. You could try adding the Real-Time patch to your Linux kernel. This makes the Linux kernel more responsive to interrupts at the expense of more kernel overhead.

    https://rt.wiki.kernel.org/

    On OMAP-L138, there are two interrupt lines from DSP to ARM. This allows you to use another messaging system. SysLink ships with an example called umsg which shows how to do this.

    syslink/examples/archive/OMAPL138_linux_elf
    ex33_umsg - umsg library and Linux driver
    ex34_radar - application using umsg

    With these two changes, I saw significant improvement. Here are some benchmarks.

    Test with 10,000 messages, ARM 300 MHz, DSP 300 MHz

    Umsg: ARM to DSP
    ARM to DSP avg=0.020 ms
    ARM to DSP min=0.016 ms
    ARM to DSP max=0.138 ms (jitter: 0.122)

    Umsg: DSP to ARM
    DSP to ARM avg=0.110 ms
    DSP to ARM min=0.058 ms
    DSP to ARM max=0.198 ms (jitter: 0.140)

    Otherwise, I think you are already doing as much as you can.

    ~Ramsey