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?
Source code for our implementation of Tableau in Xen can be found on Github: you can get Xen 4.9 with Tableau support, and Tableau's userspace planner (and other tools)
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.
Getting Started
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 /etc/default/grub.d/xen.cfg
GRUB_CMDLINE_XEN="sched=credit"
Finally, update GRUB and reboot the machine into Xen.
$ update-grub
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://brandenburg@github.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 tableau-tools/examples/example.conf
file.
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 table_push
command
$ sudo ./table_push .sched
You can view table switch messages using Xen's dmesg
output:
$ sudo xl dmesg
Got questions? Found an issue?
You can email any questions, comments, or issues to mvanga -at- mpi-sws -dot- org.