Hi Roland,

Roland Mainz wrote:
Hi!

----

Is there any special handling of process groups to make sure that
processes (and their LWPs) are kept together ?

Think about an (imaginary (and simplified)) machine with 4 strands per
core, 4 cores per socket, 4 sockets per board and 4 boards per cabinet
and 4 cabinets where each layer increases the latency factor by 2 - in
this case it would be desireable to keep processes which often
communicate with each other closely together.

Which "factors" does Solaris consider - "process group", "uid", "process
hieracy", plain statistics or something else ?
On some platforms, Solaris will try to home threads from the same process to the same lgroup (which physically would be a board, node, etc). The platform specific code plays a role in tuning the extent to which this happens (how aggressive that coalescing policy is). It boils down to optimizing for latency
vs. aggregate bandwidth.

You can use liblgrp(3LIB) , or plgrp(1) to implement these types of policies yourself on any NUMA platform.

Beyond NUMA, we've been thinking about similar policy at the CMT level as well (shared caches, etc). Optimizing at this level can be a challenge as things tend to be quite a bit more dynamic. ;P

-Eric
_______________________________________________
perf-discuss mailing list
perf-discuss@opensolaris.org

Reply via email to