Hi,
We're currently evaluating DSPLink as a possible IPC solution for a new low latency audio streaming product. The test setup is as follows:
- Pentium 4 (2.4GHz) running 2.6.31 kernel with RT and bigphysarea patches
- DSP/BIOS Link version 1.64 (with minor changes to support 2.6.31 kernel)
- Following options used to configure dsplink: --platform=LINUXPC --nodsp=1 --dspcfg_0=DM648PCI --dspos_0=DSPBIOS5XX --gppos=RHEL4 --comps=ponslrmc --dspdma=1
- DM648 EVM from Lyrtech plugged into Pentium 4 PCI bus
I've modified the MSGQ samples supplied with dsplink 1.64 slightly by making the gpp the message initiator and adding a usleep() call in the for loop. This is to vary the message send rate to match audio frame rates that we expect to handle in our final system. The following are some observations:
With no usleep() call I see a rount-trip delay of about 480us. CPU loading is about 70%. See output of top below (modified msgq sample app is called atest):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2726 root -96 0 11560 1096 924 S 38.4 0.1 0:08.87 atest
2732 root 10 -10 0 0 0 S 29.8 0.0 0:06.82 DSPLINK_DPC_2
2728 root 10 -10 0 0 0 R 4.6 0.0 0:01.09 DSPLINK_DPC_0
2729 root -51 -5 0 0 0 S 1.0 0.0 0:00.21 irq/9-DSPLINK
With usleep() call to set loop rate to 1ms (i.e. one MSGQ_put followed by one MSGQ_get every 1ms) CPU loading is about 32%.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2577 root -96 0 11560 1104 928 S 16.9 0.1 0:05.15 atest
2583 root 10 -10 0 0 0 S 12.9 0.0 0:03.89 DSPLINK_DPC_2
2579 root 10 -10 0 0 0 R 2.0 0.0 0:00.65 DSPLINK_DPC_0
2580 root -51 -5 0 0 0 S 0.7 0.0 0:00.16 irq/9-DSPLINK
With usleep() call to set loop rate to 4ms (i.e. one MSGQ_put followed by one MSGQ_get every 4ms) CPU loading is about 9%.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2698 root -96 0 11560 1100 928 S 5.0 0.1 0:02.65 atest
2703 root 10 -10 0 0 0 S 3.3 0.0 0:01.91 DSPLINK_DPC_2
2699 root 10 -10 0 0 0 S 0.7 0.0 0:00.32 DSPLINK_DPC_0
186 root -51 -5 0 0 0 S 0.3 0.0 0:00.84 irq/9-acpi
2700 root -51 -5 0 0 0 S 0.3 0.0 0:00.05 irq/9-DSPLINK
My question is, has anyone tested dsplink in a similar scenario and do the latency and cpu loading figures look comparable? I was expecting to see lower latency than this and much lower CPU loading. Unfortunately, if the cpu loading figures can't be improved, we won't be able to use dsplink as our final system will use an Atom Z510 with lower performance.
Regards,
Grant