On my new Windows 10 desktop I wanted an on-screen display (OSD) of system performance overlay while gaming - similar those benchmarking videos one finds on YouTube. While I don’t overclock my CPU or GPU, I still do want to know the utilization and temperatures, as these give me a hint as to whether the system is thermal throttled or bottlenecked.

Starting from knowing absolutely nothing, I started by trying a few tools recommended by various netizens. I started with MSI Afterburner, but removed it as I don’t like the skins, is missing temperature data for my chipset, and I’d prefer to avoid accidentally blowing up my system!

In reality, all I needed was two pieces of free software:

The usual disclaimers - don’t download from untrusted sources, and don’t blindly follow what random stranges say (I am, of course, referring to myself).

There are three ways to setup the OSD, and all of them need RTSS running.

  1. HWiNFO sending data to RTSS, or
  2. RTSS using internal HAL data source (HWiNFO not required), or
  3. RTSS getting data from HWiFO.

1. HWiNFO sending data to RTSS

In HWiNFO, Config > OSD (RTSS):

  1. Check Enable hotkey for toggling, and set the hotkey, I use Control-Shift-F12
  2. Select the stats you want sent to RTSS, and for each,
    1. Check Show value in OSD and any other options (I like Units in superscript)
    2. Define the Position (Line and Column)
  3. Under the Custom tab, you can rename the elements, e.g. rename GPU Core Load to GPU - just to be consistent with the statistic called CPU which is actually the CPU temperature from the motherboard.

HWiNFO64 Sensor Settings for OSD using RTSS

Note that in RTSS, the OverlayEditor.dll should be disabled (more on that later).

Entry Line Column Show Label Colour
Total CPU Usage 1 1 Pink
Physical Memory Used 1 2 Pink
CPU (Temperature) 1 3 Y Pink
GPU Core Load 2 1 Green
GPU Memory Allocated 2 2 Green
GPU (Temperature) 2 3 Y Green

When running a DirectX game, hit the hotkey, and you’ll get something like this: HWiNFO64 sending data to RTSS

The downside is you don’t have the flexibility to design your own layout. So, on to Option 2...

2. RTSS using internal HAL data source

In RTSS - the left side of the main window will show a list of Application profile properties with Global selected by default. Under that, click Setup:

RivaTuner Statistics Server (RTSS) main window

Navigate to the Plugins tab, check the OverlayEditor.dll (the check mark will darken when chceked), then select it and hit Setup. In the editor:

  1. Click Data Sources > Edit.

  2. Hit Add, and under Internal HAL, check the statistic you want, e.g.

    • CPU usage
    • RAM usage percent
    • GPU1 usage
    • GPU1 memory controller
  3. A couple of data elements are always available, i.e.

    • Framerate (FPS)
    • Frametime (ms)
  4. Back in the editor, click Layers > Add or hit Insert - this adds a new static label with the words Text layer:

    RTSS Overlay Editor Insert Text Layer

  5. Now we change it to display a statistic instead.

    1. Double click the newly inserted Text layer and in the Layer properties dialog:
    2. Hit the + button under Hypertext.
    3. In the dropdown (that says Framerate by default), select what statistic to show, e.g. CPU usage and check Add current value macro, then hit OK RTSS Overlay Editor Layer Properties for value macros
    4. Adjust any other properties like the text colour, background colour and alignment. RTSS Overlay Editor Layer Properties
  6. Keep adding labels for all the data elements.

  7. Save and close the Overlay editor.

Back in the main RTSS window, make sure Show On-Screen Display option is On. You can also adjust the position of the OSD relative to the corners. In the first screen shot above, I anchor the OSD to the top right corner which is shown in blue, offset by (45, 12) pixels.

I designed the display to look like this:

RTSS Overlay Editor using Internal HAL data source

Being able to design your own layout is rather sexy, but the internal HAL data source has limitations - it can retrieve the GPU temperature but not my motherboard and CPU temperatures.

So, on to option 3...

3. RTSS getting data from HWiFO

This is my preference, and not so complicated once you understand how it works. First off, make sure all the HWiNFO Show value in OSD that we checked previously is unchecked. We don’t want HWiNFO to send data to RTSS.

Instead we want RTSS to get data from HWiNFO, so head back to RTSS, click Setup > Plugins, check the OverlayEditor.dll and hit Setup. In the editor:

  1. Click Data Sources > Edit.
  2. Hit Add, and under HWiNFO64, check the statistic you want. You can use HWiNFO exclusively or mix data sources, e.g. here I use both HWiNFO and the Internal HAL: RTSS using both internal HAL and external HWiNFO64 data sources
  3. Back in the editor, hit Insert to add one layer per statistic to display. Layout everything the way you want it to be displayed, including graphs! To do this:
    1. Double click the newly inserted Text layer and in the Layer properties dialog.
    2. Hit the + button under Hypertext.
    3. In the dropdown (that says Framerate by default), select what statistic to show: RTSS Overlay Editor Layer Properties for value macros
    4. Previously we displayed text by checking Add current value macro, but to display the statistic as a charts, check Add embedded graph instead.
    5. Select use custom template then hit ... to edit the graph properties, e.g. choose a graph style (bar chart, filled area chart or line chart) and set other properties: RTSS Overlay Editor Embedded Graph Settings

By overlaying charts for CPU usage, RAM usage percent and GPU1 usage one on top of the next, I landed up with this:

RTSS getting data from HWiNFO64

You can use the menu options to set the z-order (i.e. “bring-to-front” or “send-to-back”) so that in my case, CPU is the top-most, followed by GPU, followed by RAM. The bottom most chart has a semi-transparent purple-ish background color set as well.

Conclusion

To summarize the options:

  • If all you need is simple statistics without temperatures, Option 1. RTSS using internal HAL data source is the most resource efficient, but a bit of work to layout.
  • Option 2. HWiNFO sending data to RTSS is very simple, absolutely no fuss (with fewer options), though it may be less pretty.
  • But, me, I prefer Option 3. RTSS getting data from HWiFO because it gives me a more complete set of statistics, and if you take the time to design the layout, you’ll get graphs to boot!

However, Option 3 does consume the most memory. I did a non-scientific test of RAM usage by RTSS (RTSS, RTSS Encoder Server and RTSS Hooks Loader) and HWiNFO64. Strictly, since the statistics displayed were different, the results are not directly comparable, but for illustration:

Option RTSS processes HWiNFO64 process
1. Internal HAL 7.8 + 1.1 + 2.8 MB
2. HWiNFO sending to RTSS 4.4 + 1.1 + 2.8 MB 25.3 MB
3. RTSS getting from HWiNFO 7.8 + 1.1 + 2.8 MB 25.3 MB

Have fun!

The RTSS overlay does not work with some games! More often than not, this applies to on-line games with some form of anti-cheat - if so, best not to use RTSS, lest it triggers a ban. Don’t loose heart, try it with another game.

Updated 2 Dec: edits for clarity, since a reader informed me he couldn’t find the Plugins in RTSS.

Added 13 Dec:

The next post RTSS layout for Cyberpunk 2077 briefly describes my RivaTuner Statistics Server setup to display the framerates.