Re: Creating a build system which can scale. #yocto
Quentin Schulz
Hi Philip,
*Very* quick and vague answer as it's not something I'm doing right now. I can only give hints to where to look next. On Mon, Feb 17, 2020 at 04:27:17AM -0800, philip.lewis@domino-uk.com wrote: Hi,Have you had a look at INHERIT += "rm_work"? Should get rid of most of the space in the work directory (we use this one, tremendous benefit in terms of storage space). c.f. https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#ref-classes-rm-work Incidently, also highlights broken recipes (e.g. one getting files from other sysroots/elsewhere in the FS). *A possible solution:Provided you're not using a webserver with a cache (or a cache that is refreshed every now and then), cronjob with find -atime -delete and you're good. * How/When do we update the cache?I remember (wrongly?) reading that sharing sstate-cache over NFS isn't a very good idea (latency outweights the benefits in terms of storage/shared sstate cache). This shared cache solution removes the per agent cost on storage, and also – a varying extent – the per branch costs (assuming that you’re not working on something at the top/start beginning of the dependency tree) from the equation above.I'm not too sure to have understood the exact use case but maybe you would want to have a look at: - shared DL_DIR (this one can be served by an NFS, there isn't too much access to it during a build). - SSTATE_MIRRORS (c.f. https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-SSTATE_MIRRORS), is basically a webserver serving the sstate-cache from an already-built image/system. This is RO, would make sense if your Jenkins is building a system and then your devs are basing their work on top of it. They would get the sstate-cache from your Jenkins and AFAIK, does not duplicate the sstate-cache locally = more free storage space. - investigate docker containers for guaranteed identical build environment, Pyrex has been often suggested on IRC. https://github.com/garmin/pyrex/ That's all I could think of about your issue, I unfortunately do not have more knowledge to share on that topic. Good luck, let us know what you decided to do :) Quentin
|
|