cwichura wrote:I read through the BTS ticket you referenced about sending only stuff that is needed. I guess I'd like to throw out that there needs to be some cache management if this is added. Otherwise, one will eventually end up with a slave having a ton of cached objects that are no-longer ever going to be referenced. So maybe have a config value for max cache size (with a default of 1GB) and then deleted oldest unreferenced item when space is needed. But now you also need to keep track of the cache items; I dunno if there is an open source library for cache management that would help with this.
Yeah I've thought about it. The trickiest bit is in fact to ensure the cleanup is executed at all (ie in case ctrl+c etc).
cwichura wrote:But I have to admit, it seems like a lot of work for not much gain. Sending files to the slaves on startup has never been an issue for me. The only time where this is slow is if I'm using an EC2 instance for additional slave power. But in that case, it's a spot instance that has just been spun up and so will have no cached objects anyway...
If you have a large scene and you're doing test renders on a local farm, then sending all the files every time can add up.
However there's another advantage here which is indirect: much lower memory usage. Currently lux stores a full copy of all the scene data, including external files, in memory. This is so that it can send it to a slave if the slave is connected after the render has started. This essentially doubles the memory usage.
The implementation of request 614 will not store external files in memory, but instead stream them from disk per request.
May contain traces of nuts.