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:
- RivaTuner Statistics Server (RTSS) 7.3.0 Beta 6, which although is installed with MSI Afterburner, is actually a separate program.
- HWiNFO64 6.34-4300 which has support for my B550 / Ryzen 5000 combination.
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.
- HWiNFO sending data to RTSS, or
- RTSS using internal HAL data source (HWiNFO not required), or
- RTSS getting data from HWiFO.
1. HWiNFO sending data to RTSS
In HWiNFO, Config > OSD (RTSS):
- Check Enable hotkey for toggling, and set the hotkey, I use Control-Shift-F12
- Select the stats you want sent to RTSS, and for each,
- Check Show value in OSD and any other options (I like Units in superscript)
- Define the Position (Line and Column)
- Under the Custom tab, you can rename the elements, e.g. rename
GPU Core Load
toGPU
- just to be consistent with the statistic calledCPU
which is actually the CPU temperature from the motherboard.
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:
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:
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:
-
Click Data Sources > Edit.
-
Hit Add, and under
Internal HAL
, check the statistic you want, e.g.- CPU usage
- RAM usage percent
- GPU1 usage
- GPU1 memory controller
-
A couple of data elements are always available, i.e.
- Framerate (FPS)
- Frametime (ms)
-
Back in the editor, click Layers > Add or hit Insert - this adds a new static label with the words
Text layer
: -
Now we change it to display a statistic instead.
- Double click the newly inserted
Text layer
and in the Layer properties dialog: - Hit the + button under Hypertext.
- 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 - Adjust any other properties like the text colour, background colour and alignment.
- Double click the newly inserted
-
Keep adding labels for all the data elements.
-
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:
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:
- Click Data Sources > Edit.
- 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: - 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:
- Double click the newly inserted
Text layer
and in the Layer properties dialog. - Hit the + button under Hypertext.
- In the dropdown (that says
Framerate
by default), select what statistic to show: - Previously we displayed text by checking Add current value macro, but to display the statistic as a charts, check Add embedded graph instead.
- 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:
- Double click the newly inserted
By overlaying charts for CPU usage
, RAM usage percent
and GPU1 usage
one on top of the next, I landed up with this:
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.