@@ -323,7 +323,7 @@ void worker_manager::create_low_prio_executors(const expert_execution_appconfig&
323323 // Used for PCAP writing.
324324 non_rt_pool.executors .emplace_back (" low_prio_exec" , task_priority::max - 1 );
325325 // Used for control plane and timer management.
326- non_rt_pool.executors .push_back ({" high_prio_exec" , task_priority::max, {}, std:: nullopt , not rt_mode });
326+ non_rt_pool.executors .push_back ({" high_prio_exec" , task_priority::max});
327327 // Used to serialize all CU-UP tasks, while CU-UP does not support multithreading.
328328 non_rt_pool.executors .push_back ({" cu_up_strand" ,
329329 task_priority::max - 1 ,
@@ -337,9 +337,11 @@ void worker_manager::create_low_prio_executors(const expert_execution_appconfig&
337337 // Configuration of strands for PCAP writing. These strands will use the low priority executor.
338338 append_pcap_strands (low_prio_strands, cu_cp_pcaps, cu_up_pcaps, du_pcaps);
339339
340- // Configuration of strand for the control plane handling (CU-CP and DU-high control plane). This strand will
341- // support two priority levels, the highest being for timer management.
342- strand cp_strand{{{" timer_exec" , concurrent_queue_policy::lockfree_spsc, task_worker_queue_size},
340+ // Configuration of strand for the control plane handling (CU-CP and DU-high control plane).
341+ // This strand will support two priority levels, the highest being for timer management.
342+ // Note: In case of non-RT operation, we make the timer_exec synchronous. This will have the effect of stopping
343+ // the lower layers from running faster than this strand.
344+ strand cp_strand{{{" timer_exec" , concurrent_queue_policy::lockfree_spsc, task_worker_queue_size, not rt_mode},
343345 {" ctrl_exec" , concurrent_queue_policy::lockfree_mpmc, task_worker_queue_size}}};
344346 high_prio_strands.push_back (cp_strand);
345347
0 commit comments