The Firesong DLC and Update 36 base game patch are now available to test on the PTS! You can read the latest patch notes here: https://forums.elderscrollsonline.com/en/categories/pts
Maintenance for the week of September 26:
• PC/Mac: No maintenance – September 26

Quick look at ESO performance

krzych04650
krzych04650
Soul Shriven
Quick Look at ESO Performance
Hi,

I just started playing ESO few days ago and once I got to Mistral in Khenarthi's Roost I realized that there are some serious performance issues in this game in dense areas, so I decided to investigate as I always do in games that are not running properly and leave some results as small performance guide here.

All tests are made on following setup:

i5 4690K 4.5 GHz
MSI Gaming 5
2x4GB RAM 2400 MHz
Sapphire R9 Fury Nitro 1100 MHz
Crucial MX200 256 GB SSD
Windows 10 Home 64-bit
LG 34UC98 3440x1440 monitor

Frequencies for CPU and GPU will change in different tests, I will mention it clearly when they do.

Determining The Problem

First and very easy thing to do is to determine what is causing performance issues. For strictly performance issues not related to servers or your connection, they are two main problems that can happen: not enough system resources, when your components, mainly CPU and GPU, are not able to drive the game at satisfying performance on settings you choose, or various optimization issues, like impaired/old engine that is unable to utilize your system resources properly and basically cannot even hold itself.

To check what is going on, we only need to do two things:

First thing to do is to test the game with underclocked GPU to determine if lowering your graphical power will affect performance. If yes then GPU is limiting factor and you need more powerful GPU to get desired performance at given graphics settings. This is more optimistic scenario because at least you have some control over performance and you can improve it by upgrading your setup.

However, if lowering your GPU power by underclocking is not affecting performance, then it means limitation lies in either your CPU or game engine that is unable to utilize your CPU properly which makes it unable to deliver enough information to GPU to for it to be fully utilized.

To determine whether its engine or CPU related issue, assuming that we excluded possibility of GPU limitations before, we need to disable some of CPU cores and test the game with different core count to see how many cores it can actually use.

If the game is using all your cores properly and you can see big decrease in performance from each cores, then it means that your CPU is not powerful enough and it is causing performance issues. From this point you can either overclock your CPU or upgrade it to improve performance.

The least optimistic scenario is when the game is not utilizing your CPU properly, and for example there is no difference between 2 and 4 cores. This means that the limitation is in game engine that is not optimized and designed properly and cannot utilize your CPU properly. This means that you are very limited in terms of max performance you can achieve, regardless of how good your CPU is, because it just won't be utilized, and usually if CPU is not utilized properly, neither is GPU, so you are loosing twice.

GPU Limitation Test

To check if there are any GPU limitations I have clocked and tested my R9 Fury at 4 different performance levels, shown by Fire Strike benchmark graphics scores:

TbtbnKY.jpg

1100MHz is slightly overclocked profile that should give peformance similar to overclocked GTX 980 and GTX 1060 6 GB.

800 MHz profile is achieving performance similar to GTX 970 and R9 390.

650 MHz profile stacks up with R9 380X in terms of performance.

525 MHz, lowest possible on this GPU, is matching GTX 960 and R9 380 performance.


Now once we have very different GPU power levels available, we can try them out in game and see how lowering the power of GPU affects performance.

OL7x6L2.jpg

As you can see, it is obvious that are no GPU limitations on my system. Significant decrease of GPU performance from downclocking the card from 1100 to 800 MHz gave no difference in performance. Only decreasing performance by almost half with downclocking to 650 MHz gave some performance decrease.

In conclusion, there are obviously no GPU limitations and we can move on to CPU/engine tests.

CPU Limitation Test

In this test we are going to disable CPU cores and see how the game scales with one, two, three and full four cores.

WqA245X.jpg

As you can see there are obvious engine limitations here and game is just not utilizing my CPU properly. Single core gives horrible performance, enabling second core gives boost to 53,4 FPS with 44 minimum and enabling third and fourth core gives only slight improvement versus dual core and there is no difference between triple and quad core setting.

In conclusion, the game engine is a limitation here, making the game unable to utilize quad core CPU properly, making use only of two cores and slightly third one.

Fixing The Performance

As you saw above, we encountered CPU limitations caused by unoptimized game engine that cannot be helped by any hardware upgrade if you already own good one, so there are only two things left to do.

First one is to take the most out of the part of hardware that is actually utilized by game. In this case it is done by overclocking the CPU:

j4kIFzp.jpg

