examples/vm_power: add oob monitoring functions
authorDavid Hunt <david.hunt@intel.com>
Fri, 13 Jul 2018 14:22:56 +0000 (15:22 +0100)
committerThomas Monjalon <thomas@monjalon.net>
Fri, 20 Jul 2018 20:53:17 +0000 (22:53 +0200)
commit4b1a631b8a8a7c9b3e4aaa4ec07ca48d57062f65
tree99ee66d51f86dcafff0f5280f41ce58673bb5e0c
parent99a968fac0cf1229ff6da9e082f3bd119bb1a746
examples/vm_power: add oob monitoring functions

This patch introduces the out-of-band (oob) core monitoring
functions.

The functions are similar to the channel manager functions.
There are function to add and remove cores from the
list of cores being monitored. There is a function to initialise
the monitor setup, run the monitor thread, and exit the monitor.

The monitor thread runs in it's own lcore, and is separate
functionality to the channel monitor which is epoll based.
THis thread is timer based. It loops through all monitored cores,
calculates the branch ratio, scales up or down the core, then
sleeps for an interval (~250 uS).

The method it uses to read the branch counters is a pread on the
/dev/cpu/x/msr file, so the 'msr' kernel module needs to be loaded.
Also, since the msr.h file has been made unavailable in recent
kernels, we have #defines for the relevant MSRs included in the
code.

The makefile has a switch for x86 and non-x86 platforms,
and compiles stub function for non-x86 platforms.

Signed-off-by: David Hunt <david.hunt@intel.com>
Acked-by: Radu Nicolau <radu.nicolau@intel.com>
examples/vm_power_manager/Makefile
examples/vm_power_manager/oob_monitor.h [new file with mode: 0644]
examples/vm_power_manager/oob_monitor_nop.c [new file with mode: 0644]
examples/vm_power_manager/oob_monitor_x86.c [new file with mode: 0644]