Change in osmo-trx[master]: Use new libosmovty cpu sched config features

This is merely a historical archive of years 2008-2021, before the migration to mailman3.

A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.

laforge gerrit-no-reply at lists.osmocom.org
Mon Aug 10 20:10:27 UTC 2020


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

Change subject: Use new libosmovty cpu sched config features
......................................................................

Use new libosmovty cpu sched config features

Using the new libosmovty features allow for:
* Setting different cpu-affinity masks for each thread in the process,
  both at startup through .cfg file as well as changing it at runtime.
* Unified VTY interface to change the scheduling policy of the process
  inherited by all osmocom processes enabling the feature.

Depends: libosmocore.git Change-Id If76a4bd2cc7b3c7adf5d84790a944d78be70e10a
Depends: osmo-gsm-masnuals.git Change-Id Icd75769ef630c3fa985fc5e2154d5521689cdd3c

Related: SYS#4986
Change-Id: I3798603779b88ea37da03033cf7737a6e4751d6e
---
M CommonLibs/trx_vty.c
A TODO-RELEASE
M Transceiver52M/Transceiver.cpp
M Transceiver52M/device/uhd/UHDDevice.cpp
M Transceiver52M/osmo-trx.cpp
M Transceiver52M/radioInterface.cpp
M doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg
M doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg
M doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg
M doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg
M doc/manuals/osmotrx-usermanual.adoc
11 files changed, 32 insertions(+), 7 deletions(-)

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



diff --git a/CommonLibs/trx_vty.c b/CommonLibs/trx_vty.c
index e37ecaf..1cf4f5a 100644
--- a/CommonLibs/trx_vty.c
+++ b/CommonLibs/trx_vty.c
@@ -291,7 +291,7 @@
 	return CMD_SUCCESS;
 }
 
-DEFUN(cfg_rt_prio, cfg_rt_prio_cmd,
+DEFUN_DEPRECATED(cfg_rt_prio, cfg_rt_prio_cmd,
 	"rt-prio <1-32>",
 	"Set the SCHED_RR real-time priority\n"
 	"Real time priority\n")
@@ -299,6 +299,8 @@
 	struct trx_ctx *trx = trx_from_vty(vty);
 
 	trx->cfg.sched_rr = atoi(argv[0]);
+	vty_out (vty, "%% 'rt-prio %u' is deprecated, use 'policy rr %u' under 'sched' node instead%s",
+		 trx->cfg.sched_rr, trx->cfg.sched_rr, VTY_NEWLINE);
 
 	return CMD_SUCCESS;
 }
diff --git a/TODO-RELEASE b/TODO-RELEASE
new file mode 100644
index 0000000..75fe7b8
--- /dev/null
+++ b/TODO-RELEASE
@@ -0,0 +1,2 @@
+* update libosmocore dependency to > 1.3.x for osmo_sched_vty_init(), osmo_sched_vty_apply_localthread()
+* update osmo-gsm-manuals dependency to > 0.3.0 for vty_cpu_sched.adoc include.
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index c3ef377..32e0226 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -37,6 +37,7 @@
 #include <osmocom/core/utils.h>
 #include <osmocom/core/socket.h>
 #include <osmocom/core/bits.h>
+#include <osmocom/vty/cpu_sched_vty.h>
 }
 
 #ifdef HAVE_CONFIG_H
@@ -1273,6 +1274,7 @@
 
   snprintf(thread_name, 16, "RxUpper%zu", num);
   set_selfthread_name(thread_name);
