Nsight Systems displays stutter analysis visualization aids for profiled graphics applications that use either OpenGL, D3D11, D3D12 or Vulkan, as detailed below in the following sections.
The Frame Duration section displays frame durations on both the CPU and the GPU.
The stutter row highlights frames that are significantly longer than the other frames in their immediate vicinity.
The stutter row uses an algorithm that compares the duration of each frame to the median duration of the surrounding 19 frames. Duration difference under 4 milliseconds is never considered a stutter, to avoid cluttering the display with frames whose absolute stutter is small and not noticeable to the user.
For example, if the stutter threshold is set at 20%:
OSC detection The ’19 frame window median’ algorithm by itself may not work well with some cases of ‘oscillation’ (consecutive fast and slow frames), resulting in some false positives. The median duration is not meaningful in cases of oscillation and can be misleading.
To address the issue and identify if oscillating frames, the following method is applied:
Right-clicking the Frame Duration row caption lets you choose the target frame rate (30, 60, 90 or custom frames per second).
By clicking the Customize FPS Display option, a customization dialog pops up. In the dialog, you can now define the frame duration threshold to customize the view of the potentially problematic frames. In addition, you can define the threshold for the stutter analysis frames.
Frame duration bars are color coded:
The CPU Frame Duration row displays the CPU frame duration measured between the ends of consecutive frame boundary calls:
eglSwapBuffers/glXSwapBuffers/SwapBuffers
calls.IDXGISwapChainX::Present
calls.vkQueuePresentKHR
calls.The GPU Frame Duration row displays the time measured between
The Frame Health row displays actions that took significantly a longer time during the current frame, compared to the median time of the same actions executed during the surrounding 19-frames. This is a great tool for detecting the reason for frame time stuttering. Such actions may be: shader compilation, present, memory mapping and more. Nsight Systems measures the accumulated time of such actions in each frame. For example: calculating the accumulated time of shader compilations in each frame and comparing it to the accumulated time of shader compilations in the surrounding 19 frames.
Example of a Vulkan frame health row:
Example of a D3D12 frame health row:
The Memory Utilization row displays the amount of used local GPU memory and the commit limit for each GPU.
The VSYNC rows display when the monitor's vertical synchronizations occur.
Copyright (c) 2012-2019, NVIDIA Corporation. All rights reserved.