/coloris

Please see the paper "COLORIS: A Dynamic Cache Partitioning System Using Page Coloring" for details.

Primary LanguageCGNU General Public License v3.0GPL-3.0

What's included:

-kernel patch for 3.8.8 i386

-kernel config file

-kernel module

-user-level debugging tool (checker)

Module usage: insmod alloc.ko apps=... qos_pair=...

For apps parameter, pass in applications' process names (as in task_struct->comm); For qos_pair, pass in application-specific QoS requirement (high thred, low thred), which should be integers no larger than 100; set to any negative integer if want to use system-wide thresholds;

e.g. insmod alloc.ko apps=gobmk,hmmer qos_pair=70,30,-1,-1

Load the module first, then start applications.

Notes:

-Make sure the memory pool size is appropriate, given hardware RAM size, since memory pool only takes memory pages from HighMem.

-Generally speaking, process data and code pages can both be allocated within its own context. In the module, page coloring based on file name is just a hack to deal with SPEC runspec script. runspec will not start programs directly, but copying them to a new directory and starting them. This copying means code pages for a process are allocated in page cache before the process gets created.

-giveBack is used to ensure that when a process expands color assignment and is not using all local page colors, it will get new local page colors first. It is currently not generic, but for 8 processes running on 4 cores so each page color can be shared by 2 processes. For an over- committed system with flexible number of processes, the implementation needs small fix.

-Please refer to "COLORIS: A Dynamic Cache Partitioning System Using Page Coloring" (PACT'14) for further information.