aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPau Espin Pedrol <pespin@sysmocom.de>2020-07-29 18:05:25 +0200
committerPau Espin Pedrol <pespin@sysmocom.de>2020-07-29 18:29:21 +0200
commite60a7ddc9aee3053a2cf2b606f507956294330ab (patch)
tree7638ab6ea86bdc60d23a08534c2585c5065441bf
parent1d165a043e956c6a86a3d36f089fb940234b33b6 (diff)
Use new libosmovty sched config featurespespin/sched
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 Related: SYS#4986 Change-Id: I3798603779b88ea37da03033cf7737a6e4751d6e
-rw-r--r--CommonLibs/trx_vty.c4
-rw-r--r--TODO-RELEASE1
-rw-r--r--Transceiver52M/Transceiver.cpp5
-rw-r--r--Transceiver52M/device/uhd/UHDDevice.cpp3
-rw-r--r--Transceiver52M/osmo-trx.cpp6
-rw-r--r--Transceiver52M/radioInterface.cpp4
-rw-r--r--doc/examples/osmo-trx-lms/osmo-trx-limesdr.cfg3
-rw-r--r--doc/examples/osmo-trx-uhd/osmo-trx-limesdr.cfg3
-rw-r--r--doc/examples/osmo-trx-uhd/osmo-trx-umtrx.cfg3
-rw-r--r--doc/examples/osmo-trx-uhd/osmo-trx-usrp_b200.cfg4
10 files changed, 29 insertions, 7 deletions
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 @@ DEFUN(cfg_ext_rach, cfg_ext_rach_cmd,
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 @@ DEFUN(cfg_rt_prio, cfg_rt_prio_cmd,
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..2e1d8b3
--- /dev/null
+++ b/TODO-RELEASE
@@ -0,0 +1 @@
+* update libosmocore dependency to > 1.3.x for osmo_sched_vty_init(), osmo_sched_vty_apply_localthread()
diff --git a/Transceiver52M/Transceiver.cpp b/Transceiver52M/Transceiver.cpp
index c3ef377..61d17ac 100644
--- a/Transceiver52M/Transceiver.cpp
+++ b/Transceiver52M/Transceiver.cpp
@@ -37,6 +37,7 @@ extern "C" {
#include <osmocom/core/utils.h>
#include <osmocom/core/socket.h>
#include <osmocom/core/bits.h>
+#include <osmocom/vty/sched_vty.h>
}
#ifdef HAVE_CONFIG_H
@@ -1273,6 +1274,7 @@ void *RxUpperLoopAdapter(TrxChanThParams *params)
snprintf(thread_name, 16, "RxUpper%zu", num);
set_selfthread_name(thread_name);
+ OSMO_ASSERT(osmo_sched_vty_apply_localthread() == 0);
while (1) {
if (!trx->driveReceiveFIFO(num)) {
@@ -1288,6 +1290,7 @@ void *RxUpperLoopAdapter(TrxChanThParams *params)
void *RxLowerLoopAdapter(Transceiver *transceiver)
{
set_selfthread_name("RxLower");
+ OSMO_ASSERT(osmo_sched_vty_apply_localthread() == 0);
while (1) {
if (!transceiver->driveReceiveRadio()) {
@@ -1303,6 +1306,7 @@ void *RxLowerLoopAdapter(Transceiver *transceiver)
void *TxLowerLoopAdapter(Transceiver *transceiver)
{
set_selfthread_name("TxLower");
+ OSMO_ASSERT(osmo_sched_vty_apply_localthread() == 0);
while (1) {
transceiver->driveTxFIFO();
@@ -1321,6 +1325,7 @@ void *TxUpperLoopAdapter(TrxChanThParams *params)
snprintf(thread_name, 16, "TxUpper%zu", num);
set_selfthread_name(thread_name);
+ OSMO_ASSERT(osmo_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..23feac2 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/sched_vty.h>
}
#ifdef USE_UHD_3_11
@@ -150,6 +152,7 @@ static const std::map<dev_band_key, dev_band_desc> dev_band_nom_power_param_map
void *async_event_loop(uhd_device *dev)
{
set_selfthread_name("UHDAsyncEvent");
+ OSMO_ASSERT(osmo_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..9a391db 100644
--- a/Transceiver52M/osmo-trx.cpp
+++ b/Transceiver52M/osmo-trx.cpp
@@ -55,6 +55,7 @@ extern "C" {
#include <osmocom/ctrl/control_if.h>
#include <osmocom/vty/stats.h>
#include <osmocom/vty/command.h>
+#include <osmocom/vty/sched_vty.h>
#include "convolve.h"
#include "convert.h"
@@ -435,7 +436,9 @@ static int set_sched_rr(unsigned int prio)
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 @@ int main(int argc, char *argv[])
vty_init(&g_vty_info);
logging_vty_add_cmds();
ctrl_vty_init(tall_trx_ctx);
+ osmo_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..f0fdc3f 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/sched_vty.h>
+
#include "convert.h"
}
@@ -171,6 +174,7 @@ bool RadioInterface::tuneRx(double freq, size_t chan)
void *AlignRadioServiceLoopAdapter(RadioInterface *radioInterface)
{
set_selfthread_name("AlignRadio");
+ OSMO_ASSERT(osmo_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..e9929bb 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 @@ log stderr
line vty
no login
!
+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..e9929bb 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 @@ log stderr
line vty
no login
!
+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..d91f370 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 @@ log stderr
line vty
no login
!
+sched
+ policy rr 18
trx
bind-ip 127.0.0.1
remote-ip 127.0.0.1
@@ -17,6 +19,5 @@ trx
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..7fb781d 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 @@ log stderr
line vty
no login
!
+sched
+ policy rr 18
trx
bind-ip 127.0.0.1
remote-ip 127.0.0.1
@@ -19,6 +21,4 @@ trx
tx-sps 4
rx-sps 4
clock-ref external
- rt-prio 18
chan 0
-