<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/osmo-trx/+/19445">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, but someone else must approve
  laforge: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">Use new libosmovty cpu sched config features<br><br>Using the new libosmovty features allow for:<br>* Setting different cpu-affinity masks for each thread in the process,<br>  both at startup through .cfg file as well as changing it at runtime.<br>* Unified VTY interface to change the scheduling policy of the process<br>  inherited by all osmocom processes enabling the feature.<br><br>Depends: libosmocore.git Change-Id If76a4bd2cc7b3c7adf5d84790a944d78be70e10a<br>Depends: osmo-gsm-masnuals.git Change-Id Icd75769ef630c3fa985fc5e2154d5521689cdd3c<br><br>Related: SYS#4986<br>Change-Id: I3798603779b88ea37da03033cf7737a6e4751d6e<br>---<br>M CommonLibs/trx_vty.c<br>A TODO-RELEASE<br>M Transceiver52M/Transceiver.cpp<br>M Transceiver52M/device/uhd/UHDDevice.cpp<br>M Transceiver52M/osmo-trx.cpp<br>M Transceiver52M/radioInterface.cpp<br>M doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg<br>M doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg<br>M doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg<br>M doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg<br>M doc/manuals/osmotrx-usermanual.adoc<br>11 files changed, 32 insertions(+), 7 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/CommonLibs/trx_vty.c b/CommonLibs/trx_vty.c</span><br><span>index e37ecaf..1cf4f5a 100644</span><br><span>--- a/CommonLibs/trx_vty.c</span><br><span>+++ b/CommonLibs/trx_vty.c</span><br><span>@@ -291,7 +291,7 @@</span><br><span>         return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-DEFUN(cfg_rt_prio, cfg_rt_prio_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN_DEPRECATED(cfg_rt_prio, cfg_rt_prio_cmd,</span><br><span>      "rt-prio <1-32>",</span><br><span>    "Set the SCHED_RR real-time priority\n"</span><br><span>    "Real time priority\n")</span><br><span>@@ -299,6 +299,8 @@</span><br><span>      struct trx_ctx *trx = trx_from_vty(vty);</span><br><span> </span><br><span>         trx->cfg.sched_rr = atoi(argv[0]);</span><br><span style="color: hsl(120, 100%, 40%);">+ vty_out (vty, "%% 'rt-prio %u' is deprecated, use 'policy rr %u' under 'sched' node instead%s",</span><br><span style="color: hsl(120, 100%, 40%);">+              trx->cfg.sched_rr, trx->cfg.sched_rr, VTY_NEWLINE);</span><br><span> </span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span>diff --git a/TODO-RELEASE b/TODO-RELEASE</span><br><span>new file mode 100644</span><br><span>index 0000000..75fe7b8</span><br><span>--- /dev/null</span><br><span>+++ b/TODO-RELEASE</span><br><span>@@ -0,0 +1,2 @@</span><br><span style="color: hsl(120, 100%, 40%);">+* update libosmocore dependency to > 1.3.x for osmo_sched_vty_init(), osmo_sched_vty_apply_localthread()</span><br><span style="color: hsl(120, 100%, 40%);">+* update osmo-gsm-manuals dependency to > 0.3.0 for vty_cpu_sched.adoc include.</span><br><span>diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp</span><br><span>index c3ef377..32e0226 100644</span><br><span>--- a/Transceiver52M/Transceiver.cpp</span><br><span>+++ b/Transceiver52M/Transceiver.cpp</span><br><span>@@ -37,6 +37,7 @@</span><br><span> #include <osmocom/core/utils.h></span><br><span> #include <osmocom/core/socket.h></span><br><span> #include <osmocom/core/bits.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/vty/cpu_sched_vty.h></span><br><span> }</span><br><span> </span><br><span> #ifdef HAVE_CONFIG_H</span><br><span>@@ -1273,6 +1274,7 @@</span><br><span> </span><br><span>   snprintf(thread_name, 16, "RxUpper%zu", num);</span><br><span>   set_selfthread_name(thread_name);</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);</span><br><span> </span><br><span>   while (1) {</span><br><span>     if (!trx->driveReceiveFIFO(num)) {</span><br><span>@@ -1288,6 +1290,7 @@</span><br><span> void *RxLowerLoopAdapter(Transceiver *transceiver)</span><br><span> {</span><br><span>   set_selfthread_name("RxLower");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);</span><br><span> </span><br><span>   while (1) {</span><br><span>     if (!transceiver->driveReceiveRadio()) {</span><br><span>@@ -1303,6 +1306,7 @@</span><br><span> void *TxLowerLoopAdapter(Transceiver *transceiver)</span><br><span> {</span><br><span>   set_selfthread_name("TxLower");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);</span><br><span> </span><br><span>   while (1) {</span><br><span>     transceiver->driveTxFIFO();</span><br><span>@@ -1321,6 +1325,7 @@</span><br><span> </span><br><span>   snprintf(thread_name, 16, "TxUpper%zu", num);</span><br><span>   set_selfthread_name(thread_name);</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);</span><br><span> </span><br><span>   while (1) {</span><br><span>     if (!trx->driveTxPriorityQueue(num)) {</span><br><span>diff --git a/Transceiver52M/device/uhd/UHDDevice.cpp b/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>index 854ed2e..b5dda28 100644</span><br><span>--- a/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>+++ b/Transceiver52M/device/uhd/UHDDevice.cpp</span><br><span>@@ -34,7 +34,9 @@</span><br><span> #endif</span><br><span> </span><br><span> extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/utils.h></span><br><span> #include <osmocom/gsm/gsm_utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/vty/cpu_sched_vty.h></span><br><span> }</span><br><span> </span><br><span> #ifdef USE_UHD_3_11</span><br><span>@@ -150,6 +152,7 @@</span><br><span> void *async_event_loop(uhd_device *dev)</span><br><span> {</span><br><span>        set_selfthread_name("UHDAsyncEvent");</span><br><span style="color: hsl(120, 100%, 40%);">+       OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);</span><br><span> </span><br><span>        while (1) {</span><br><span>          dev->recv_async_msg();</span><br><span>diff --git a/Transceiver52M/osmo-trx.cpp b/Transceiver52M/osmo-trx.cpp</span><br><span>index 9fcbda5..4a92447 100644</span><br><span>--- a/Transceiver52M/osmo-trx.cpp</span><br><span>+++ b/Transceiver52M/osmo-trx.cpp</span><br><span>@@ -55,6 +55,7 @@</span><br><span> #include <osmocom/ctrl/control_if.h></span><br><span> #include <osmocom/vty/stats.h></span><br><span> #include <osmocom/vty/command.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/vty/cpu_sched_vty.h></span><br><span> </span><br><span> #include "convolve.h"</span><br><span> #include "convert.h"</span><br><span>@@ -435,7 +436,9 @@</span><br><span>  int rc;</span><br><span>      memset(&param, 0, sizeof(param));</span><br><span>        param.sched_priority = prio;</span><br><span style="color: hsl(0, 100%, 40%);">-    LOG(INFO) << "Setting SCHED_RR priority " << param.sched_priority;</span><br><span style="color: hsl(120, 100%, 40%);">+      LOG(INFO) << "Setting SCHED_RR priority " << param.sched_priority</span><br><span style="color: hsl(120, 100%, 40%);">+                 << ". This setting is DEPRECATED, please use 'policy rr " << param.sched_priority</span><br><span style="color: hsl(120, 100%, 40%);">+           << "' under the 'sched' VTY node instead.";</span><br><span>    rc = sched_setscheduler(getpid(), SCHED_RR, &param);</span><br><span>     if (rc != 0) {</span><br><span>               LOG(ERROR) << "Config: Setting SCHED_RR failed";</span><br><span>@@ -589,6 +592,7 @@</span><br><span>       vty_init(&g_vty_info);</span><br><span>   logging_vty_add_cmds();</span><br><span>      ctrl_vty_init(tall_trx_ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+  osmo_cpu_sched_vty_init(tall_trx_ctx);</span><br><span>       trx_vty_init(g_trx_ctx);</span><br><span> </span><br><span>         osmo_talloc_vty_add_cmds();</span><br><span>diff --git a/Transceiver52M/radioInterface.cpp b/Transceiver52M/radioInterface.cpp</span><br><span>index adc2ee7..64a6f21 100644</span><br><span>--- a/Transceiver52M/radioInterface.cpp</span><br><span>+++ b/Transceiver52M/radioInterface.cpp</span><br><span>@@ -27,6 +27,9 @@</span><br><span> #include <Threads.h></span><br><span> </span><br><span> extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/core/utils.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/vty/cpu_sched_vty.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> #include "convert.h"</span><br><span> }</span><br><span> </span><br><span>@@ -171,6 +174,7 @@</span><br><span> void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface)</span><br><span> {</span><br><span>   set_selfthread_name("AlignRadio");</span><br><span style="color: hsl(120, 100%, 40%);">+  OSMO_ASSERT(osmo_cpu_sched_vty_apply_localthread() == 0);</span><br><span>   while (1) {</span><br><span>     sleep(60);</span><br><span>     radioInterface->alignRadio();</span><br><span>diff --git a/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg b/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg</span><br><span>index 6d787f6..ae55efe 100644</span><br><span>--- a/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg</span><br><span>+++ b/doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg</span><br><span>@@ -9,13 +9,14 @@</span><br><span> line vty</span><br><span>  no login</span><br><span> !</span><br><span style="color: hsl(120, 100%, 40%);">+cpu-sched</span><br><span style="color: hsl(120, 100%, 40%);">+ policy rr 18</span><br><span> trx</span><br><span>  bind-ip 127.0.0.1</span><br><span>  remote-ip 127.0.0.1</span><br><span>  egprs disable</span><br><span>  tx-sps 4</span><br><span>  rx-sps 4</span><br><span style="color: hsl(0, 100%, 40%);">- rt-prio 18</span><br><span>  chan 0</span><br><span>   tx-path BAND1</span><br><span>   rx-path LNAW</span><br><span>diff --git a/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg b/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg</span><br><span>index 6d787f6..ae55efe 100644</span><br><span>--- a/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg</span><br><span>+++ b/doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg</span><br><span>@@ -9,13 +9,14 @@</span><br><span> line vty</span><br><span>  no login</span><br><span> !</span><br><span style="color: hsl(120, 100%, 40%);">+cpu-sched</span><br><span style="color: hsl(120, 100%, 40%);">+ policy rr 18</span><br><span> trx</span><br><span>  bind-ip 127.0.0.1</span><br><span>  remote-ip 127.0.0.1</span><br><span>  egprs disable</span><br><span>  tx-sps 4</span><br><span>  rx-sps 4</span><br><span style="color: hsl(0, 100%, 40%);">- rt-prio 18</span><br><span>  chan 0</span><br><span>   tx-path BAND1</span><br><span>   rx-path LNAW</span><br><span>diff --git a/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg b/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg</span><br><span>index 2e45da9..1468e93 100644</span><br><span>--- a/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg</span><br><span>+++ b/doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg</span><br><span>@@ -9,6 +9,8 @@</span><br><span> line vty</span><br><span>  no login</span><br><span> !</span><br><span style="color: hsl(120, 100%, 40%);">+cpu-sched</span><br><span style="color: hsl(120, 100%, 40%);">+ policy rr 18</span><br><span> trx</span><br><span>  bind-ip 127.0.0.1</span><br><span>  remote-ip 127.0.0.1</span><br><span>@@ -17,6 +19,5 @@</span><br><span>  tx-sps 4</span><br><span>  rx-sps 4</span><br><span>  rssi-offset 38</span><br><span style="color: hsl(0, 100%, 40%);">- rt-prio 18</span><br><span>  chan 0</span><br><span>  chan 1</span><br><span>diff --git a/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg b/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg</span><br><span>index 1ecaec2..a924122 100644</span><br><span>--- a/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg</span><br><span>+++ b/doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg</span><br><span>@@ -9,6 +9,8 @@</span><br><span> line vty</span><br><span>  no login</span><br><span> !</span><br><span style="color: hsl(120, 100%, 40%);">+cpu-sched</span><br><span style="color: hsl(120, 100%, 40%);">+ policy rr 18</span><br><span> trx</span><br><span>  bind-ip 127.0.0.1</span><br><span>  remote-ip 127.0.0.1</span><br><span>@@ -19,6 +21,4 @@</span><br><span>  tx-sps 4</span><br><span>  rx-sps 4</span><br><span>  clock-ref external</span><br><span style="color: hsl(0, 100%, 40%);">- rt-prio 18</span><br><span>  chan 0</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span>diff --git a/doc/manuals/osmotrx-usermanual.adoc b/doc/manuals/osmotrx-usermanual.adoc</span><br><span>index a17a899..2d1caad 100644</span><br><span>--- a/doc/manuals/osmotrx-usermanual.adoc</span><br><span>+++ b/doc/manuals/osmotrx-usermanual.adoc</span><br><span>@@ -31,6 +31,8 @@</span><br><span> </span><br><span> include::{srcdir}/chapters/code-architecture.adoc[]</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+include::./common/chapters/vty_cpu_sched.adoc[]</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> include::./common/chapters/trx_if.adoc[]</span><br><span> </span><br><span> include::./common/chapters/port_numbers.adoc[]</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-trx/+/19445">change 19445</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-trx/+/19445"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-trx </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I3798603779b88ea37da03033cf7737a6e4751d6e </div>
<div style="display:none"> Gerrit-Change-Number: 19445 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <vyanitskiy@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>