> > 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.
