Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Majestic

Stutters, framedrops, "lag". How to provide detailed information with your "bottleneck" question, as well as a few solutions.

Recommended Posts

Posted · Original PosterOP

Intro

 

As I see this question a lot, and the general way of solving the problem is time consuming, a lot of members flat out ignore these types of questions. Much to the, no doubt, dismay of the victims of said micro stutter.

I'm going to make this thread for myself to put in my signature, but feel free to paste it whenever is having these particular issues. Also feel free to ignore this in "newly posted" if it doesn't apply to you. 

 

Terminology.

 

Lets set something straight first, and that is the terminology used. A lot of people misconstrue "lag", "stutter" and "microstutter". Lag, or latency, is a terminology usually reserved (in IT) for network related issues. Which i'm not going to delve into in this topic. I will only refer to "input latency", so if this is what you mean with "lag", as in the perceived delay of input to output, refer to it as such. I will refer to "stutter" as engine halts or noticeable frametime spikes in afterburner (more on that later), and microstutter as mostly undetectable frametime/framepacing inconsistency usually only picked up by FCAT. Something like a hardcoded double-buffer v-sync that outputs 16,67ms - 33,33ms - 16,67ms - 33,33ms frametimes like the new Deus Ex. You will see a stable 60fps, but the visual appears jittery.

 

How do GPU's output frames.

 

This is important to understand when you're experiencing stutter or microstutter. Most of the times it's vsync related. Without delving into much detail on the specific details of v-sync, here is the gist of it. Going from the perspective of a static refresh rate panel at 60hz. If you want a really in-depth explanation, I suggest reading this excellent article from Anandtech:

 

https://www.anandtech.com/show/2794

 

The short version is that the GPU exports drawn frames onto the framebuffer (a portion of the VRAM) that is currently designated to output to the screen. The monitor 'scans' images at 60hz, meaning every 16.67 milliseconds, it scans a new frame from the GPU buffer. This all works well assuming the GPU can output a new frame within 16.67ms. When the GPU however cannot maintain 60fps and starts outputting some frames later than this window, in traditional V-sync operation the framebuffer will not swap and the previous frame that was drawn will remain in the front buffer. What this means is that the monitor will scan the same image again, and as a result you will be displayed the same image twice (or even three times assuming how long the GPU takes to render the new frame). This visually appears as a microstutter or stutter to the player, because it's image is frozen for 33.33ms or even 50ms. 

 

vsync_on.png.e4afdf6ffcd233f30f6d1e3521290adb.png

 

As you can see, frame 1 and 3 are drawn within the window, but frame 2 is drawn outside the windows. The monitor will scan the image twice creating a stutter. As v-sync is mostly turned on by default, most players who experience stuttering are most likely just experiencing double scans. The way to solve this is two fold. Either turn off v-sync or invest into adaptive refreshrate monitors. Turning off v-sync will get rid of the stuttering but it will leave you with so-called tears across the screen. Due to the GPU no longer synchronizing the output with the scantimes of the monitor, it will swap the front and back buffer whenever the frame is completed, regardless of whether the monitor was currently scanning an image. Resulting in the displayed image on the screen consisting or 2 or more frames. 

 

vsync_off.png.45c746292408a1d1d3e42b460db47ec5.png

 

Note that by disabling v-sync the screen will not appear more fluent, as the scantimes and framedraws are unsynchronized. It should, however, remove the double scans and result in less severe stuttering. Some other solutions exist, but those are constantly in flux/development, and if you've established it's a synchronization issue the topic can be dealt with swiftly and specifically (as the solution depends on the application, adaptive/fast sync, etc). If this didn't solve the issue, something else is wrong and the members are going to require information to determine the problem.

 

How to fix this?

 

You can disable v-sync by using the ingame options, and you can also force the v-sync on/off by going to your Graphics Manuf. control panel under the 3D Graphics settings. Try using the graphics card provided options instead. What usually works well is adaptive v-sync for Nvidia (or Enhanced Sync for AMD), or when the game is really high framerate, something like "Fast Sync". Make sure the game is set to "fullscreen" though, they won't work at windowed or borderless modes.

 

