Is there a way to enforce that a certain Makefile can be run only on one agent at a time?
Basically due to other reasons, the same Makefile is getting executed from different parallel branches and causing conflicts, which in some cases have quite serious consequences for build performance. I am not able to change the way how we get there.
I think if I was able to say, when going through this Makefile allow only one agent to it at the time, would allow for this to be resolved peacefully, but not impact parallelism of the rest of the build.
something like:
#pragma oneagent
or
#pragma criticalsection
Answer by eric melski · Mar 18, 2017 at 04:57 AM
Answer by michlv · Mar 18, 2017 at 11:50 AM
This question arised from the fact that learning build was taking 5 hours against about 20 min in good conditions.
The main drag is that if a conlict is detected the rerun of that job will be done in strictly serial order meaning that the compile time in my case just exploded.
I have since resolved the most of the conflict occurences (with help of EC) by putting make order rules on prerequisites which were causing conflicts, when run in parallel.
But it may be one area which EC could have a look, if the strict serialization of conflict rerun is really needed.
I know the suggesion is to maintain good history file, but that is overhead. It would be better if I did not need to. If the potential cost of conflict would be smaller i.e. the rerun could happen in parallel.
As developer I really do not want to manage any history. I just want to run emake :-) and enjoy quick builds what ever happens.
There could come a point, where it may be better to have consistently slower build (i.e switch to concurence) rather than not to know at which point the build just explodes, because the conflict happened at wrong place.
Just something to think about, how to make emake easier to use.
Answer by michlv · Mar 21, 2017 at 02:56 PM
Can emake run a cluster build under a chroot environment? 2 Answers
Long serial chain - how to make it start building earlier in the build? 1 Answer
Is there a way to give different groups priority access to resources? 2 Answers
Bullseye and Electric Make 0 Answers
Can I use my build machine as an ElectricAccelerator agent host? 1 Answer
Electric Cloud powers Continuous Delivery, helping organizations developing deliver better software faster by automating and accelerating build, test, and deployment processes at scale. Industry leaders like Qualcomm, SpaceX, Cisco, GE, Gap, and E*TRADE use Electric Cloud solutions to boost DevOps productivity and Agile throughput.