Hello,
Thank you for your feedback.
Making better use of resources is something we are aware of and want to improve, but chose to err on the side of simplicity for many reasons, but mostly time constraints and the desire to get it right.
I’ll try to clarify the slider’s behavior and why we chose to implement it the way it is:
1. At the moment Swarm doesn’t support automatic resource management. Instead, resources (machines) are assigned on a first-come, first-served basis. The only changes to machine usage come from manual adjustment of the sliders or adding/removing tags in the UI.
The meaning of the percentages on the slider is “Try to use no more than X% from the available resources”. That’s why when you set a goal of 10% it uses no more than 10% of the CPUs/GPUs in the Swarm network, regardless of the availability of more free machines.
Also, if the network only has 20% free CPUs available, and you want 40%, you’ll only get the 20% and won’t receive additional resources until someone frees some machines.
2. Swarm does not try to solve the problem of equal/prioritized distribution of resources to all users in the network. The problem that Swarm currently solves is the discovery of machines for DR in the local network. If, for example, you had to put a list of machine IPs for DR and claim all machines, your colleague will still be unable to use any machines unless enough instances of V-Ray Standalone are killed to free up machines for new jobs. At the moment Swarm is machine-oriented, not job-oriented.
3. Automatic resource management gotchas (or why we didn’t do it in 1.x):
Equal distribution of cores for all users will sooner or later lead to weird edge cases.
For example, you have a total of 2 machines in the Swarm network, you start rendering with both of them because they are free. A colleague comes in and tries to use DR, so the Swarm network stops your DR session on one of the machines and gives it to the colleague; now each of you uses 50% of the resources. When a third colleague tries to join he would not receive any machines, because there is at most one DR job per machine and both machines are busy. The example scales up, for example you have 9+ users and 8 machines.
In those cases we will need some form of a “super-user” who can manually drop clients from the network. This still requires manual intervention and communication between users.
If there is a “High priority” checkbox in the UI the result will probably be that everyone will try to use it and it may end up annoying everyone on the network. The control of that feature will also be manual (“controlled by admins via the swarm web ui”).
In most situations the only solution that Swarm can provide is to have some UI that allows manual resolution over disputes for resources.
This is not exactly “set it and forget it” most of the time.
We are thinking about how to improve the current workflow, that is, to allow optimal usage of resources while keeping the UI simple and consistent. That will take some planning to get it right, so bear with us
Your feedback is really appreciated, so thanks again!
We’d be happy to take these ideas further, so any suggestions are welcome.
Best regards,
Plamen Stoev,
Software developer