SMP Next Steps

Sebastian Huber sebastian.huber at embedded-brains.de
Wed Sep 21 12:15:14 UTC 2016


Hello,

with the reworked thread priority management we have now all information 
available to feed the schedulers and implement the last step of the OMIP 
locking protocol.

https://devel.rtems.org/ticket/2556

The remaining work is mostly SMP only. We have two major locking domains 
for threads, one is the thread wait domain (thread queues) and the other 
is the thread state (scheduler related) domain. The thread wait domain 
needs to pass the thread priority information to the thread state 
domain. This will be done via a dedicated low-level SMP lock 
(Thread_Control::Scheduler::Lock) and disabled thread dispatching. Each 
thread may use multiple scheduler instances (clustered scheduling) due 
to the locking protocols (MrsP and OMIP).

The first approach to implement MrsP had several severe design flaws. I 
will replace it and use a thread queue instead. So, the Resource Handler 
will be removed entirely 
(https://git.rtems.org/rtems/tree/cpukit/score/include/rtems/score/resource.h). 
The first scheduler helping protocol used a return value to indicate 
threads in need for help. There are three problems with this approach. 
Firstly, you can return at most one thread, but multiple threads in need 
for help may be produced by one operation, e.g. due to affinity 
constraints. Secondly, the thread the initiated the operation must carry 
out the ask for help operation. This is bad in terms of scheduler 
instance isolation, e.g. high priority thread H in instance A sends a 
message to worker thread in instance B, H must execute scheduler code of 
instance B. Thirdly, it complicates the SMP low-level locking. I will 
change this to use an SMP message processed via an 
inter-processor-interrupt.

Once the OMIP implementation is done, the SMP support for RTEMS is 
feature complete from my point of view. There are still some interesting 
things to do, but the ground work is done and I think we have a 
state-of-the-art feature set in real-time SMP systems area.

-- 
Sebastian Huber, embedded brains GmbH

Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone   : +49 89 189 47 41-16
Fax     : +49 89 189 47 41-09
E-Mail  : sebastian.huber at embedded-brains.de
PGP     : Public key available on request.

Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.



More information about the devel mailing list