Make blender work harder, raise the CPU usage

Hi guys

I’m rendering a short animation of a simple tutorial scene.

I noticed that during this my CPU usage is only about 40%. I did some googling and found loads of ways to speed up Blenders rendering and did manage to drop about 50% off my render time. My CPU usage is still only about 40% though.

If there a way to get it higher. Even if it doubled I’d get much faster renders and my system would still be responsive.

Depending on what CPU you have, could try increasing thread count in render properties -> performance section.
Could also try multiple Blender instances, each rendering set range of frames. If you use command line and not show the interface, it cuts the overhead of showing the result and you can give start and end frames as parameters. How and if you can do that depends on what operating system you use.
Giving Blender process higher priority might be worth a try.

If you make higher thread count, make sure it is a mutiple of 128. Don’t know why but it seems to work.

do you mean tile size? 128 seems a lot of threads for a 6 core CPU

Render properties - performance section - auto detect cpu cores or fixed 4 or 6 core for example .

Render tile size addon automatic depending what size off image you render and if you use cpu or gpu render

I’ve tried a few settings for the number of cores and so on and the variation is different but I’d say its still averaging 40-50%

The auto tile size has taken 10-15% off the render times

I cant gpu render sadly I only have a GTS 250

Are all cores averaging 40 - 50%? Or is only one core active and the others at 0?

Yes all cores are running the same amount
It does seem to max out for short periods since the auto tile size

Thats strange. Cycles and Blender Render are normaly quite efficient, I allways get around 100% load.
Does this also happen with other blend files? You say its an animation, what is the rendertime for each frame? Does it also happen with a single frame render? What render engine are you using?
Anyway, it would help if you could post your pc specs and blender version, you dont give a lot of information.

Maybe you might also want to check your cpu temps. Modern cpus have diferent overheating protections that might reduce performace.

I’m mostly doing tutorials so far so this is the most complex scene I’ve rendered. I’d expect mostly as it has mirrors. I think after watching it the building the raytree was the long bit. Its currently taking just under 40s per frame or still image at 1920x1080

I’m using the default setting/engine for most things because I am still in the tutorials stage. Using version 2.69

Temps during prime 95 stress test

Temps at idle

That should cover the specs too

Heres my CPU usage rendering one of the tutorial animations

I’m not worried if a render is taking a long time, just that its not close to maxing my cpu.

So with raytree building plus rendering you have a render time of 40 seconds by full hd resolution? Thats quite fast but there are a cuple of reasons why it wouldn’t use your full cpu power.
First it’s the raytree building: its sadly only done in one thread, so during that time it will only use 1/6 of your cpu. It might be possible that it is swiching between the avaible cores so you never have a visible spike on one core in the task manager.

Second it’s during render: when swiching from one tile to the other there is a small pause with no load in blender internal but also other kinds of overhead.
Lets say your raytree building used 15 seconds, that leavs 25 seconds for the full hd render. Also lets say you have a tilesize of 32x32, that would be around 2040 tiles (I think) that would mean that only a small amount of time is done on rendering one tile.
Because the rendertime per tile and the overhead per tile is probably very close you may only get around 50% efficency or even less.

So what can you do?
The raytree stuff won’t be multithreaded in near future, so the only way to reduce it is to reduce raytraced objects or don’t use raytrace at all.
The best way to increase your cpu usage is to increase drasticaly you tilesize, because of the short rendertime it might be good to split your render in 6 tiles (640x540) or even twelve tiles (480x360) depending on your scene. Check your individual frame rendertimes with diverent tilesize to find the fastes tilesize for your pc and scene. But my rule of thumb for tilesizes in BI is that for each tile I want the cpu to spend a fixed amount of time (lets say around 30 - 60 seconds), so I adapt the tilesize till I get that time per tile ratio.

I hope that helps

I notice the same thing on OSX 8 core I use. I often run multiple copies, split across the render range, to render animations. This will certainly “up” your CPU usage. Launch Blender copy #1 and render, say 1-100 frames, then launch Blender copy #2 and render 101-200 frames at the same time. This will speed up render time if you truly have extra CPU overhead hanging around. You are still in a shared memory situation, however.

You are right. Running two or more render instances (especially for blender internal) you get a better usage on your cpu, as long you don’t overfill your ram.
I saw a documetation on youtube about Pixar and there renderfarm and they told that they optimise their renderjobs to use at max the halve of the avaible ram in a rendernode because they run two render instances per node.
At first I didn’t know why they would run two instances insted of one because just filling you ram won’t speed up you render and sadly they didn’t explan it in this video but later it became clear to me that even Pixars Renderman won’t always use all cpu cores or use them efficient to avoid bug or because new added, experimental code is not optimised for multithreading. So better save than sorry.

Sadly my scene has large use of mirrors. I don’t know how to do these with raytracing turned off if its even possible.

I’ve read multi-threaded raytracing wont be coming soon. It would be nice if it could build the next raytree while its rendering a scene. It appears currently that about 2/3rds of the time is spent building the raytree. Oh well it appears its not somethign simple I can solve with setting changes.

Bring on multi-threaded raytracing.

Well, raytracing itself is multithreaded but the octree building is not. The octree is a a kind of database of your scene that allows fast lookups for ray intersections. It divides the mesh of the scene into lots of cell that contain a part of the meshdata, if a ray hits a cell it gets only that chunk of data to work with exept the whole scene (I hope I got that right).
It would be cool to port Cycles multithreaded bvh tree code to blender internal and replace Octree but it probably is a lot more dificult than it sounds.

Edit: I totaly forgot, BI does have BVH but none of the options are multithreaded.

hello there,
I search for weeks tips how to increase performance blender. I started by increasing memory and I ended up buying a second GTX 770 is my current configuration: AMD FX 8150, 16GB DDR3, 2 ​​x GTX770 2GB, windows 8.1.
I am very disappointed because I do not. Nvidia talks about a SIGNIFICANT performance increase in installing cards in SLI that’s what I did but :frowning:
what I did but not miracles! When I did the tutorials on the net and when I see how others work well in the 2 x GTX560 for example I do not understand where I erred.
Is there a manual, a tutorial to learn how to set up the blender with hardware and be able to draw the best performance?
Or there are any of you nice to explain how?

thanks Vlad

FAIK SLI is not a good idea for GPU rendering. SLI was invented for gaming performance, but will result in a massive performance hit when rendering in Blender (up to -50% on rendering performance). Try to disable SLI and see if that helps.