aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2022-05-05 18:31:22 +0200
committerpespin <pespin@sysmocom.de>2022-05-06 13:30:17 +0000
commit5a2347d4bcf7acdef3819c380f66be30c8bf6fa1 (patch)
tree097a756e24872a4e14cd6d2d0c0b3db9862e5a44 /src
parentcdd2bbd8b81defea82f46cd086202e9b46ac3afa (diff)
paging: Avoid unnecessary immediate polling in mainloop
We have seen an increased CPU load in osmo-bsc recently since the paging improvements where merged, centered round poll() calls. It is expected most of them will be fixed with previous patch. In any case, let's avoid unnecessary poll() calls being called for no reason. Related: OS#5922 Change-Id: Ie767bdc8d4353aafe375a424e02d698ef7fd3dea
Diffstat (limited to 'src')
-rw-r--r--src/osmo-bsc/paging.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/osmo-bsc/paging.c b/src/osmo-bsc/paging.c
index fe403d2cd..4cac64c4c 100644
--- a/src/osmo-bsc/paging.c
+++ b/src/osmo-bsc/paging.c
@@ -469,7 +469,11 @@ static int _paging_request(const struct bsc_paging_params *params, struct gsm_bt
LOG_PAGING_BTS(req, req->bts, DPAG, LOGL_DEBUG,
"New req arrived: re-scheduling next batch in %lld.%06lds\n",
(long long)tdiff.tv_sec, tdiff.tv_nsec / 1000);
- osmo_timer_schedule(&bts_entry->work_timer, tdiff.tv_sec, tdiff.tv_nsec / 1000);
+ /* Avoid scheduling timer for short periods, run cb directly: */
+ if (tdiff.tv_sec == 0 && tdiff.tv_nsec < 5000)
+ paging_worker(bts_entry);
+ else
+ osmo_timer_schedule(&bts_entry->work_timer, tdiff.tv_sec, tdiff.tv_nsec / 1000);
} /* else: worker is already ongoing submitting initial requests, nothing do be done */
return 0;