laforge has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-msc/+/28108 )

Change subject: switch sqlite3 to single-threaded mode
......................................................................

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
---
M configure.ac
M contrib/osmo-msc.spec.in
M debian/control
M src/libmsc/db.c
M src/osmo-msc/Makefile.am
M tests/db_sms/Makefile.am
M tests/msc_vlr/Makefile.am
M tests/sms_queue/Makefile.am
8 files changed, 14 insertions(+), 0 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved



diff --git a/configure.ac b/configure.ac
index 3395ecc..1fd7260 100644
--- a/configure.ac
+++ b/configure.ac
@@ -36,6 +36,7 @@
 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 17c07b9..912804c 100644
--- a/contrib/osmo-msc.spec.in
+++ b/contrib/osmo-msc.spec.in
@@ -34,6 +34,7 @@
 %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 0b2ac6b..d9fccfa 100644
--- a/debian/control
+++ b/debian/control
@@ -11,6 +11,7 @@
                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 a1683be..d3d37c7 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 @@

 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 7b56c74..1492918 100644
--- a/src/osmo-msc/Makefile.am
+++ b/src/osmo-msc/Makefile.am
@@ -19,6 +19,7 @@
        $(LIBOSMOSIGTRAN_CFLAGS) \
        $(LIBOSMOMGCPCLIENT_CFLAGS) \
        $(LIBOSMOGSUPCLIENT_CFLAGS) \
+       $(LIBSQLITE3_CFLAGS) \
        $(NULL)

 AM_LDFLAGS = \
@@ -48,6 +49,7 @@
        $(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 52fd35e..52e8cab 100644
--- a/tests/db_sms/Makefile.am
+++ b/tests/db_sms/Makefile.am
@@ -17,6 +17,7 @@
        $(LIBSMPP34_CFLAGS) \
        $(LIBOSMOMGCPCLIENT_CFLAGS) \
        $(LIBOSMOGSUPCLIENT_CFLAGS) \
+       $(LIBSQLITE3_CFLAGS) \
        $(NULL)

 EXTRA_DIST = \
@@ -46,6 +47,7 @@
        $(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 a84ea3f..b1853a1 100644
--- a/tests/msc_vlr/Makefile.am
+++ b/tests/msc_vlr/Makefile.am
@@ -17,6 +17,7 @@
        $(LIBASN1C_CFLAGS) \
        $(LIBOSMOMGCPCLIENT_CFLAGS) \
        $(LIBOSMOGSUPCLIENT_CFLAGS) \
+       $(LIBSQLITE3_CFLAGS) \
        $(NULL)

 AM_LDFLAGS = \
@@ -41,6 +42,7 @@
        $(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 a739101..0375497 100644
--- a/tests/sms_queue/Makefile.am
+++ b/tests/sms_queue/Makefile.am
@@ -15,6 +15,7 @@
        $(LIBASN1C_CFLAGS) \
        $(LIBOSMOMGCPCLIENT_CFLAGS) \
        $(LIBOSMOGSUPCLIENT_CFLAGS) \
+       $(LIBSQLITE3_CFLAGS) \
        $(NULL)

 EXTRA_DIST = \
@@ -43,6 +44,7 @@
        $(LIBASN1C_LIBS) \
        $(LIBOSMOMGCPCLIENT_LIBS) \
        $(LIBOSMOGSUPCLIENT_LIBS) \
+       $(LIBSQLITE3_LIBS) \
        $(LIBRARY_GSM) \
        -ldbi \
        $(NULL)

--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/28108
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: I5bbea90d28b6d73b64b9e5124ff59304b90a8a75
Gerrit-Change-Number: 28108
Gerrit-PatchSet: 4
Gerrit-Owner: laforge <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-CC: fixeria <[email protected]>
Gerrit-MessageType: merged

Reply via email to