While attending our user summit a couple of weeks back, I had an interesting conversation with one of our customers. He had expressed excitement over discovering some unintended and unwanted CI build serialization. In this case, it happened to be in the unit test phase of his build. They had all of their unit tests lumped into one script and each unit test ran in sequence. In this case, the performance bottleneck was easy to identify. By simply creating three groups of unit tests and running each group in parallel via an ElectricCommander step, the unit test time was significantly reduced.
Identifying areas of build serialization can be a significant challenge. Sometimes the build script and/or harness is so complex that it cannot easily be instrumented for timing measurement. In ElectricCommander we have a little know plug-in that can really help out here. The “Plotter” plugin is available in every installation and can be found in the plugin catalog. The screen shot shows a few builds. The first one demonstrates excessive serialization while the second looks pretty good. From here, a build engineer can quickly find the Commander step that requires analysis and possible refactoring.
The ask.electric-cloud.com forum is a great venue to ask questions about this plugin.
Here’s to finding your build parallelization nirvana.