Skip to content

added msg-q threading options (and CPU thread pinning) from O-RAN 7.2 branch.

knopp requested to merge threading-rk into develop

This is an incremental MR. It adds lower-level msg-q based threading options in place of the thread-pool API and allows for using a single-thread in the L1 entity for process scheduling (instead of the reordering thread). This is a somewhat simpler mechanism and brings back the pipeline via the msg-q. The RU thread no longer blocks until the L1 TX threads are finished their processing which is the case now.

New command-line parameter: reorder-thread-disable. This activates the L1_rx_thread which does RX procedures, calls the L2 scheduler (via UL_indication) and then the TX procedures in sequence. If slot_ahead = TDD periodicity there is only RX or TX in the slot and we use a single thread instead of 3 when the reorder-thread is used. In a subsequent MR, we will introduce the possibility of a second thread (L1_tx_thread) which will call the L2 scheduler and do the TX processing in a single thread. This will allow for RX and TX parallelization and reduce the latency of the transmission chain. For the moment L1_tx_thread is not activated. This will require adding a new interface for the MAC layer which just calls the scheduler, i.e. separately from the UL indications.

New configuration file parameters:

RU Section: ru_thread_core : allows the ru_thread to run on an isolated core. By default it is -1 and allocated by the OS. L1 Section: L1_rx_thread_core: allows the L1_thread_rx to run on an isolated core. By default it is -1 and allocated by the OS.

These are typically used in some deployment scenarios (e.g. O-RAN, AW2S) to ensure deterministic scheduling/no swapping of these threads by Linux.

Merge request reports