In the recent Linux Gaming video from L1T, Wendell made a request to see if the Level1 community could lead a project in getting some diagnostic and benchmarking tools for Linux.
Pretty light specifications:
Measuring and benchmarking performance and frame times for games and APIs.
Additionally, these will need to be easy to use for gamers and non-engineer types. It will also need to be modern, to handle 60+ fps and high resolutions.
So, this is a tall task, which I think is why he asked for the community to frontier forward. It looks like ocat is C++*, and I’m willing to bet the others are as well. Definitely feel free to pitch some ideas.
Golang would be another option, as they have a plethora of tools in the standard library.
Anyone up for the challenge? Got any boilerplate or ideas to begin with?
for basic suites, it’s be good to point people to open benchmarking and Phoronix Test Suite as a starting point too.
For basic monitoring there’s also nvidia-smi, for OC there’s setting coolbits=28 and power state settings, and there’s also the very detailed intel-gpu-tools for igpus, and gmonitor has some low level generic monitoring as well, moreso than the smi anyway, and works with bbswitch.
psensors and freon are decent for generic sensor logging,
you can also see hidden processes by using fuser via sudo fuser -v /dev/nvidia*
it also seems that the newer versions of PTS have at least some frametime reporting capability:
There’s already a ton of existing data from Phoronix, as well as the OpenBenchmarking.
It would be really awesome if we built on that, rather than making Yet Another Half Baked tool.
Wendell’s concerns were dead on though; this needs to be something that can be used broadly, especially by YouTubers and tech reviewers. At the very least, that’ll require tightening up the user experience.
I’m not sure of the condition of Phoromatic these days, but a web UI once existed. It was aimed less at end users, and more at administrators managing test clusters, but the foundation already exists.
I can confirm it’s still there. I installed it just now, running the client and server on the same host caused my system to reboot.
Not sure what exactly it was trying to do at the time, but I’m inclined to leave them both stopped for the moment.
So one problem we ran into with pts doing all this work with Linus’ team is that it does some super bizzare things sometimes. For example, some of the published results on phoronix show pts runs of bioshock on linux that outperform windows… “with the same settings” but when I was able to replicate those results I found the graphical settings between windows and linux different.
A lot of that benchmarking requires the programs themselves to report data, too, which is not quite the goal we have here.
We have seen on windows that reported data from the game doesn’t match reality with actual frame times/frame rates. That’s why ocat/fcat is so important because it allows analysis from raw captured video during both canned and “normal” gameplay.
tldr: can confirm bioshock infinite’s built-in benchmark routine is not foolproof.
I’ve experienced the same variances in my own testing, and it’s been incredibly frustrating, building a testing methodology for linux that’s application/hardware agnostic and accurate. I’d love to be looped in if you find something that works well for OGL as well as vulkan
bugle still compiles fine with glew/SCons 3, but the resulting installation can’t find any of its shared objects
glxgears: error while loading shared libraries: libbugleutils.so.8: cannot open shared object file: No such file or directory
Anyone with experience with SCons want to chime in on how to configure it properly? I’d assume it has something with the install path or env but I don’t have any experience with this build system or tweaking it
edit: just me being dumb and tired, had to add /usr/local/lib to my LD_LIBRARY_PATH, got bugle up and running, tested on glxgears with logging enabled, and got some output
[INFO] logstats.ms per frame: 16.62 ms/frame
[INFO] logstats.frames per second: 58.3 fps
[INFO] logstats.ms per frame: 17.16 ms/frame
[INFO] logstats.frames per second: 55.6 fps
[INFO] logstats.ms per frame: 17.98 ms/frame
[INFO] logstats.frames per second: 49.6 fps
[INFO] logstats.ms per frame: 20.14 ms/frame
[INFO] logstats.frames per second: 83.7 fps
[INFO] logstats.ms per frame: 11.95 ms/frame
[INFO] logstats.frames per second: 60.8 fps
[INFO] logstats.ms per frame: 16.45 ms/frame
[INFO] logstats.frames per second: 59.4 fps
[INFO] logstats.ms per frame: 16.85 ms/frame
[INFO] logstats.frames per second: 60.1 fps
[INFO] logstats.ms per frame: 16.64 ms/frame
[INFO] logstats.frames per second: 60.0 fps
[INFO] logstats.ms per frame: 16.68 ms/frame
[INFO] logstats.frames per second: 60.2 fps
[INFO] logstats.ms per frame: 16.62 ms/frame
[INFO] logstats.frames per second: 59.9 fps
[INFO] logstats.ms per frame: 16.68 ms/frame
[INFO] logstats.frames per second: 60.0 fps
[INFO] logstats.ms per frame: 16.67 ms/frame
[INFO] logstats.frames per second: 60.0 fps
[INFO] logstats.ms per frame: 16.65 ms/frame
[INFO] logstats.frames per second: 60.6 fps
[INFO] logstats.ms per frame: 16.51 ms/frame
[INFO] logstats.frames per second: 60.2 fps
[INFO] logstats.ms per frame: 16.60 ms/frame
[INFO] logstats.frames per second: 59.4 fps
[INFO] logstats.ms per frame: 16.84 ms/frame
[INFO] logstats.frames per second: 59.8 fps
[INFO] logstats.ms per frame: 16.73 ms/frame
with a little profile config, this can easily spit out opengl data in csv format
hell, even the gui still works
I’ll be doing a writeup soon on this, but all you have to do is install, set the path, and run
and you get whatever data you set up in the profile in a log or as output
Update: also works with the game transistor (GOG), yet to test on steam titles, but it should be as simple as adding the string above as a launch option