We are testing our project on a new rig and we are getting worse performance than on the old one.
We were trying with completely new projects with some standard assets like SpeedTree trees and some geometry placed and the situation is same as with our project.
New rig is getting much less fps on every scene, both in editor (playmode) and in standalone builds. It even gets very low fps in the editor view when there is some geometry placed in the scene. Generally it’s not possible to run any scene that should run smooth on few year old desktops (like our older rig).
As far as I’ve seen the profiler is showing much more ms both for CPU actions and GPU actions.
I have no idea where to look now, what to check and where is the reason of this problem.
New rig is not showing anything similar in other apps and games. We’ve even checked few benchmarks and it gets much better results than the old one (as it should) and similar results as the rigs with same CPU and GPU (AMD FX-8350 + Radeon R9 280X).
In Unity (both editor, playmode and standalone) we are seeing differences like 60fps on the old rig and 10-20 fps on the new one. Same scene, same camera/view while the new one should be much more faster as it’s much more powerful.
Any help would be much appreciated. Any ideas where should we start looking and what should we check now?
What we’ve checked so far:
Unity 5.0.1 Pro (it was same on 5.0.0p3 before)
Windows 7 with SP1
AMD GPU drivers - up to date
DirectX - up to date
Old rig:
Intel i7-920 (Passmark score: 4,994)
ATI Radeon 5870 (Passmark score: 2,605)
6GB RAM
New rig:
AMD FX-8350 (Passmark score: 8,982)
ATI Radeon R9 280X (Passmark score: 5,182)
8GB RAM
Update: We’ve noticed some weird results while testing draw calls performance.
Same scene, one camera, one building with some props, one directional light.
Static batching enabled, dynamic batching enabled, all objects set to static:
Batches: 28 | Saved by batching: 967
Old rig: 1400fps
New rig: 524fps
Static batching enabled, dynamic batching disabled, all objects set as non static:
Batches: 995 | Saved by batching: 0
Old rig: 1090fps
New rig: 586fps
Static batching enabled, dynamic batching enabled, all objects set as non static:
Batches:492 | Saved by batching: 503
Old rig: 870fps
New rig: 632fps
General performance of this test is worse on the new rig.
New rig is getting worse performance when almost whole scene is batched (28 batches, 967 saved by batching) than in the second test where it shows 995 batches and nothing is saved by batching (524 vs 586). Shouldn’t it get better performance on scene that is batched? Old rig is getting much more fps on the batched one (1400 vs 1000)
Old rig is getting best worse performance on scene with dynamic batching and objects set to non static while the new rig is getting best performance there.
I have no idea what is going on and what we should check. These results look weird probably. What do you think?
From general tests it looks like the new rig has some problems with draw calls, because it gets very low performance even if there is not much geometry to render but draw call counter shows numbers like few hundreds or more.
Maybe there is something going on with the batching on the new rig? Anyway even if that’s true, old rig is getting better performance on scene that has 995 batches and 0 of them saved by batching (second test) (1090fps on old, 586fps on new).
I couldn’t tell you… it looks bizarre. Are you sure everything is configured correctly on the new rig? What kind of motherboard is it? You don’t have your GFX card stuck in a 4x PCI-e slot or have your slot configured for PCIe do you?
Yes. New rig is configured fine. It gets appropriate (same as similar rigs with same GPU and CPU, much better than the old one) results in all games, apps and benchmarks that we’ve already tested.
The only scene that actually got better results on the new rig has just few high poly meshes (around 15mln tris) and low number of draw calls. Almost all other scenes are getting better or much better results on the old rig.
Looks like it’s getting appropriate results only in scenes, that have very small number of draw calls.
New rig is getting very poor performance in scenes that have for example 1000-3000 draw calls from trees and about few mln tris in total (terrain+trees).
It gets 15-20fps while the old one is getting 80fps. Same settings, same resolution, same scene. We are always testing editor play-mode and standalone build too.
Profiler shows very high numbers on this kind of scenes. It can show about 40-50ms for GPU Camera.Render while it shows 8-10ms on the old rig.
This scene should run smoothly on the new rig and should be getting at least 1,5-2x more FPS than on the old rig.
We are checking CPU and GPU profiler but there is nothing that stands out. It just looks like every process in GPU profiler is getting more ms on the new rig.
More results from other benchmarks. Old rig is getting about 40% of new rig’s performance in most of the apps, games and benchmarks. Unity is the only exception from that rule at this moment.
UNIGINE Vallye Benchmark, Ultra, 1920x1080:
New rig: 2800
Old rig: 1100
A bunch of laptops uses the onboard GPU instead of the GPU chip when it thinks it can get away with it, to save power. I know that on Nvidia laptops, you have to manually override the settings for the Unity Editor. Might be the same thing for AMD cards.
Even if it’s not a laptop, check your card’s settings for the editor.
This is a good point… and actually it’s not just laptops. However the Asus M5A97 is a desktop board (standard ATX) and doesn’t have integrated video so that wouldn’t be the case here. I am looking at that board though and it has all the fun EPU and TPU features as well as the AI Suite. I do wonder if for some reason it’s using some power saving mode features when running Unity.
I have the ASUS X99 Deluxe board and the amount of auto-performance features in the AI Suite are mind boggling, right down to the fan speed control and auto voltage and base clock adjustments (for both CPU and RAM). It’s possible that something is getting throttled.
I would double check the manual as well… this is probably not the case, but for instance the x99 Deluxe has some wild configurations… jumpers that change the speed of the PCI-e slots depending on your card configuration and also change which PCI-e slot lanes are shared with other devices (such as the M.2 4x which I don’t think the M5A97 has, but also the USB 3).