Hi Eric,
When processor group is initialized, the group position in the
cmt_pgs->grp_set[index] is determined. For example, on my platform,
the current implementation is:
PGHW_POW_IDLE @ level = 0
PGHW_POW_ACTIVE @ level = 1
PGHW_CHIP @ level = 2
PGHW_CACHE @ level = 3
PGHW_IPIPE @ level = 4
And I found when cmt_balance searches the target processor group,
it returns CPU in the first available group.
Does this mean sometimes dispatcher uses CMT_COALESCE in power idle
group, and sometimes dispatcher uses CMT_BALANCE in the processor group
among which CPUs share the last level cache?
That is, sometimes the kernel considers the power saving and sometimes the
kernel concerns the performance? This sounds unreasonable.
Please correct me if I'm wrong, :-)
Another issue:
My machine has 4 cores with HT, that is, 8 logical cores. And certainly
there are 4 PGHW_IPIPE groups:
$ kstat -m pg | grep Pipeline
hardware Integer Pipeline
hardware Integer Pipeline
hardware Integer Pipeline
hardware Integer Pipeline
But when I checked the cmt_siblings of pipeline group, I found the size is 1.
Is it probably a bug?
Thanks,
-Aubrey