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
