David Vengerov wrote:
> Eric Saxe wrote:
>
>> For a default, I was leaning towards "maximize performance, but don't 
>> squander power". That way, without doing anything system 
>> administrators / users will still get the performance levels they 
>> have come to expect..but will also see overall efficiency 
>> improvements, since average system utilization is generally very low. 
>
> So if the system has 8 CPUs and 8 threads running, how do you decide 
> on the number of CPUs to keep idle and clocked down? Maybe 8 threads 
> on a single CPU will still be satisfactory from the application's 
> point of view?
I think we would always want threads to run on (even a clocked down CPU) 
rather than not run at all (waiting on a run queue somewhere). If the 
policy is to maximize performance without squandering power, then with 8 
threads and 8 logical CPUs, I would probably say none of the CPUs should 
be clocked down, since we would be at 100% utilization.
>>> There can be some special cases when performance feedback from 
>>> applications is not needed. For example, we can decide that more 
>>> than one thread per CPU results in a noticeable performance 
>>> degradation, and so the power management policy can then learn what 
>>> clock frequencies to assign to existing CPUs based on observing how 
>>> many of those CPUs have some threads running on them. Do you think 
>>> this is an important case to address? If so, then a separate 
>>> management policy should be developed for this case, which will be 
>>> "turned on" whenever such case is detected.
>>
>> I'm not sure I understand the scenario. The existing CMT scheduling 
>> policy will still be active...trying to load balance work
>> across CPUs that have a shared physical relationship. The power 
>> components of the scheduling policy may be trying to counter
>> this by coalescing work (where possible). Finding the optimal balance 
>> between coalescence and load balancing is the interesting objective. 
>> Is that what you mean? 
>
> What you said is right, and it is the general problem statement. I was 
> suggesting to look at the following special case. Let's say the system 
> has 8 CPUs and the number of running threads (each of them consumes 
> 100% of any one CPU) randomly fluctuates between 0 and 8. So when only 
> 3 threads are running, how many CPUs can we afford to clock down and 
> to what extent should they be clocked down? This may depend on the 
> length of time there were only 3 threads in the system. In general, we 
> can learn a policy that will map the pattern of current and recent CPU 
> utilization into the decision about the number of CPUs to be clocked 
> down by 50%, by 25%, etc.
Right, I understand.

Thanks,
-Eric

Reply via email to