Jump to content

Afanasy - Free Render Farm Manager

Recommended Posts

hi - i've just had a look at this - and it looks v interesting!

has anyone had a go yet? keen to hear of any experiances....

I wonder what size site it's been tested on? In the 10's of procs? 100's? 1000's?

Share this post

Link to post
Share on other sites

Last enhancements:

Watch (Afanasy GUI) now uses "Qt Model/View Programming" - it allows to navigate jobs with 1 000 000 tasks.


Multiply Tasks Renders:

Render can run several tasks at the same time.

Capacity mechanism:

Each host and task has a capacity value. Task checks available (free) capacity on render, and if its enough, task launches and take its capacity value from render.

Useful for farm with hosts and tasks with different "power". More powerful machine can run more tasks. More lite tasks can be executed on one machine. More balanced farm resources usage. No time wasting (time wasting may happen when client run some lite task which take no resources, but can't do to something else simultaneity, as server interpret it as "busy" or "free" only, server does not understand how much client busy).

Tasks can variate capacity 'on-the-fly':

Capacity variation can be described through its minimum and maximum coefficients (or may be simple constant). If task with 1000 capacity units runs on render with 4000 free capacity, task can take capacity coefficient 4. This coefficient can be caught in task command line (so Mantra can be launched 'mantra -j 4 ...', or 3000 capacity can be used by one 'houdini' task, for example to generate something, which use only one CPU, and 'mantra -j 3'). Hosts capacity values described in 'Farm Setup' ('xml' file).

Edited by TimurH

Share this post

Link to post
Share on other sites

Version 1.3.0 released.

Last enhancements:

Paths Map:

Every client can describe how to translate its local paths to 'server' paths. On jobs send client translates all paths to 'server'. When client receives a task from server it translates all paths from 'sever' to local. With this feature you can setup Multi-OS render farm (and workstations). An artist can submit a job from any OS and it can be rendered on all OS-es.

Python output filters(parsers) can produce error or warning. During output parsing you can find any error message and stop render process if it still running.

Disk IO operations meter.

Custom render host resource(s) meter(s). You can describe any resource meter by Python class and GUI will plot the graph.


Lost of bug-fixes for MS Windows. Windows clients and GUI has the same functionality as Linux version. But there is still no server for MS Windows.

Windows Must Die:

You can list windows names in a file. Render will search windows with specified names and close them (sends WM_CLOSE signal). It is useful for MS Windows farm, as this OS when something going wrong often raise messages with "apologizes" which can hang render process until somebody press OK button.

File "windowsmustdie.txt" example:


mantra.exe - Application Error

Movies creation tools.

GUI and command line tools which can create 'Dailies' with special annotations and slate frame.


You can render movies locally or send jobs to Afanasy farm. This tools are written on Python, GUI - PyQt, frame annotation - ImageMagick, encoding - ffmpeg.

SoftImage XSI and 3D Studio MAX submission scripts.

Every client sends version to server. GUI show clients versions. This version is a simple 'versions.txt' file contents and may be customized as you want.

Edited by TimurH

Share this post

Link to post
Share on other sites

Version 1.5.0 released.

Last enhancements:

System Job:

Post commands are executed by a special system job. You can control it like any other common job. Post commands usually used to cleanup temporary files on job deletion.

Errors Forgive Time:

You can configure a time form last host error to exclude it from error (avoid) hosts list.

Job Lifetime:

Jobs can be deleted automatically after some time.

Farm Services Limits:

You can describe maximum tasks type (services) starts on all clients. Needed for software licenses.

Python 3:

You can construct and send jobs using Python 3.

Maximum Tasks Per Host:

Job will never start tasks on the same host above this limit. No matter how much free capacity it has.

Sub-task Dependence:

Tasks can depend on other task(s) sub-progress. They can run when some task finished partially. It is useful to render simulations. As simulations usually performed by a single task on a whole frame range. Now render tasks can run when the entire simulation is not finished.

Houdini Submission Improvements:

You can connect several Afanasy and other ROP nodes together to describe a complex job with dependences between ROPs.



This job consists of a simulation with sub-task dependence. Two caches waiting the simulation, but cat run independently from each other. Mantra tile render which produces three blocks which wait all the cache. Two blocks for preview which can run independently but wait tile render tasks. One to convert EXR files to JPEGs and one to generate a preview movie form EXRs.

Share this post

Link to post
Share on other sites

CGRU v2 released




Major cghanges in latest releases (since last post here):


- CGRU GitHub project started.


- New site cgru.info.


- Afanasy server is available for MS Windows OS.


- JSON protocol. Python API is the same, but now it just helps to constuct a valid JSON objects and send them.


- Web GUI. Online demo.


- All config files are based on JSON too.


- Automatic Wake-On-Lan.


- Automatic Nimby and Free depends on CPU percentage for some time.


- CGRU Keeper to launch all it's tools and any other configured.


- Python 3 full support (Keeper and Movie Maker PyQt/PiSide, Afanasy job API, task services and parsers on a render client side).


- Task output parser can return activity parameter, GUIs will show and update it along with percentage (for example when stereo it can show left or right eye is processing).


- Thumbnails: Task output parser can recognize output image(s) and generate thumbnails with a configurable command.


- Afanasy server events: server can generate an event (for example job error or done) and push a task in a system job with all uts data. Client has a special service for it, it can constuct a command from event data (it also includes job user data) and launch this command. For you can configure afanasy to send emails on job done and error.


- RULES: Another big project started in CGRU and it will be the main its part. Online demo. It is a project tracker.

It has Web GUI and keeps all data on a file server along with projects/scenes/shots/sequences on a file server. There is no need to fill in RULES with projects/shots. Just describe where projects are located and what the structure is, rules how to find scenes, shots, sources and output. So it name comes out hee: describe rules - navigate file server. The project in its beginig but it already can:
- Navigate projects, scenes, shots on a file server. This navigation will update thumbnails, show latest result sequences and movies. Helps artists to find sources.
- Define tasks, assign artists on shots, place comments. Mark shots with any defined tags (key, cleanup, full3d, done, error, any custom). Specify percentage, see average percentage for scene/project.
- Artists receive new (comments) for shots they assigned and any other they interested in and have subscribed.
- Create Dailies: RULES always knows what is a project, scene, shot, company, logged user and so on. Simple clicking on sequence in output it sends a job in Afanasy. It annotate images (project, shot, version, artist, comments and so on), encode a movie and place it in a special location. Later RULES shows dailies (all or latest) for each shot.
- Convert movies to other format, codec, fps, explode to images sequence. All can be done parallel via Afanasy.

- View, annotate, comment jpeg sequences via a special web player.
- Process any custom operations (commands) with files and folders via Afanasy. ( in Cinelab it also copying huge files and generates md5 )


Globally RULES is a web engine. It navgates a special folders stucture, collencts hierarchical data. Data can contain rules where to find a special assets, how to show them, change them. There is a 4 ready assets designed specially for CG VFX: Project, Scenes, Scene, Shot. But you can do anything on RULES web engine.

Here is a forum asset for RULES, you can ask questions there. In our company we have a special RULES servers that just copy huge files, generate md5.

Edited by TimurH

Share this post

Link to post
Share on other sites

Hi Timur,


I'm just starting to play with this, looks fantastic! Sadly, I am hitting some (hopefully) minor errors. Is there a forum for questions on setting up Afanasy?


I am happy to contribute my findings as well, there are a couple of minor mistakes in the docs (PYTHONPATH pointing to /opt/cgru/afanasy/plugins/houdini which should actually be /opt/cgru/plugins/houdini, for example) but I am now stuck on an AVOIDING HOSTS issue that I can't figure out.




Peter B

Share this post

Link to post
Share on other sites

Hi. Sorry for a long delay, but i am visiting this forum just periodically.

You can ask questions on github, where the source code is hosted:



Now i making forum based on RULES web engine (it is a project tracker in CGRU (for now young and simple project tracker))


( soon i'll try to attract all users there, and github will be only for working source code )



http://cgru.info/ site (where is Contacts page) was not work for about a week for about a half of the world, now it moved to another server and should work for everybody

Edited by TimurH

Share this post

Link to post
Share on other sites


If task finished with an error on some host, the host is pushed to an error hosts list. Each job block and task has such list. If the same host produced more that 3 errors, job (task) will avoid it. This value (3) can be customized for each job. By default it is "-1" for jobs, in this case this value taken from user. The default value for user is 3 and can be customized too.

You can reset this list from GUI - "Reset Error Hosts" item in a job RMB menu.

Edited by TimurH

Share this post

Link to post
Share on other sites

Thanks Timur, I have also used the RULES to ask questions :) I have gotten it all working with Houdini now, it's very cool.




Peter B

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now