diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2022-05-05 18:31:22 +0200 |
---|---|---|
committer | pespin <pespin@sysmocom.de> | 2022-05-06 13:30:17 +0000 |
commit | 5a2347d4bcf7acdef3819c380f66be30c8bf6fa1 (patch) | |
tree | 097a756e24872a4e14cd6d2d0c0b3db9862e5a44 /src | |
parent | cdd2bbd8b81defea82f46cd086202e9b46ac3afa (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.c | 6 |
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; |