http://defect.opensolaris.org/bz/show_bug.cgi?id=4616
Summary: cmt_balance schedules thread on any idle CPU instead of
shallow idle CPUs
Classification: Development
Product: power-mgmt
Version: unspecified
Platform: Other
OS/Version: Solaris
Status: NEW
Severity: minor
Priority: P4
Component: c-state
AssignedTo: bill.holler at sun.com
ReportedBy: bill.holler at sun.com
CC: tesla-dev at opensolaris.org
Estimated Hours: 0.0
When cmt_balance() is selecting a CPU within a PG to schedule a thread on
it chooses the first idle CPU it finds. Instead cmt_balance() could
choose the CPU in the shallowest idle state (C_state).
Currently the last clause of cmt_balance() chooses any idle CPU:
for (cpu = 0; cpu < GROUP_SIZE(&tpg->cmt_cpus_actv); cpu++) {
newcp = GROUP_ACCESS(&tpg->cmt_cpus_actv, cpu);
if (newcp->cpu_part == tp->t_cpupart &&
newcp->cpu_dispatch_pri == -1) {
cp = newcp;
break;
}
}
Instead this loop could select the CPU in shallowest idle state.
Some CPUs may not be able to enter deeper idle states. This algorithm will
favor scheduling onto CPUs that cannot enter deep idle states instead of
CPUs that can. This can save power. A CPU in a shallow idle state is also
more likely to have a lower scheduling wakeup latency penalty than a
deeper idle CPU. This policy can also help preserve and state setup by
CPUs when they enter deeper idle states (cache flushing etc).
--
Configure bugmail: http://defect.opensolaris.org/bz/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.