Work in Progress: Middleware-Transparent Callback Enforcement in Commoditized Component-Oriented Real-time Systems
Takahiro Ishikawa-Aso, Atsushi Yano, Takuya Azumi, Shinpei Kato

TL;DR
This paper introduces a middleware-transparent callback enforcement model for real-time systems, enabling direct application of OS scheduling parameters to callbacks, reducing overhead and simplifying scheduling in ROS 2 systems.
Contribution
It proposes a novel ROS 2 Executor, CallbackIsolatedExecutor, that bypasses nested middleware scheduling, improving efficiency and predictability in real-time ROS 2 applications.
Findings
CallbackIsolatedExecutor has lower costs than MultiThreadedExecutor.
Cost ratio of CallbackIsolatedExecutor to SingleThreadedExecutor remains fixed.
Enables future real-time scheduling research to ignore middleware layer complexity.
Abstract
Real-time scheduling in commoditized component-oriented real-time systems, such as ROS 2 systems on Linux, has been studied under nested scheduling: OS thread scheduling and middleware layer scheduling (e.g., ROS 2 Executor). However, by establishing a persistent one-to-one correspondence between callbacks and OS threads, we can ignore the middleware layer and directly apply OS scheduling parameters (e.g., scheduling policy, priority, and affinity) to individual callbacks. We propose a middleware model that enables this idea and implements CallbackIsolatedExecutor as a novel ROS 2 Executor. We demonstrate that the costs (user-kernel switches, context switches, and memory usage) of CallbackIsolatedExecutor remain lower than those of the MultiThreadedExecutor, regardless of the number of callbacks. Additionally, the cost of CallbackIsolatedExecutor relative to SingleThreadedExecutor stays…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
