aboutsummaryrefslogtreecommitdiffstats
path: root/src/libmsc/db.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2022-05-13 19:48:08 +0200
committerHarald Welte <laforge@osmocom.org>2022-05-15 13:04:56 +0200
commit467fc5728d638239b0257c0e9e60a0e516826e8c (patch)
treea161f39986980aa272d64c4e516298f1890ba811 /src/libmsc/db.c
parent2db1966e25bbecb4dfb275f88e03aacace7863d0 (diff)
switch sqlite3 to single-threaded mode
Looking at 'perf top' of osmo-msc under load shows that there's a significant amount of time spent in terms of locking (mutex,...) which is useless as osmo-msc is a single-threaded application. Unfortunately libdbi doesn't provide a mechanism to perform sqlite3_config(), so we have to do it directly here, introducing an explicit build-time dependency (and linkage) to libsqlite3. Related: OS#5559 Change-Id: I5bbea90d28b6d73b64b9e5124ff59304b90a8a75
Diffstat (limited to 'src/libmsc/db.c')
-rw-r--r--src/libmsc/db.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/libmsc/db.c b/src/libmsc/db.c
index a1683beef..d3d37c72d 100644
--- a/src/libmsc/db.c
+++ b/src/libmsc/db.c
@@ -28,6 +28,7 @@
#include <string.h>
#include <errno.h>
#include <time.h>
+#include <sqlite3.h>
#include <dbi/dbi.h>
#include <osmocom/msc/gsm_data.h>
@@ -637,6 +638,8 @@ static int db_configure(void)
int db_init(const char *name)
{
+ sqlite3_config(SQLITE_CONFIG_SINGLETHREAD);
+
dbi_initialize_r(NULL, &inst);
LOGP(DDB, LOGL_NOTICE, "Init database connection to '%s' using %s\n",