Unofficial solution to 3ds max Processor Affinity issue

12 votes
Version: 
2.0b
Date Updated: 
01/08/2006

As you may or may not be aware - there appears to be an issue in 3ds max r7 and r8 where certain components leave the 3ds max state set incorrectly - causing one or more of the CPUs in a machine to fluctuate in performance.
This tends to affect elements of 3ds max and third party plugins which are highly threaded; Brazil r/s is such a third party plugin - and the effect of the issue is essentially that a dual (or higher) processor machine - such as AMD Opterons - may render at a lower performance than it's capable of.

Although this issue has been confirmed by many users of the 3ds max software - a fix for this issue has not yet been provided.

A laborious fix exists by manually setting the processor affinity mask for the 3ds max process to include all processors - after 3ds max has finished starting up. As mentioned - this is rather laborious - and also infeasible on network renders.

With the help of a few Splutterfish forum members and betatesters - we (I) have written a solution to this problem by automatically re-setting the affinity after 3ds max starts up. Essentially this is done through a MaxScript which is run after 3ds max starts up - which in turn calls a third party MaxScript extension (by Larry Minton of Avguard Animations) which contains the affinity mask modification capabilities required.

Additional Info: 

To install this unofficial solution - go through the following steps. Please note that you should only install this unofficial solution if you are affected by the processor affinity issue. Installing it otherwise should have no negative effects - but you will also gain nothing from it.

1. Download fixAffinity

2. Download the Avguard Maxscript Extensions

3. Extract 'fixAffinity.ms' from the fixAffinity download to your script Startup folder. E.g.:
c:3dsmax8ScriptsStartupfixAffinity.ms

4. Extract 'avg_dlx70.dlx' from the Avguard Maxscript Extensions download to your Plugins folder. E.g.:
c:3dsmax8Pluginsavg_dlx70.dlx

Repeat steps 3 and 4 for any network machines - or use the plugin and script deployment method of your choice.

------

To use this unofficial solution - after installation - simply run 3ds max. After 3ds max is done starting up - you should see the following line in the MaxScript Listener:
fixAffinity [INF]: Setting process affinity to use all processors

If you see another message - please follow any instructions given there.

Manual access to processor affinity is available through the fixAffinity MacroScript available in the 'System' category. It allows you to easily get and set the processor affinity. Normally you will not be needing - or wanting - to use this - it is included mostly as a curiosity and for developer testing purposes. The dialog should be self-explanatory.

Version Requirement: 
8; 7
Video URL: