How much memory a 32bit application can access
By default a 32bit application on WIndows can allocate up to 2Gb of memory. If it has allocated 2Gb and needs more it will fail as it's not possible to access more.
Application can be compiled with a flag called LARGEADDRESSAWARE. Depending on the operating system configuration such an application can access up to 3Gb on 32bit Windows. An yes, 3ds Max has been compiled with this flag (otherwise there wouldn't have been much of of a point writing this post)..
As an aside: when you run 32bit 3ds Max on 64bit Windows you can use up to 4Gb. If you need to access more you'll have to use the 64bit version, in which case the limit is how much memory you can plug in the motherboard.
The 3GB and USERVA switches (Windows XP)
There are two operating system switches that changes how memory is used, these can be set in the boot.ini file:
- /3GB : change the memory allocation so that up to 3Gb is available to applications
- /USERVA=xxxx : adjust how much memory an application can actually use (between 2Gb and 3Gb).
See the link 'How to set the 3GB in boot.ini on Windows XP' for info how to set these switches.
SetIncreaseUserVa (Windows Vista and later)
On Windows Vista and Windows 7 there is no boot.ini file. You can use the BCDEDIT command to set the SetIncreaseUserVa switch (same as the USERVA switch in the boot.ini), there is no need to set 3GB switch. For details see the link 'Using BCEDIT to set SetIncreaseUserVa on Windows Vista and later'.
Should you only use it if you have more than 2Gb of memory installed in the machine?
No, even if you have less than 3Gb of physical memory in the machine it may make sense to use these switches: not all memory allocated by 3ds Max is used all the time, so that would be paged out to disk. And if it just needs a little bit more memory than 2Gb, without the /3GB switch it will fail, with it will continue. Performance may not be great if it needs to swap to disk, but that's still better than not being able to do the render. If you see the machine swap a lot to disk you may want to consider adding more memory.
Actually there is only one... and it can be a nasty one if you're not prepared, although it doesn't happen on all machines depending of graphics cards, drivers etc..To be safe you may wish to check with you IT people before trying this out.
The issue can be that by using the /3GB switch there isn't enough memory left for the kernel in which case your machine won't boot or becomes extremely slow. I've had this in the past with Windows XP, the solution is to also use the /USERVA setting to give a little bit of memory back to the kernel. On XP the easiest thing to do is to create additional entries in the boot.ini: one with just /3GB added, then a couple with the USERVA=2800, USERVA=2900 and USERVA=3000. You start by rebooting and trying the one with just the /3GB entry, if that works: great! If not you can reboot and try the different USERVA values until you find one that works for you. If it really doesn't work you still have the original entries in the file.
The important point being that you don't change the original entry ... that will be your life saver if the system won't boot when using the entries you've added.
Unfortunately i don't have much information how you'd create multiple entries in Windows Vista / WIndows 7 using BCDEDIT, the command line options in DCDEDIT indicate that you can use /copy to create a copy for a specified boot entry. Like with the boot.ini you really want to keep a entry that will let you boot into Windows in case the values you've used don't work!
- Microsoft KB article about the /USERVA and /3GB switches
- More info on the /3GB switch
- How to set the 3GB in boot.ini on Windows XP
- Using BCDEDIT to set SetIncreaseUserVa on Windows Vista and later
BCDEDIT command line options