Roy Spliet - Motivating preemptive GPU scheduling for real-time systems
With recent developments on applying image-classifying neural networks in self-driving cars, a tangible use-case has emerged for (GP)GPUs in the field of real-time systems. In this field emphasis is placed on predictable program execution and scheduling such that real-world deadlines can provably be met. In particular, in the real-time systems communities it has been established that the scheduling policy has a large impact on the worst-case response time of individual tasks and thus the schedulability of systems. However, until recently NVIDIA GPU design prohibited the use of preemptive scheduling of tasks on GPUs and even today software has little control over the scheduling policies applied in GPUs. Without understanding and without control over these scheduling mechanisms, one cannot reason about the worst-case execution on GPUs.
In this talk I will explain the importance of exposing control over the GPU's task scheduler in the context of the latency-sensitive real-time domain. I will motivate this argument by means of a simple experiment using the nouveau OSS graphics driver that provides insight on the context switching overhead of various off-the-shelf NVIDIA Kepler GPUs. With the results of this experiment, I will show that a detailed understanding of the various tasks running in parallel on a GPU is vital to determine accurate worst-case execution times for individual tasks. Furthermore, I will motivate that even under a very conservative worst case preemption time estimate, full-preemptive scheduling policies could still benefit real-time task workloads.