Tableau VM Scheduler
High-Throughput & Predictable Scheduling for High-Density VM Workloads
What is it?
Tableau is an unorthodox VM scheduler design that guarantees a minimum processor share and an upper bound on scheduler-induced delay for every VM in the system.
Tableau does this by combining a low-overhead, core-local, table-driven dispatcher within the hypervisor, with a fast on-demand table-generation procedure running in userspace (triggered whenever VMs are created or torn down).
Where can I get it?
Note that while we implemented and evaluated Tableau in Xen for our EuroSys '18 paper, Tableau's design is hypervisor-agnostic and not tied to any particular one.
Below is a quick guide to getting started with Tableau.
Start by cloning our Xen 4.9 repository with Tableau support:
$ git clone https://github.com/mvanga/tableau-xen-4.9
Compile Xen from source for your server. The Xen project wiki has a comprehensive tutorial on compiling it from source.
Add a boot parameter to Xen (
sched=tableau). On newer Linux distributions, you can put the following line in
Finally, update GRUB and reboot the machine into Xen.
You should now be running Tableau! You can make sure by running the following command, which should give the following output:
$ sudo xl info | grep scheduler xen_scheduler : tableau
To setup the userspace tools for Tableau, first clone and setup the SchedCAT Python library, which is a prerequisite:
$ git clone https://email@example.com/brandenburg/schedcat.git $ cd schedcat $ make $ make test $ export PYTHONPATH=$PYTHONPATH:`pwd`/schedcat
To setup the userspace tools for Tableau, clone the
tableau-tools repository as shown below:
$ git clone https://github.com/mvanga/tableau-tools
Create an example configuration file for your machine. A commented example can be found in the
Now you can generate a table for your current configuration:
$ ./table_build examples/example.conf
This generates a table and places it in a
.sched folder in the current working directory. Now you just need to provide this folder as an argument to the
$ sudo ./table_push .sched
You can view table switch messages using Xen's
$ sudo xl dmesg
Got questions? Found an issue?
You can email any questions, comments, or issues to mvanga -at- mpi-sws -dot- org.