aboutsummaryrefslogtreecommitdiffstats
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
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
-rw-r--r--configure.ac1
-rw-r--r--contrib/osmo-msc.spec.in1
-rw-r--r--debian/control1
-rw-r--r--src/libmsc/db.c3
-rw-r--r--src/osmo-msc/Makefile.am2
-rw-r--r--tests/db_sms/Makefile.am2
-rw-r--r--tests/msc_vlr/Makefile.am2
-rw-r--r--tests/sms_queue/Makefile.am2
8 files changed, 14 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index 3395ecc0d..1fd7260d4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -36,6 +36,7 @@ if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
fi
PKG_PROG_PKG_CONFIG([0.20])
+PKG_CHECK_MODULES(LIBSQLITE3, sqlite3)
PKG_CHECK_MODULES(LIBOSMOCORE, libosmocore >= 1.6.0)
PKG_CHECK_MODULES(LIBOSMOVTY, libosmovty >= 1.6.0)
PKG_CHECK_MODULES(LIBOSMOCTRL, libosmoctrl >= 1.6.0)
diff --git a/contrib/osmo-msc.spec.in b/contrib/osmo-msc.spec.in
index 17c07b91b..912804c4d 100644
--- a/contrib/osmo-msc.spec.in
+++ b/contrib/osmo-msc.spec.in
@@ -34,6 +34,7 @@ BuildRequires: systemd-rpm-macros
%endif
BuildRequires: pkgconfig >= 0.20
BuildRequires: pkgconfig(dbi)
+BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(libcrypto) >= 0.9.5
BuildRequires: pkgconfig(libosmo-gsup-client) >= 1.4.0
BuildRequires: pkgconfig(libosmo-mgcp-client) >= 1.9.0
diff --git a/debian/control b/debian/control
index 0b2ac6b2c..d9fccfa98 100644
--- a/debian/control
+++ b/debian/control
@@ -11,6 +11,7 @@ Build-Depends: debhelper (>=9),
pkg-config,
libdbi-dev,
libdbd-sqlite3,
+ libsqlite3-dev,
libsctp-dev,
libtalloc-dev,
libsmpp34-dev (>= 1.14.0),
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",
diff --git a/src/osmo-msc/Makefile.am b/src/osmo-msc/Makefile.am
index 7b56c7458..149291866 100644
--- a/src/osmo-msc/Makefile.am
+++ b/src/osmo-msc/Makefile.am
@@ -19,6 +19,7 @@ AM_CFLAGS = \
$(LIBOSMOSIGTRAN_CFLAGS) \
$(LIBOSMOMGCPCLIENT_CFLAGS) \
$(LIBOSMOGSUPCLIENT_CFLAGS) \
+ $(LIBSQLITE3_CFLAGS) \
$(NULL)
AM_LDFLAGS = \
@@ -48,6 +49,7 @@ osmo_msc_LDADD = \
$(LIBOSMOSIGTRAN_LIBS) \
$(LIBOSMOMGCPCLIENT_LIBS) \
$(LIBOSMOGSUPCLIENT_LIBS) \
+ $(LIBSQLITE3_LIBS) \
-ldbi \
-lsctp \
$(NULL)
diff --git a/tests/db_sms/Makefile.am b/tests/db_sms/Makefile.am
index 52fd35ea3..52e8cab0c 100644
--- a/tests/db_sms/Makefile.am
+++ b/tests/db_sms/Makefile.am
@@ -17,6 +17,7 @@ AM_CFLAGS = \
$(LIBSMPP34_CFLAGS) \
$(LIBOSMOMGCPCLIENT_CFLAGS) \
$(LIBOSMOGSUPCLIENT_CFLAGS) \
+ $(LIBSQLITE3_CFLAGS) \
$(NULL)
EXTRA_DIST = \
@@ -46,6 +47,7 @@ db_sms_test_LDADD = \
$(LIBASN1C_LIBS) \
$(LIBOSMOMGCPCLIENT_LIBS) \
$(LIBOSMOGSUPCLIENT_LIBS) \
+ $(LIBSQLITE3_LIBS) \
$(LIBRARY_GSM) \
-ldbi \
$(NULL)
diff --git a/tests/msc_vlr/Makefile.am b/tests/msc_vlr/Makefile.am
index a84ea3fbd..b1853a175 100644
--- a/tests/msc_vlr/Makefile.am
+++ b/tests/msc_vlr/Makefile.am
@@ -17,6 +17,7 @@ AM_CFLAGS = \
$(LIBASN1C_CFLAGS) \
$(LIBOSMOMGCPCLIENT_CFLAGS) \
$(LIBOSMOGSUPCLIENT_CFLAGS) \
+ $(LIBSQLITE3_CFLAGS) \
$(NULL)
AM_LDFLAGS = \
@@ -41,6 +42,7 @@ LDADD = \
$(LIBASN1C_LIBS) \
$(LIBOSMOMGCPCLIENT_LIBS) \
$(LIBOSMOGSUPCLIENT_LIBS) \
+ $(LIBSQLITE3_LIBS) \
$(LIBRARY_GSM) \
-ldbi \
$(NULL)
diff --git a/tests/sms_queue/Makefile.am b/tests/sms_queue/Makefile.am
index a73910159..037549720 100644
--- a/tests/sms_queue/Makefile.am
+++ b/tests/sms_queue/Makefile.am
@@ -15,6 +15,7 @@ AM_CFLAGS = \
$(LIBASN1C_CFLAGS) \
$(LIBOSMOMGCPCLIENT_CFLAGS) \
$(LIBOSMOGSUPCLIENT_CFLAGS) \
+ $(LIBSQLITE3_CFLAGS) \
$(NULL)
EXTRA_DIST = \
@@ -43,6 +44,7 @@ sms_queue_test_LDADD = \
$(LIBASN1C_LIBS) \
$(LIBOSMOMGCPCLIENT_LIBS) \
$(LIBOSMOGSUPCLIENT_LIBS) \
+ $(LIBSQLITE3_LIBS) \
$(LIBRARY_GSM) \
-ldbi \
$(NULL)