On Mon, Aug 31, 2015 at 09:19:20AM -0700, Guenter Roeck wrote:
On 08/31/2015 09:06 AM, Borislav Petkov wrote:
That's a good point - I missed that during previous review. Rui, please... and maybe work with Peter to address the other hotplug related issues.
put the rdmsrl_safe_on_cpu() accesses in a separate function which you
run on a particular CPU, for your next version.
It might also be worthwhile thinking about per-CU attributes, if that
provides any value (Peter's comments suggested that this might be the case).
Yeah, so it would allow measuring the power of a subset of compute
units. Typically only useful if you've partitioned your workload. But
since the hardware trivially supports it, its a waste to not expose it.
(Note that its not per-cpu, its per compute unit. What we do with perf
is export a cpumask)
My biggest problem is that all this is user readable and unthrottled. It
basically allows DoS (perf does not typically allow user access to CPU
wide resources).
Imagine joe user doing:
for ((i=0; i<1000; i++)); do
(while :; do cat /sys/foo/file > /dev/null ; done) &
done
Even when contained to a subset of CPUs, that will cause an IPI storm on
all (/2) CPUs, even if you've tried really hard to keep users away from
some of them (see the above partitioning) because you're running some
important RT workload or whatnot.
As to hotplug, if you unplug any of the even numbered CPUs the whole
thing bails and returns 0, even if the corresponding odd CPU of the
compute unit it still online and perfectly capable of accessing the MSR.