Attention is currently required from: kirr.
Hello Jenkins Builder,
I'd like you to reexamine a change. Please visit
https://gerrit.osmocom.org/c/osmocom-bb/+/40064?usp=email
to look at the new patch set (#2).
The following approvals got outdated and were removed: Verified-1 by Jenkins Builder
Change subject: trx_toolkit/_fake_trx: Optimize IO loop fd polling ......................................................................
trx_toolkit/_fake_trx: Optimize IO loop fd polling
As can be seen from http://navytux.spb.ru/~kirr/osmo/fake_trx/pyx-base.html (Runner_5loop) the system spends more in py select wrapper compared to select system call itself. And also the wrapper releases/reacquires gil, which, as Iaa675c95059ec8ccfad667f69984d5a7f608c249 (trx_toolkit/clck_gen: Don't use threads because Python GIL is latency killer) shows, can have dramatic effect. It is also known that select inside the kernel is doing useless work at every call by registering/deregistering each fd every time.
-> Avoid all that overhead by switching to epoll and doing epoll_wait ourselves and without releasing/reacquiring the gil. We can do that because fake_trx is single-threaded and because clck_gen._timerfd is setup to do ~ 200 Hz regular wakeup.
Change-Id: I748810871601178cc97bcdaba41419949078c29d --- M src/target/trx_toolkit/_fake_trx.pyx 1 file changed, 111 insertions(+), 18 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/osmocom-bb refs/changes/64/40064/2