Crowdrender Render Farm Software Update V0.6.7
For those of you who may be new and reading one of our articles for the first time, welcome! This article covers the V0.6.7 patch update to our render farm software for Blender. Our software is a single addon for Blender that helps build a render farm for accelerating rendering in cycles or eevee.
New Update | Fixes high CPU Usage and Dependency Install Loop
Thanks to a few bug reports from you guys, we've managed to pin down and fix a couple of issues.
1. Background process using an entire CPU core at 100%
Our addon starts at least two background processes to help with managing connections, synchronising data and rendering. One of those, which we call simply "a server" was using an entire CPU core at 100% which on some systems was very noticeable, on our system we noticed higher CPU temps and associated with that, more fan noise than usual.
The problem was constant, meaning whether rendering or not, the addon would cause higher CPU usage. Obviously this is bad if you're rendering on the CPU since you want to use all your cores/threads for rendering.
The fix was fairly simple, the server process essentially waits for connections from clients wishing to start a session for rendering. The waiting consisted of checking for messages continually. This is known as a 'busy wait' or 'busy loop'. This was changed slightly by inserting a sleep between checking for messages.
The change resulted in no noticeable change to how the system responds to connection requests, but resulted in a drop from 100% of a thread being used to just 3% at most, and 1% of a thread on the lower bound of usage.
The image above shows the server process in window's task manager so you know what to look for, the server process is identified by its --type argument in the command given to blender, which is set to 'server'.
2. The addon keeps asking for the dependencies to be installed
The keen minded among you will no doubt recall that we've fixed this before. In V0.6.6 we found that if another addon had installed a similar dependency (the Rokoko mocap addon was one of these), then this could cause our addon to fail when checking the versions of our dependencies were correct. Our addon mistakenly checked the dependency that was already loaded by another addon.
As it turns out, there was a bug in our code for checking our dependencies. As we investigated, it also became clear that there was another problem, our addon would use the dependency loaded by the other addon, or, it could load it by accident.
This update has fixes for both issues. This means we properly check for our own dependencies, so long as they are installed into our /cr/persistent-3.XX folder, then the check will succeed, and the install loop bug won't happen anymore, yay! 😊
There is another issue which is harder to solve though. With python, its difficult to load a software package in isolation. All addons share Blender's Python API which means we share access to Blender's data, but we also share a collection of loaded software packages. If our addon loads, for example, the `requests` module, then other addons will get that exact module, python is smart, if `requests` has already been loaded, it won't go and load it a second time, it just provides the already loaded module.
So, we have a check to make sure that the versions we have installed are correct as per the specification we give for our addon package, but this doesn't prevent another addon loading a different version. It's also considered bad practice to 'rug pull' the addon that loaded the conflicting package by removing it, this can cause bad things to happen, so we use what we get when loading our dependencies.
Will this cause a problem? Only if the version loaded is different enough to cause a problem. We usually test with the most recent versions of the dependencies so we can spot any issues.
This situation with addons conflicting with the packages we load isn't going away, and its hard to arrive at a solution that will work every time. The best thing we can do for now is test often with new releases of our dependencies and ensure that our addon stays compatible. Changes that could break compatibility usually occur only when there's a major version update, which is thankfully rare.
How to download our render farm software for Blender
There is a free version available for trying out our software, which can be downloaded at https://discovery.crowd-render.com/download. V0.6.7 can also be downloaded here if you have a paid subscription to support our project.
Comments