TimeGraph: A Linux GPU Command Scheduler

Written by Michael Larabel in Display Drivers on 2 September 2011 at 01:00 PM EDT. Page 1 of 2. 9 Comments.

In preparing for XDC2011 Chicago, the X.Org developers' summit that begins in just ten days that I have organized, the schedule is being worked out at the moment. One of the items that is set to be talked about at XDC2011 during the Nouveau driver discussion is TimeGraph. This is an open-source GPU command scheduler that sounds fairly interesting.

Shinpei Kato, one of the developers behind TimeGraph, is expected to talk about working towards DRM-compliant GPU scheduling at the device driver level. In particular, it's a sub-topic of the Nouveau driver talk. TimeGraph is developed by Shinpei at the University of California Santa Cruz along with Karthik Lakshmanan and Ragunathan Rajkumar, both of Carnegie Mellon University. Formally, TimeGraph is a project of the Real-Time and Multimedia Systems Laboratory (RTML) at Carnegie Mellon.

The TimeGraph project site describes this software project as "TimeGraph is a GPU command scheduler, running as part of GPU device driver, to protect GPU applications from performance interference. The main contributions of TimeGraph are (i) priority-driven scheduling of GPU commands issued from user-space runtime, which provides predictable response times for GPU applications, and (ii) GPU resource reservation, i.e., accounting and enforcement of GPU resource usage, which isolates performance among GPU applications. Our prototype implementation of TimeGraph is available for Linux 2.6 and 3.0 with NVIDIA's Fermi and Tesla GPUs."

TimeGraph itself is a Linux kernel module, but it's dependent upon Linux kernel patches that provide an extension for real-time computing on GPUs. TimeGraph has been tested on recent Linux 2.6/3.0 kernels. TimeGraph doesn't require any changes to the user-space. There are multiple policies available for the scheduling process and GPU resources can also be reserved using this mechanism. Policies include high throughput (priority support), posterior enforcement (reservation support), and apriori enforcement (reservation support). GPU execution time prediction is also being worked out.


Related Articles