As you can see, even if your CPU is not utilized properly there are some frames to gain from overclocking. By default 4690K works at 3,9 GHz in Turbo Mode, so overclocking to 4,5 GHz gave very healthy performance increasement, from 47 frames that original 3900 MHz clock would output to 54 frames of 4500 MHz overclocked setting, gaining almost 15% of performance.


Now it is time to look at some graphics settings in game. I have tested Draw Distance, Water Reflections Quality and Shadow Quality settings.

Note: I wasn't able to catch any differences in Maximum Particle Systems and their Distance while benchmarking, but I remember that increasing Maximum Particle Systems to over 1400 brought me down to as low at 25 FPS after some time of wandering around Mistral, so better keep this setting at default or lower, especially if there doesn't seem to be any difference visible from increasing this setting.

OOJPjPc.jpg

As you can see Draw Distance setting has very significant impact on performance, this is by far the most demanding settings in game. There is nearly 40 FPS difference between the highest and the lowest settings. It is also essential for visual quality, but some adjustments and compromises can be made to gain performance as there is some nice flexibility and 100 settings draws things really far, it is very hard to notice any popping in, so downgrading this setting a bit is recommended as you simply cannot achieve good performance with 100 settings in dense areas with any existing hardware because of engine limitations.

RPFn6oB.jpg

Water reflections are also very demanding, assuming that you are near water, taking almost 15 FPS. What is interesting is that there is no difference in performance with Off vs Low and Medium vs High settings. While this is understandable for Medium and High settings, as I cannot see any difference in reflections quality between those settings, enabling reflections from Off to Low with literally zero performance cost seem quite strange. There is some substantial difference between Low and Medium/High, but considering performance cost, leaving it at Low is a good advice.

Qnrybef.jpg

Shadows performance is affected by number of players on screen, and benchmarking all available settings introduced some inconsistencies as number of players on screen is changing dynamically as ESO seem to be very well populated, so I was able to benchamark only 3 settings properly.

Shadows are mostly GPU bound and it seems to be like that here too, as downgrading this setting from Ultra to Medium didn't give any substantial difference in performance. Only turning them completely off gave some significant results, unfortunately at even more significant visual quality cost.

Conclusion

In conclusion, unfortunately ESO continues the trend of MMO games being released on impaired and outdated engines that cannot utilize even mid-end hardware properly. However in this particular game you are given enough tools to improve your performance at reasonable visual quality cost. There is also no significant stuttering as far as I experienced the game so far, framerate is dropping quite heavily in dense areas but those are "smooth FPS drops", if that makes any sense. This is certainly not one of those games that are running completely horrible regardless everything, hardware or even settings.

