TL;DR: The design and evaluation of their implementations in LITMUSRT, a real-time extension of the Linux kernel, shows substantial improvements in the uncontended case, at the expense of some increases in worst-case overhead on par with Linux's existing futex implementation.
Abstract: This paper explores the problem of how to improve the average-case performance of real-time locking protocols, preferably without significantly deteriorating worst-case performance. Motivated by the futex implementation in Linux, where uncontended lock operations under the Priority Inheritance Protocol (PIP) do not incur mode-switching overheads, we extend this concept to more sophisticated protocols, namely the PCP, the MPCP and the FMLP+. We identify the challenges involved in implementing futexes for these protocols and present the design and evaluation of their implementations in LITMUSRT, a real-time extension of the Linux kernel. Our evaluation shows substantial improvements in the uncontended case (e.g., A futex implementation of the PCP lowers lock acquisition and release overheads by up to 75% and 92%, respectively), at the expense of some increases in worst-case overhead on par with Linux's existing futex implementation.
TL;DR: This paper provides a method for tuning a standard Linux kernel so it can meet the real time requirement of an embedded system.
Abstract: There is a desire to use Linux in military systems. Customers are requesting contractors to use open source to the
maximal possible extent in contracts. Linux is probably the best operating system of choice to meet this need. It is
widely used. It is free. It is royalty free, and, best of all, it is completely open source. However, there is a problem.
Linux was not originally built to be a real time operating system. There are many places where interrupts can and will
be blocked for an indeterminate amount of time. There have been several attempts to bridge this gap. One of them is
from RTLinux, which attempts to build a microkernel underneath Linux. The microkernel will handle all interrupts and
then pass it up to the Linux operating system. This does insure good interrupt latency; however, it is not free [1].
Another is RTAI, which provides a similar typed interface; however, the PowerPC platform, which is used widely in real
time embedded community, was stated as "recovering" [2]. Thus this is not suited for military usage. This paper
provides a method for tuning a standard Linux kernel so it can meet the real time requirement of an embedded system.
TL;DR: This work proposes a hash-based prototype including two type instances as checksum and CRC (Cyclic Redundancy Check) and implements seqlock (sequential lock) in user space to compare PWCS with RCU, rwlock (readers-writer lock) and seqlock.
Abstract: PWCS (Probabilistic Write / Copy-Select) is a new kind of lock-free synchronization mechanism with wait-free characteristics proposed by Nicholas Mc Guire at the 13th real-time Linux workshop, which utilizes the inherent randomness of the modern computer systems. It aims at addressing the multi-reader - single-writer problem in Linux. Based on the original label-based PWCS, we propose a hash-based prototype including two type instances as checksum and CRC (Cyclic Redundancy Check). The key difference between the two prototypes is how to determine the consistency of the data objects. We also implement seqlock (sequential lock) in user space to compare PWCS with RCU (Read-Copy-Update), rwlock (readers-writer lock) and seqlock. The method we used to analyze and validate the high performance of PWCS is also new.