On 06/08/15 10:48, Akim Demaille wrote:
It works very well.  However, especially when running the test suite,
concurrently, we sometimes compile the same bits multiple times.
Since some components are really really heavy to compile (two minutes
for the biggest one, consuming more than a gig of RAM), it's really
bad to have the machines do it multiple times concurrently.

It seems to me that ccache is in perfect position to avoid this,
isn't it?  It could detect existing builds and wait for them to
complete, rather than duplicating them.

I don't believe that ccache is the right tool to solve this.

1. ccache ought to run with as little overhead as possible, and this kind of inter-process awareness sounds expensive.

2. distcc is probably better placed.

You should probably check out distcc anyway. It can be chained behind ccache (the two tools communicate via environment variables and pipes), and has this "job handling" feature already. You'd just need to add some logic to recognise matching jobs, according to your definition.

distcc can be used to distribute jobs across a number of machines, but it can also be used to queue jobs on the local machine, if you configure it like that.

For your use-case it might make more sense to place your modified distcc in front of ccache (but beware exec loops!) so that the delayed compile is served from cache more straight-forwardly.

Andrew

_______________________________________________
ccache mailing list
ccache@lists.samba.org
https://lists.samba.org/mailman/listinfo/ccache

Reply via email to