<div>Once you said that, I looked through the actual code of the prepare-workspace-git role more carefully and you're right - all actions are made against already cached repos there. However since it mostly uses commands, it would still be the way more efficient to make up some module to replace all commands/shell to run things in multiprocess way.</div><div> </div><div>Regarding example, you can take any random task from osa, ie [1] - it takes a bit more then 6 mins. When load on providers is high (or their volume backend io is poor), time increases</div><div> </div><div>[1] https://zuul.opendev.org/t/openstack/build/52983abbcf8947f8926af0b1c07ef855/log/job-output.txt#176</div><div> </div><div>05.02.2021, 00:58, "Jeremy Stanley" <fungi@yuggoth.org>:</div><blockquote><p>On 2021-02-04 22:29:35 +0200 (+0200), Dmitriy Rabotyagov wrote:</p><blockquote> For OSA huge issue is how zuul clones required-projects. Just this<br /> single action takes for us from 6 to 10 minutes.</blockquote><p>[...]<br /><br />I'd be curious to see some examples of this. Zuul doesn't clone<br />required-projects, but it does push new commits from a cache on the<br />executor to a cache on the node. The executor side caches are<br />updated continually as new builds are scheduled, and the caches on<br />the nodes are refreshed every time the images from which they're<br />booted are assembled (typically daily unless something has<br />temporarily broken our ability to rebuild a particular image). So on<br />average, the executor is pushing only 12 hours worth of new commits<br />for each required project. I don't recall if it performs those push<br />operations in parallel, but I suppose that's something we could look<br />into.</p>--<br />Jeremy Stanley</blockquote><div> </div><div> </div><div>-- <br />Kind Regards,</div><div>Dmitriy Rabotyagov</div><div> </div>