In message <1271161766.4807.1280.camel@twins> you wrote:
Changing the CPU power based on what tasks are running on them seems a
bit wrong to me. Shouldn't we keep those concepts separate?
There are certainly, for most workloads, per core gains for SMT4 over
SMT2 on P7. My kernels certainly compile faster and that's the only
workload anyone who matters cares about.... ;-)
I tried initialled to make smt_gain programmable and at 2048 per core
(512 per thread), the packing became unstable, as you intimated.
Separating capacity from what RT tasks are running seems like a good
idea to me.
This would fix the RT issue, but it's not clear to me how you are
suggesting fixing the rounding down to 0 SMT4 issue. Are you suggesting
we bump smt_gain to say 2048 + 15%? Or are you suggesting we separate
the RT tasks out from capacity and keep the max(1, capacity) that I've
added? Or something else?
Would another possibility be changing capacity a scaled value (like
cpu_power is now) rather than a small integer as it is now. For
example, a scaled capacity of 1024 would be equivalent to a capacity of
1 now. This might enable us to handle partial capacities better? We'd
probably have to scale a bunch of nr_running too.
Mikey
--