Make Maya 2009 use a multi core cpu

A small shocker using Maya on a Quad-Core Intel processor was that CPU usage by default was about 50%. Yes that’s right FIFTY PERCENT. It looked similar to this:

Maya using only 50% CPU usage.

Maya using only 50% CPU usage.

This was a little disappointing – Maya 2009 basically caused another dual-core machine to grind to a halt, and was only using about half the potential of the Quad-Core.

This was my first time actually using/seeing Maya (I was helping out someone else who needed some rendering distributed), so I searched around. It took forever, but I finally came across the fix.

If you’re using the default Maya Software renderer, there’s an option in the Render Settings menu, but I wont go into that here. The individual I was helping needed MENTAL RAY to be used (instead of Maya Software Renderer), and there wasn’t an equivilent option in that menu.

If you’re using Mental Ray, this is where you make the change:

First, Change the selection in the drop down box located at the top left to RENDERING.

First, Change the selection in the drop down box located at the top left to RENDERING.

Next, find the menu in the top menu bar called "Render". Click it, and then click the little option box beside "Batch Render" (look where the arrow is pointing)

Next, find the menu in the top menu bar called “Render”. Click it, and then click the little option box beside “Batch Render” (look where the arrow is pointing)

With that done, you should see a new option screen that looks like this:

Unselect the "Auto Render Threads" box and enter your own number of threads. For a Quad-Core I needed to use 8 to max out the processors.

Unselect the “Auto Render Threads” box and enter your own number of threads. For a Quad-Core I needed to use 8 to max out the processors.

This is the trick!

By default, Maya chooses the threads on it’s own. It actually appears to select 4 on a quad-core by default, but it doesn’t max out the cpu usage on each. Changing that number to 8 queues up threads, which pegs the processor to full usage, and speeds up the rendering considerably.

Of course, with all 4 cores maxed, everything else on the computer will be VERY SLOW – even typing out an email, I was able to type an entire sentance out before it appeared on the screen. You will not even want to try doing other stuff while it renders in the background – trust me. On the plus side, more renders happen. The stuff being rendered in my case was doing about 3 renders per minute for the section it was in (a simple section), and it jumped to between 5-6 per minute – not *quite* double, but still quite the increase.

Just for completeness, this is what Task Manager looked like in the end:

Finally, with 8 threads selected, the CPU usage is pegged at 100%

Finally, with 8 threads selected, the CPU usage is pegged at 100%

 

A few little things to note:

  1. Memory usage stayed pretty low in my case (2GB RAM out of an 8GB 64-bit system). I did manually set the memory, but it made very little difference in usage, if any.
  2. This change talks about THREADS vs CORES. There is a difference, although for our purposes it doesn’t really matter. THREADS are basically like a process, and the operating system sends out threads to cores based on what core is the least busy at the time. We set up 8 threads in the above, so assuming they distribute evenly, each core should be getting fed 2 threads consistantly. We can’t specify CORES with Mental Ray (as far as I can tell), but it doesn’t matter – there wouldn’t be an advantage anyway, since enough threads will fill all the cores up regardless. The only real benefit to actually being able to specify cores would be that if you wanted to you could choose 3 cores, filling them up and leaving the 4th core alone (the system would probably remain snappy with 1 core untouched by Maya, although you’d be rendering at around 3/4 of the potential).

And finally, a little speculation as to WHY 4 threads (what appears to be the default) doesn’t max out all the CPU cores… My best guess here is that it’s one of two things…

  • Each thread opens, does something, then closes, and the processor isn’t used much between the time a thread closes and a new one opens.
  • Each thread ends up waiting on other things (memory reads/writes) which leave it idle.

Either way (whether it’s one of those things, or something else entirely), setting the threads to 2X the processor cores makes full use of the CPU, which is really all we cared about anyway.