+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);
 
   while (1) {
     if (!trx->driveReceiveFIFO(num)) {
@@ -1288,6 +1290,7 @@
 void *RxLowerLoopAdapter(Transceiver *transceiver)
 {
   set_selfthread_name("RxLower");
+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);
 
   while (1) {
     if (!transceiver->driveReceiveRadio()) {
@@ -1303,6 +1306,7 @@
 void *TxLowerLoopAdapter(Transceiver *transceiver)
 {
   set_selfthread_name("TxLower");
+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);
 
   while (1) {
     transceiver->driveTxFIFO();
@@ -1321,6 +1325,7 @@
 
   snprintf(thread_name, 16, "TxUpper%zu", num);
   set_selfthread_name(thread_name);
+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);
 
   while (1) {
     if (!trx->driveTxPriorityQueue(num)) {
diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp
index 854ed2e..b5dda28 100644
--- a/Transceiver52M/device/uhd/UHDDevice.cpp
+++ b/Transceiver52M/device/uhd/UHDDevice.cpp
@@ -34,7 +34,9 @@
 #endif
 
 extern "C" {
+#include <osmocom/core/utils.h>
 #include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/vty/cpu_sched_vty.h>
 }
 
 #ifdef USE_UHD_3_11
@@ -150,6 +152,7 @@
 void *async_event_loop(uhd_device *dev)
 {
 	set_selfthread_name("UHDAsyncEvent");
+	OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);
 
 	while (1) {
 		dev->recv_async_msg();
diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp
index 9fcbda5..4a92447 100644
--- a/Transceiver52M/osmo-trx.cpp
+++ b/Transceiver52M/osmo-trx.cpp
@@ -55,6 +55,7 @@
 #include <osmocom/ctrl/control_if.h>
 #include <osmocom/vty/stats.h>
 #include <osmocom/vty/command.h>
+#include <osmocom/vty/cpu_sched_vty.h>
 
 #include "convolve.h"
 #include "convert.h"
@@ -435,7 +436,9 @@
 	int rc;
 	memset(&param, 0, sizeof(param));
 	param.sched_priority = prio;
-	LOG(INFO) << "Setting SCHED_RR priority " << param.sched_priority;
+	LOG(INFO) << "Setting SCHED_RR priority " << param.sched_priority
+		  << ". This setting is DEPRECATED, please use 'policy rr " << param.sched_priority
+		  << "' under the 'sched' VTY node instead.";
 	rc = sched_setscheduler(getpid(), SCHED_RR, &param);
 	if (rc != 0) {
 		LOG(ERROR) << "Config: Setting SCHED_RR failed";
@@ -589,6 +592,7 @@
 	vty_init(&g_vty_info);
 	logging_vty_add_cmds();
 	ctrl_vty_init(tall_trx_ctx);
+	osmo_cpu_sched_vty_init(tall_trx_ctx);
 	trx_vty_init(g_trx_ctx);
 
 	osmo_talloc_vty_add_cmds();
diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp
index adc2ee7..64a6f21 100644
--- a/Transceiver52M/radioInterface.cpp
+++ b/Transceiver52M/radioInterface.cpp
@@ -27,6 +27,9 @@
 #include <Threads.h>
 
 extern "C" {
+#include <osmocom/core/utils.h>
+#include <osmocom/vty/cpu_sched_vty.h>
+
 #include "convert.h"
 }
 
@@ -171,6 +174,7 @@
 void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface)
 {
   set_selfthread_name("AlignRadio");
+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);
   while (1) {
     sleep(60);
     radioInterface->alignRadio();
diff --git a/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg b/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg
index 6d787f6..ae55efe 100644
--- a/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg
+++ b/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg
@@ -9,13 +9,14 @@
 line vty
  no login
 !
+cpu-sched
+ policy rr 18
 trx
  bind-ip 127.0.0.1
  remote-ip 127.0.0.1
  egprs disable
  tx-sps 4
  rx-sps 4
- rt-prio 18
  chan 0
   tx-path BAND1
   rx-path LNAW
diff --git a/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg b/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg
index 6d787f6..ae55efe 100644
--- a/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg
+++ b/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg
@@ -9,13 +9,14 @@
 line vty
  no login
 !
+cpu-sched
+ policy rr 18
 trx
  bind-ip 127.0.0.1
  remote-ip 127.0.0.1
  egprs disable
  tx-sps 4
  rx-sps 4
- rt-prio 18
  chan 0
   tx-path BAND1
   rx-path LNAW
diff --git a/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg b/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg
index 2e45da9..1468e93 100644
--- a/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg
+++ b/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg
@@ -9,6 +9,8 @@
 line vty
  no login
 !
+cpu-sched
+ policy rr 18
 trx
  bind-ip 127.0.0.1
  remote-ip 127.0.0.1
@@ -17,6 +19,5 @@
  tx-sps 4
  rx-sps 4
  rssi-offset 38
- rt-prio 18
  chan 0
  chan 1
diff --git a/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg b/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg
index 1ecaec2..a924122 100644
--- a/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg
+++ b/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg
@@ -9,6 +9,8 @@
 line vty
  no login
 !
+cpu-sched
+ policy rr 18
 trx
  bind-ip 127.0.0.1
  remote-ip 127.0.0.1
@@ -19,6 +21,4 @@
  tx-sps 4
  rx-sps 4
  clock-ref external
- rt-prio 18
  chan 0
-
diff --git a/doc/manuals/osmotrx-usermanual.adoc b/doc/manuals/osmotrx-usermanual.adoc
index a17a899..2d1caad 100644
--- a/doc/manuals/osmotrx-usermanual.adoc
+++ b/doc/manuals/osmotrx-usermanual.adoc
@@ -31,6 +31,8 @@
 
 include::{srcdir}/chapters/code-architecture.adoc[]
 
+include::./common/chapters/vty_cpu_sched.adoc[]
+
 include::./common/chapters/trx_if.adoc[]
 
 include::./common/chapters/port_numbers.adoc[]

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

Gerrit-Project: osmo-trx
Gerrit-Branch: master
Gerrit-Change-Id: I3798603779b88ea37da03033cf7737a6e4751d6e
Gerrit-Change-Number: 19445
Gerrit-PatchSet: 2
Gerrit-Owner: pespin <pespin at sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanitskiy at sysmocom.de>
Gerrit-Reviewer: laforge <laforge at osmocom.org>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osmocom.org/pipermail/gerrit-log/attachments/20200810/6ddc3ba2/attachment.htm>


More information about the gerrit-log mailing list