(former name: memutil)
We are focusing on creating a new Linux CpuFreq Governor that makes dynamic voltage scaling decisions based on hardware performance counters. This will allow it to react to the memory access patterns of the current CPU processes, so that it can reduce clock frequency, should the CPU be stalled by memory.
See this page
Our CpuFreq Governor is called memutil. It is based on hardware performance counters to determine memory-boundness of the currently active processes. Therefore it is probably best if you familiarize yourself with the different hardware performance counters we measured. The different Hardware-Performance counter measurements can be found here for Intel and here for AMD
The resulting heuristics in use in memutil, as well as discarded ones are explained on the [Heuristics page](Memutil Heuristics).
Memutil general architecture is then explained here.
We have evaluated memutil on a set of workloads. The results of this evaluation can be found on the Evaluation page
Our CpuFreq governor is implemented as a kernel module in the kernel-module
subfolder of this repository.
To see how to compile & use the kernel module, see the README in that folder.
memutil will need adjustment for your specific machine for best performance. The Porting page includes instructions of how to tweak the Heuristic parameters.
See this page.
- Our project kickoff presentation that describes our initial research and project motivation.