-
Notifications
You must be signed in to change notification settings - Fork 35
Description
Hello,
We are interested in using DigitalRF in one of our professional projects. This project focuses on receiving RF data over multiple 10 Gbps connections.
Beforehand, we ran some benchmarks in order to measure the overhead introduced by several compression/storage solutions. DigitalRF is one of them.
The benchmark consists of the following steps: n TCP servers listen on n different ports and each waits for a TCP client to connect. Once connected, the client sends random data. On reception, the server either writes the data on disk using the pwritev() function or passes the data to some third-party library (i.e. DigitalRF, HDF5, zstd).
Here are the results we measured:
| Setup | n = 1 [Gbps] | n = 4 [Gbps] |
|---|---|---|
pwritev() (baseline) |
19.314 | 35.481 |
| DigitalRF w/o compression | 2.786 | 1.857 |
| DigitalRF w/ zlib | 1.666 | 1.323 |
| DigitalRF w/ zstd | 5.926 | 1.420 |
| HDF5 w/o compression | 21.925 | 33.957 |
| HDF5 w/ zlib | 24.407 | 22.431 |
| HDF5 w/ zstd | 23.779 | 21.883 |
zstd + pwritev() |
4.658 | 12.276 |
Note: when compressing the data, we always used 1 as the compression level.
As you can see, DigitalRF introduces a HUGE overhead. Moreover, it seems that the performances are not consistent; we observed values going from 0.5 Gbps to 6 Gbps (using a single thread).
- Did you run some performance benchmark? If so, did you observe anything similar?
- And have you any idea from where this overhead could come from? We are willing to participate in the improvement of DigitalRF!
Lucas