04-03-2019 05:17 AM
I have observed performance issues in a user space application. The set up is the following:
Board: ZCU102, Petalinux 2017.1, Vivado 2017.1 User space application in C using standard setup from SDK including pthread lib. The petalinux was created using standard setup. I.e. no addtional drivers have been added.
The application transfers data from the PL to PS which eventually are stored on the SATA drive.
More specifically it reads the output from an 4x12 bit ADC converter (which runs at 10MHz). The ADC is sychronized with raw ethernet messages that arrive at eth0 3-4ms before the valid data are produced by the ADC. For this reason the eth0 socket is set in promiscuous mode. The data from the ADC are captured in PL and transfered to the PS using the AXI DMA in simple mode on the write channel.
So the petalinux application performs the following functions:
So it has been observed that in some situations during the file transfer from tmpFS to the SATA drive the ethernet message are delayed to arrive at the user space application causing invalid data to be recorded.
It has been observed also that in the user space application when no data are transfered to the SATA drive no delays found on the eth0 interface. Of course the solution of storing the data to the tmpFS and when the ADC data recording is finished moving the to SATA drive is no sufficient due to the limited size of tmpFS (1GB). An with the data rate 40MB/sec we would reach the limit in approx 25 sec.
Any suggestion of what might be the cause of the delays at eth0 will be appreciated.
Thanx in advance
06-01-2020 10:59 AM
Hello. I have similar problem. In my design i get data from AXI DMA, and write this data to buffer.
After one form buffers if full i create thread, and write data to sata SSD.
Same time, main program is delayed. i change pri oryty but this ot help.