>
> Can the critical path itself change based on concurrent load if each of 
> the paths making up the graph has different serialised characteristics? I'm 
> postulating that the path having minimum service time at N=1 but higher 
> contention may never appear to be the critical path at lower concurrency 
> but it will manifest at higher concurrency. 
>

I think it is too difficult to answer that generically in any sort of 
meaningful way.

The costs often are often impacted in subtle ways by mechanical sympathy, 
which can become the dominant factor. For example, two threads using a 
database that may be contending on the same table of data can have an 
obvious contention point. Then mix in if they use prepared statements or 
not. If not using prepared statements on a DB like Oracle then you can end 
up contending on the shared pool for statement parsing, execution planning, 
or cursor caching. Similar can be said for threads using shared data 
structures that happen to either be sibling hyperthreads, same socket, or 
communicating across QPI links. It can be blurred if these costs are 
contention or coherence penalty, or a combination of both.

I like to break things down into the major computing resources - CPU, 
memory, network, storage. Measure the utilisation of each major resource 
under increasing load to get a scaling model. When one becomes limiting it 
gives the place to focus. Without a clear resource as the bottleneck then 
you have a dependency issue and for that you do a critical path analysis to 
find the contended component, which may not be exhibiting high utilisation, 
but it could be being used in a way it was not really designed for, e.g. a 
spinning disk being exercised with a arbitrary access pattern.

-- 
You received this message because you are subscribed to the Google Groups 
"mechanical-sympathy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to