In general, optimization is reasonably bad.



  • Agalloch
    Agalloch
    ✭✭✭✭✭
    Wow, awesome post!

    Another proof that ZOS must improve their game engine.

    I have fps drops since 3 weeks ago.( Remember one of the longest maintenance of ESO ?)

    Until then I almost never had any issues ( only in Cyrodil from time to time)

    I'm sure something happened ...in the engine code.

    All other games I play are running fine as always : Guild Wars 2 , Black Desert, Diablo 3 , Blade and Soul, Division.

    The only game I suddenly experience fps drops is ESO ..and only after they finished that maintenance. Also the ping is not so stable as before.

    Maybe we will see the ESO'S game engine revamped in 2017 ?

    Unreal engine 4 engine could fit very well with ESO :







    English is not my native language.
  • KhajitFurTrader
    KhajitFurTrader
    ✭✭✭✭✭
    ✭✭
    @krzych04650, extensive analysis, thank you for that. However, neither your findings, nor your conclusions are hardly new. Allow me to elaborate:

    ESO's engine is CPU bound, that's true. The main reason for this is that as an MMO, the game runs in two parts, one client-side, one server-side, and both need to be kept in sync via a network connection all the time. The latter's latency is, due to its nature, extremely slow when compared to access speeds of local memory systems, like HDD, SSD, RAM, or various CPU caches (multipliers by several orders of magnitude will apply).

    A MMO usually needs at least two threads client-side: a (main) drawing loop, which tells the GPU what to draw, and usually takes the most heavy load (NB: DirectX, up to and including version 11, is single-threaded. Multi-threading was first introduced in DX12). This drawing thread could potentially run as fast as the system can provide graphics data from local memory systems, as well as fast as the GPU can render it. But since we're talking MMOs here, it also depends on crucial information that is provided by the server part, which in terms of CPU cycles is millennia away.

    This information is provided by the second thread, which handles network communication between client and server, and provides the drawing thread with everything related to dynamic world data, i.e. multiplayer information, interaction with (mobile) objects, etc.

    Both threads need to kept in sync somehow, or else any two players near to each other would experience two very different worlds, instead of one consistent one (within reasonable limits, of course, no MMO raises the claim to work in real-time). And since the MM in MMO stands for massively multiplayer, this synchronization needs to be both more capable and more flexible than, say, a multiplayer game capped at 64 players on a single map. There is a lot of trickery going on to create the client-side illusion of consistent, smooth movement. There are also a lot of different coding solutions to this problem, resulting in different behaviors: under load, some games drop in FPS rates (like this one does), while others start displaying rubberbanding and/or slingshotting in one's own movement, or that of others, for example.

    In this light, I cannot concur with your conclusion that the game's optimization is "reasonably bad". I think it's just reasonable. Is there potential for improvement? Of course there is, but then again, there always will be. From a coder's point of view, there will always be room for another optimization. If only deadlines wouldn't exist...

    Don't get me wrong, most certainly bugs should be fixed and problems should be addressed (like the one that decreases frame rates with length of play time, more or less independent from current load). But an MMO engine (or any MMO engine for that matter) not utilizing the most out of the latest top-notch graphics hardware is not one of the most pressing problems in my opinion. Traditionally, MMOs are designed to reach a wide audience, which means supporting a wide range of machines, including older ones. Because they are also designed to be very long-lived games, many of them will likely experience engine updates within their lifetime. ESO has already ditched support for DX9 in favor for DX11, setting the game up for the upcoming implementation of DX12. I would love to see your thorough benchmarks then. :smiley:


    Btw: Please could you test whether the UserSettings.txt entry
    SET HIGH_RESOLUTION_SHADOWS "1"
    
    still has any larger impact on FPS rates when set to 0 (zero)? Back in the day, this was a true and tested method of improving FPS without noticeably diminishing graphics quality.


    Edited by KhajitFurTrader on September 26, 2016 10:27AM
  • sadownik
    sadownik
    ✭✭✭✭✭
    @KhajitFurTrader the performance on consoles tells me that the code in ESO is very far from being properly optimized. The fact that i play only online and mostly MMO games on my pc and i have some ( very minior it seems compared to others) performance problems only in ESO tells me also that the quality of product when it comes to ESO is not right.
  • krzych04650
    krzych04650
    Soul Shriven
    @KhajitFurTrader I understand what you mean and I appreciate your extensive explanation of how MMO games work in general, but I tend to judge games for what they are, especially in terms of performance, no matter what kind of game it is. From customer/gamer point of view you are paying for/playing a certain game that has certain performance that heavily affects your experience with a product and the fact that this is an MMO game doesn't make performance issues less intrusive/deal breaking nor it makes those issues any easier to fix.

    I know that I didn't discover anything new here, I just started to play a game, encountered some issues, so I investigated them and shared this on forum, just because I like benchmarking.

    Also I don't agree that quad core CPU or mid-end GPU that Fury now is (can be had for $300) is the latest top-notch hardware that doesn't have to be utilized, this is a mid-end, common setup. If any developer said something like this I would consider him as unreasonable and not serious about his product and customers.

    I will certainly test the game and compare DX11 vs DX12 once it is out, but DX12/Vulkan implementation goes super slow so far in games in general, so I really don't expect this any time soon. But MMOs games are surely where those new APIs should shine the most.

    SET HIGH_RESOLUTION_SHADOWS "1" setting doesn't make any changes in performance from 1 to 0. I actually noticed 4 FPS decrease from going from 1 to 0, but this time I took 5 runs around Mistral instead of one, so benchmark took much longer which means that it was more likely to be affected by some random factors like number of players on screen and etc.

    Ah and also one other important thing, about this:
    But an MMO engine (or any MMO engine for that matter) not utilizing the most out of the latest top-notch graphics hardware is not one of the most pressing problems in my opinion. Traditionally, MMOs are designed to reach a wide audience, which means supporting a wide range of machines, including older ones.

    You are talking about game being optimized for lower end systems and reaching wider audience, and yet you need overcloked i5 class CPU to have those 2 strong cores that game requires to work somewhat acceptable. I did my tests at 3440x1440, the most popular 1920x1080 would be much less taxing for gpu, probably there is no benefit from having anything more than GTX 950 for 1920x1080 if you hit CPU bottleneck on 3440x1440 with GTX 970 class GPU. So basically by saying that the game is optimized for lower and machines, you are saying to an owner of $100 GPU that he has to buy unlocked i5 class CPU, expensive motherboard and good custom CPU cooler to be able to play the game at comfortable performance levels and make use of this low end GPU. Is that optimization for lower and machines? I don't think so.
    Edited by krzych04650 on September 26, 2016 12:30PM
Sign In or Register to comment.