Online games disclaimer. Also make sure when determining where the problem lies, that you also test out offline games. In online games your dodgy internet could be causing (actual) lag that can be misinterpreted as stutters. 

 

Collecting the information.

First start by collecting your system information if you have not done so already. You can do this by pressing Start and typing in DXDIAG.exe. It will collect your system information which you can store like this:

 

Spoiler

image.png.8e32901450f513a71f48e56f4d8eb3a7.png

 

Now open the .txt file, press CTRL-A and CTRL-C, and paste it in the thread.

 

When pasting this information into the thread, make sure you put [ spoiler] [ /spoiler] around it (without the spaces), or when having it selected press the "spoiler" button (eye icon) on the draft. As it will quickly flood the page.

 

As system halts or game engine halts can be caused by a plethora of reasons, a selection of data is required to determine which. For this example i'm going to be using MSI Afterburner, downloadable here:


http://download.msi.com/uti_exe//vga/MSIAfterburnerSetup.zip

 

Install both Afterburner and the Rivatuner Statistics Server from the executable and launch MSI Afterburner. It should launch like this:

 

Spoiler

image.png.a86fe192a1208753fb215fad6ea31db8.png

 

Press the highlighted cog and lets set a few options. I think the new skin is very convoluted so I'm going to be first making it intelligible by going to "user interface" and selecting this option.

 

Spoiler

image.png.1c4e0f8fed4cfbc5db98cdb48fcf42d1.png

To go back to the settings on the new skin, the cog has been replaced by a button "settings" in the bottom-right. 

 

Go to the monitoring tab and set "hardware polling period" to 100ms. And in active graphs click on the little checkmark in front of:

  • GPU Usage
  • Core Clock
  • Power
  • Memory Clock
  • Memory Usage
  • Framerate
  • Frametime
  • CPU Temperature (not CPU1, CPU2 etc)
  • CPU1 t/m CPUn Usage (meaning all numbers of threads you have, don't select CPU Usage without a number)
  • CPU clock speed
  • RAM Usage
  • Pagefile Usage

De-select anything besides those listed. And press "OK" to leave the settings.

 

For AMD Graphics card users:

In the "Genaral" Tab, in the bottom select the feature "Enable Unified GPU Usage Monitoring"!!

 

image.png.72d5379082ad0fa52c46c8c1f3724e02.png

 

Now you can monitor these real-time in the game by also pressing "show in OSD", but i'm making this topic for the layperson, and i'm going to make this topic so that I can check on the data myself instead of relying on a third party to relay the information to me.

 

Storing the information and posting it.

 

Now that you have the proper nodes graphing at sufficient pollingrate, now you need to collect the data on the game you're having issues with. Make sure that you have already established V-sync isn't the issue and that any form of v-sync is disabled. Either via the game, control panel (or both). 

 

You can log the data by rightclicking on the graph of MSI Afterburner like so:

image.png.00d51b03702ed9bf433373ea26d6f866.png

 

Then before you start the game, hit "clear history" and then click "log history to file". It is now logging to a file. Start the game, start playing for a few minutes and make sure the issue occurs a few times preferably and close or alt-tab out of the game. Rightclick the graph again and deselect "log history to file" by clicking on it again.

 

Now go to your MSI Afterburner root folder (by default: C:\Program Files (x86)\MSI Afterburner) where you installed it and it should contain a file called "HardwareMonitoring.hml". Just like with the DXDIAG put this file into the attachments of your post. Now people can view your issue in detail by opening up this file, which should dramatically speed up the process of finding the issues. If you open it yourself it should look something like this (make sure to press the datapit at the top). 

 

Spoiler

image.thumb.png.0e72bc6e38fa0d700f6c00ec99c48acb.png

Thanks for reading. Additional information could be added in time.

 

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×