Attention is currently required from: dexter, fixeria, jolly, laforge, neels, pespin.
Hello Jenkins Builder, dexter, fixeria, jolly, neels, pespin,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmo-mgw/+/36363?usp=email
to look at the new patch set (#6).
The following approvals got outdated and were removed: Code-Review+1 by jolly, Code-Review+1 by neels, Code-Review+1 by pespin, Verified+1 by Jenkins Builder
Change subject: Convert RTP/RTCP/OSMUX I/O from osmo_fd to osmo_io ......................................................................
Convert RTP/RTCP/OSMUX I/O from osmo_fd to osmo_io
Converting from osmo_fd to osmo_io allows us to switch to the new io_uring backend and benefit from related performance benefits.
In a benchmark running 200 concurrent bi-directional voice calls with GSM-EFR codec, I am observing:
* the code before this patch uses 40..42% of a single core on a Ryzen 5950X at 200 calls (=> 200 endpoints with each two connections)
* no increase in CPU utilization before/after this patch, i.e. the osmo_io overhead for the osmo_fd backend is insignificant compared to the direct osmo_fd mode before
* an almost exactly 50% reduction of CPU utilization when running the same osmo-mgw build with LIBOSMO_IO_BACKEND=IO_URING - top shows 19..21% for the same workload instead of 40..42% with the OSMO_FD default backend.
* An increase of about 4 Megabytes in both RSS and VIRT size when enabling the OSMO_IO backend. This is likely the memory-mapped rings.
No memory leakage is observed when using either of the backends.
Change-Id: I8471960d5d8088a70cf105f2f40dfa5d5458169a --- M include/osmocom/mgcp/mgcp.h M include/osmocom/mgcp/mgcp_network.h M src/libosmo-mgcp/mgcp_conn.c M src/libosmo-mgcp/mgcp_iuup.c M src/libosmo-mgcp/mgcp_network.c M src/libosmo-mgcp/mgcp_osmux.c M tests/mgcp/mgcp_test.c 7 files changed, 236 insertions(+), 169 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmo-mgw refs/changes/63/36363/6