FPS Benchmarks Are Flawed - Introducing Animation Error _ Engineering Discussion

Using Telemetry to Optimize Your Gaming PC's Performance

Many gamers aim to achieve high frame rates while competing in tournaments, but finding the right balance between CPU and GPU power can be challenging. Fortunately, tools like Telemetry can help identify areas of improvement.

One of the key features of Telemetry is its ability to display a stack graph, which provides valuable insights into how your system's components are interacting with each other. This can be especially useful when trying to optimize performance for specific games or engine types. By analyzing this data, gamers can gain a better understanding of their system's strengths and weaknesses and make adjustments accordingly.

Power Consumption: A Key Indicator of Performance

Telemetry also provides information on power consumption, which is crucial for maintaining optimal performance while minimizing heat generation. With Telemetry, you can see the power draw of your GPU and CPU, as well as other components, giving you a clear picture of how they're performing under load.

For example, in our test system, the GPU was drawing around 163 Watts, which is relatively high, but still within acceptable limits for most modern systems. The utilization rate was also quite high, indicating that the GPU was working hard to deliver smooth performance. By adjusting settings and tweaking parameters, gamers can optimize power consumption while maintaining frame rates.

Histograms: A Visual Representation of Power Fluctuations

One of the most interesting features of Telemetry is its histogram view, which provides a graphical representation of power fluctuations over time. This allows users to see patterns in their system's performance and identify areas where adjustments may be needed.

In our test, we used the histogram view to analyze the power consumption of our system, particularly during periods of high frame rate demands. By adjusting settings and tweaking parameters, we were able to reduce power draw while maintaining a consistent frame rate.

Minimizing Overhead: The Importance of Low Latency

When it comes to capturing game footage or streaming gameplay, minimizing latency is crucial for ensuring smooth performance. This is particularly important when using tools like Fraps, Present Mon, and other derivative capture software.

In our test, we used the Telemetry tool to capture frame rates and analyze its performance. We found that running a capture while installed in the background resulted in minimal impact on system performance, compared to running it via script. However, there was still some overhead associated with capturing, which is not surprising given the complexity of modern games.

Histograms: A Useful Tool for Analyzing Power Consumption

One of the most useful features of Telemetry is its histogram view, which allows users to visualize power consumption over time. This provides a wealth of information on system performance and can help identify areas where adjustments may be needed.

By configuring the histogram view with the right number of bins, users can gain a clear picture of their system's power consumption patterns. In our test, we used a fewer bins to get a better distribution of data, which revealed some interesting insights into our system's performance under load.

The Future of Telemetry: A Roadmap for Development

As always, Tom is excited to share his thoughts on the future of Telemetry and its potential applications in the gaming community. He hopes that users will continue to provide feedback and suggestions, which will help shape the development of this powerful tool.

In fact, a beta version of the updated Telemetry tool is expected to be released soon, with a GitHub repository available for those who want to get involved in the development process. With its robust features and user-friendly interface, Telemetry has already proven itself as a valuable resource for gamers looking to optimize their system's performance.

Tom thanks his audience for joining him on this episode of [show name] and invites them to check out other videos on the channel.

"WEBVTTKind: captionsLanguage: enso I have a bombshell which is that uh the whole frame times thing it's all garbage it's all wrong it's all garbage so frame times entered discussion along with 1% and 0.1% a little over a decade ago now and uh that has been a driving factor of reviews it's shown that average FPS is not enough not enough it doesn't show the full picture you can have super high average FPS terrible game experience true but it's all wrong there's some things that can be astr exactly that's your hook that's the hook ni we normally don't tell them that's the hook this is Tom Peterson that was the hook Tom is an engineer at Intel we've done videos in the past on measuring things like actually GPU busy right here y this was a great topic uh we did a a canonical view of the pipeline oh that's right we did that's good and so General kind of technical engineering type topics about games and how they're perceived and problems with uh frame pacing and rendering and resource utilization is what we're talking about today too uh but you have a present One update that will do give us a much better look at I hope so right I hope so and and I want to start too with present Monon is an open source tool so it is completely open you'll find it out on GitHub it's been an Intel project for forever and we've been improving it and making it better and this is a big step for presma and this is what uh I don't know if I could say most or not but a lot of the reviewers I know including us uh most people use present mon these days it basically replaced fraps so yeah uh okay so let's dive in this is there's some cool stuff today animations a big topic I think I think it's going to change the way we think about things a little bit do you want to start with why frame times are on before that this video is brought you by Arctic and the liquid freezer 3 which we've tested using our standard methodology and found to be one of the most noise efficient CPU coolers on our charts the liquid freezer 3 includes rise and offset mounting to improve AMD performance and uses a thicker radiator to further lower the temperatures Arctic has priced these competitively for aios and you can learn more at the link in the description below I think we should start with what have what have we been calculating so far okay okay so what we have been calculating so far is frs's fault okay okay because fraps was a throw them under the bus gone right nobody cares yeah so fraps was a program obviously very important but it was the first way we measured performance right and it was a shim which means that it hooked uh an API called present and so it kind of sat if you if you thought about this where's where's fraps fraps measures from the time render ends which is uh with a call called present and then it stays and it measures until it sees another present so uh fraps is measuring what's called percent to presentent which is a great approximation for frame time right that's what we all saw but now if you look at this chart it's a little bit concerning because that time is across the blue weight it's truly a frame it's not a frame it's it's a frame interval but it's measured across two frames so what does it mean if this frame has a long thing and this had a a short weight it's really not the same frame and this goes back to something I mentioned to you earlier but uh years ago I did a discussion I'm pretty sure we filmed it with Scott Watson at the time he was at AMD uh he then went to Intel and now he's somewhere else but he he ml ml Ben that's right yeah uh but Scott was critical for early frame time discussion because he sort of debuted the whole um written methodology of it from a media perspective yes great guy uh the reason I bring him up though is because uh at one point I noticed there was kind of a silent change in the charts where it went from frame time to something like frame to frame interval or something like that yeah yeah and so I I think I finally understand why he made that change I think that's why I mean I'd have to ask him why he made that that's how I have made that change right and the reason I'm changing it is because suddenly it matters and it matters when you start thinking about uh stutter and animation error and the way to kind of get into it a little bit is if you know the frame time then you can actually calculate basically the animation step for a frame and the animation step is basically equal to the frame time mostly right there's sometimes where it's a little different but what you need that for is to be correlated with the display time step because if the display time step is different from the animation time step you'll get a simulation time error which is measuring stutter directly for the first time so the reason we're changing this is because first of all it's more consistent to measure frame time in the correct spots in the pipeline but also it makes it possible for us to directly measure what we're going to call simulation time error yeah yeah and so this is the I think this is kind of the key component of uh frame times as they've been presented so far yeah inaccurate or all wrong little bit of a definitely not all wrong a little bit of a stretch a big stretch they're mostly right but there's there is more to it so this I was genuinely really excited about seeing just like GP busy when you brought that by we vied GP busy a couple times it needs like one more step to really truly make it into the review cycle and uh it's getting there but the reason I was excited about it is because you're always looking for how can GPU and CPU reviews be improved because if we are at endgame that's very sad I don't think we're at end game yeah and and they're pretty good but for reviewers there's limited insights we have access to uh whereas Hardware vendors can see a whole lot more we soften the talk earlier right yeah there's a lot going on there and so stuff like this should hopefully start open up I think I mean we're making it open source we're we're going to keep iterating on it but the big changes this time are first of all we're lining up the frame time correctly now we're breaking out CPU busy and CPU weight and CPU start by the way all these names that you see are now going to appear in the spreadsheet that is cap apt when you do a capture you see all these Nam so it's a little bit more clear what you're looking at GPU time is now measuring the time from Once the GPU starts rendering to the time it stops rendering so that's pretty cool and we actually break it up into GPU busy and GPU weight so a lot of the times so that's new that's brand new a lot of times the GPU is doing multi-pass rendering and it can actually be idle even though you know you started render and you're not done yet so breaking it up now exposes hey wait a second is my GPU really busy or is it stalled let's waiting on the CP let's recap some of this we we did talk about this in depth in a separate thing I think it's worth bringing it back though um the framing I had last time to to try and help everyone quickly identify where's the use was uh identifying bottlenecks is kind of an obvious one y but can you walk me through uh again why the the breakout here what extra Insight does that yeah the having the GPU weight would tell you is there some kind of codependency on the CPU threads that are actually causing my GPU time to be extended right and so you might think that you're having a very large render when and that you would think that's 100% GPU utilization but the truth is it's not and having this GPU weight gives you that one more insight into there's some kind of funky interdependence between the CPU and GPU that's not allowing the GPU to be fully you know utilizing itself so previously if you saw just a long GP busy here without that weight in the middle am I correct in understanding that that makes it appear like it's all GPU bound but actually some of it's way c a lot of it's CPU CU you'll see in certain games uh the GPU busy as a percent of frame time can actually be quite small right and so that's a that's a very important insight into how should I be balancing my CPU and GPU and let's let's bring that back up as another refresher so when talking about uh GPU versus CPU utilization during the time a frame is being rendered uh I don't really want to frame it as like what's the ideal but uhuh you know what kind of split are you looking for the balance between the two parts I would love for the GPU to be fully you know fully utilized and and but the problem there is that well you know you don't know you're running your worst case scene so maybe you want your GPU to be slightly not fully utilized but if it's not fully utilized that's the big you know thing that you're trying to do and you'd like to adjust your CPU so that it's Al probably the highest cost also the highest Coast right so you're you're looking to kind of utilize that highest value thing in your system so I want to push the CPU uh as much as I can to feed that GPU and if I see I've got the settings messed up where the I'm just putting too much load on the GPU I will know it by looking at my sort of GPU busy relative to frame time or relative to C busy how about simulation time error on the side over here yeah that's cool so that is the thing that uh we'll be introducing probably by the time we put this bait out in public is that the missing link that is the missing length yes found it okay so simulation time error is talking about something that if you've been list you know what I'm talking about so if people have not been listening to me it's the it's the it's this stutter thing right and we all know that when you're playing a game if it stutters or it hitches it's not a great experience but there's also a thing that's happening all the time which I call Micro stutter which are these like barely perceptable little Jitters to things and those aren't great either so this is the first time we're going to measure those directly and what Scott did was said 99th percentile 95th percentile 90th percentile those are kind of proxies for stuttery things and they are in one sense but they're not actually directly measuring so I can add to that too where uh similar but a different calculation for us we talk about this in reviews though when our approach is bar chart for broad picture and then if uh we use 1% low and 0. 1% low a little different calculation on what Scott did if we see one of those drastically out of Step or just really bad that tells us now go draw a line graph for frame time but you're saying so what I've been saying and this is the you know the asterisk a little bit for everyone but what I've been saying is if the 1% 1% is low that is the proxy to get us to the frame time line plot to tell us this is the problem what you're saying the frame time line plot is still kind of the proxy to get us to the to to this right because what you actually care about it it there's a lot of perceptual things here a big fuzzy frame time chart is not good in and of itself even if everything is paced perfectly you're still going to have this long short frame and your your brain kind of sees that as a blur um so you want frame times to be fairly uniform just to avoid that phenomenon is there another step after this are you gonna come back in five years and be like I found it there's one more just one more no but in this case simulation time error is going after that thing directly and and the thing is stutter and that's exactly what simulation time measures it doesn't measure Like A variation which is what the frame Time stuff is measuring this is measuring directly the air what what is happening during simulation time what is that so simulation time is every frame when it's generated on the CPU has a time that it's sort of modeling right and so if you did uh 10 frames in a row they'd all have 10 numbers of what time do they represent sequentially what you want is that that step between those times to be fairly uniform that'll give you fairly you know good uniform experience but you also want them to show up on your monitor with the same relative spacing because if they move around on the monitor timing that will manifest itself in simulation time error and I I think this uh using simple simple words but genuinely one of the better pictures of it is when the game just sort of feels bad yes but you can't quite explain it that's kind of that that St I mean there's lots of things about like if the frame rate gets too low it just sort of sucks if the frame rate is inconsistent it just kind of sucks and this is very directly measuring that second and so why has it taken this long to get the simulation time era then cuz we're talking the frame time discussion you were as I understand it heavily involved in I had a little something to do that back in the day yes uh and at that time that was also one of those why did this take so long to discover so you know I mean if you if you're able to look back at it why are we getting to this now um like what what brought this up right why is this why are we doing this now yeah well it's because why don't you just give me the best thing immediately we kind of it's it's an iterative thing and actually every idea I've ever had Stephen has always been that kind of like that's obvious that shouldn't even be that shouldn't even be a pat sure same idea right but this is not new I mean people have been aware of simulation time era for a long time but we're uniquely position where we make preson and preson is everywhere and I've been managing to convince Jefferson who's the Godfather Of preson You' spoken to him several times Jefferson Montgomery great job uh you know he's he's into it now right it's and and he's trying to help us and we're helping him get that next level how does how does simulation time error so two part question here first one is you're talking about even spacing yeah which uh I guess from a user standpoint kind of manifests itself as like animation fluidity or something smoothness yeah right um how does it look on a chart or a graph you mean how does animation error look yeah how does is this something I can not to make a number okay you can't I mean when you use this you can but you can't do it today because simulation time error requires two things you need to know the animation time associated with every frame and you need to know the time that that frame is being flipped and so like relative to each other you need both of those data points so today people are mostly using CPU start as the animation time which is a pretty good proxy and that's what we're going to be doing initially there are explicit apis both from Nvidia and from us and others that are allowing game engines or games to tell you that animation time and so as that becomes more available we'll be building that into present I see yeah uh and to to Loop it back into the question when it is all functioning as you kind of Envision it to is there a chart with the number I can make yes there is yeah so the chart the chart I would make that's what I need eventually eventually add up all the simulation timers that's a number in milliseconds okay okay and that gives you if I ran my number my test for 10 seconds I had you know 80 milliseconds of simulation time error that by itself is is hard to get a sense of so divide it by the total test time so if you divide the simulation time by the total test time that'll tell you basically a error per second metric some kind of rate yeah so an error per second metric is is effectively what you're looking for and and that would be the the same magnitude that's bigger bar worse though yes exactly well do it inverted now we yeah now we get toct away inverted inverted yeah but I'm really excited about that I'm excited about this one here click the Photon latency so I think I might have mentioned that before Jeff that we should talk about yeah okay well this is a completely software version of click the photon so no hardware needed it looks at a USB event to say hey the there was a USB event that happened and oh by the way I'm doing a frame right now yeah so that USB event is probably associated with this Frame let's pretend it is and then measure the pipeline all the way until I know this fla this Frame gets flipped and that's click the photon so that's going to be like 80% 85% of the way to getting you a hardware free you know Photon measur yeah so for click to photon is exactly what it sounds like if you think through it where it's you click or you have some input how long until there's a an actual like light representation of that event and the way that we and pretty much everyone else so be before other hardware tools is basically highspeed camera is what you did and now there's uh things like lat rla uh but some kind of physical Hardware tool is required to measure so this is software which is interesting yeah and I think that's a very uh cool thing but you know it's it's not enough you need a hardware one that's right yeah baby yeah so uh shout out to Rand who was the original ldap Creator we have uh at Intel created our own version of lat it's called LMT I'm the firmware developer for this one you are I am yeah and I also did the app yeah cool so uh but the the team in Toronto did a great job on the board it uh it does basically similar very similar to lat ours is open you'll see it out on GitHub uh schematics will be up there and uh effectively this will be rolled out in the next couple of uh hopefully weeks like PCB schematics I'll put the whole thing up there yeah yeah I'm just thinking like in terms of uh video content uh we have long talked about taking a PCB schematic to Taiwan and having it made oh that'd be great you know what I just I just did my own PCB as part of this project uh and it's super easy to do online you can actually just you know submit the thing and the board comes back a couple weeks later yeah it's crazy yeah so okay so this is your Hardware solution to this what are the components of this like what well this is an at Mega ATX Mega 32 U I think it basically is the microcontroller um on the back side over here there's a photo diode okay and effectively uh here is a a click you know there's got a little mouse thing um and over here you can instrument a hardware Mouse these are um uh kind of Serial ports for external RGB sensors when you say a mouse thing for this one you mean there's like basically a button on a Wire yeah basically have a little mouse simulator and you can uh click the mouse the mouse event goes into the microcontroller which converts it to a USB event it comes out the USB port and goes over to the PC so does that have a a known latency I guess oh we measure it exactly okay so we're going to we're going to record the time the click happened in the microcontroller and that event's going to go over and when it shows up in the PC it goes into an a host app which we're also making available on public Source okay and the host app will say hey there's a button click and it'll it'll you know if you have a game running it'll light something and then the photo detector over here sees the light change and Records it back on the microcontroller and then uh the microcontroller is communicating over each uh hid uh back to the host app to kind of do analysis cool yeah there's a we'll have at GN we'll have a whole separate video on it I'm sure but I just I don't want to get into the rabbit hole of it too much but there's a lot of like really uh sensitive aspects of test setup for these physical hardware tools where you have to so for example a really quick and simple example but using Game interfaces and menus seems like a really tempting way to measure oh don't the response but it's not right and same thing too like some games have a a fixed uh amount of frames for which the uh attack will animate as an example you need to factor that so there's a lot of uh landmines that if distributed just at large the community you know I think I think we need to put some material I mean for us we're just we're still in like baking mode for this thing so as you know it's going to be a little bit I'm pretty excited about it so back over here click the photon I think you're going to be all over um eventually our LMT will integrate with present Monon so you'll see the LMT events show up in present so LMT to me strikes me as something that uh definitely should be in review tool boxes but this one for end users uh since it'll be in software yeah is more approachable yeah totally so think that frame view does some kind of PC latency metric well actually I know it does a PC latency I'm not very familiar with frame view uh we don't use it here but um so there's a couple tools there's frame view that does something I'm not familiar with there's click to Photon through present mon 2 now I guess which is in beta right now it's just with a few key press okay but we'll be making a a public release in the next month or so okay so stay through a little more QA get some feedback from you as long as it's all good we'll be going up on the web and so anyone who wants to follow that so you can download it and use it when it's ready we will probably do the update in Hardware news we normally use it through CLI there is an interface I know you want to show the inter I do want to show it I do want to show it so why don't we cut to that pull up the demo okay okay so we popped up present mon installed it on a test machine uh I'm just running super position here it was the quickest thing I had to launch and then this overlay you've blown up for presentation purposes it can be resized it can resize any any way you want wider smaller bigger sponsor changeable whole thing the the quick recap is is Tom kind of went through the present Monon interface which is over there we've got Boll will show of it you configured a set of charts in the overlay and now Tom can you walk me through kind of uh what is this telling us now yeah and I mean I know you know but I do this is something we we didn't spend a ton of time on last time because we're so focused on GP busy and this is something that an end user can actually do so I think it's useful well the way to think about it is I've got two clusters I set up here one is sort of a CPU image the other one is sort of gpy on the CPU side I've got frame time CPU busy and CPU weight now if you look at it you can see the red is busy and the green is weight normally you don't want you want some weight on the CPU if you're trying to say not bottleneck your GPU so in this case I've got uh you know about 3 milliseconds or 4 milliseconds busy and about 2 milliseconds waiting which is actually probably pretty good it means that the CPU did all it work had a little bit of head time hung out a little bit now if you look down on the GPU you can see I've got uh frame time set up GPU busy GPU we and here you see wow my my GPU is busy 5.5 milliseconds out of 5.7 so it's basically picked right and so very quickly you know okay if I want my frames higher than 170 I need to lower my GPU settings my CPU is just fine right I think that's a that's a good way to relate it back where uh if I don't know I I'm sure a lot of lot of people do this in the competitive scene but if you're someone who's targeting a certain frame rate or just a really high frame rate and you're struggling to figure out which settings to drop yeah this is the way to do it that would be an easier way right another cool thing is now that you've got these things set up you can also see some Telemetry so this is coming directly from the GPU and your CPU and your system you can see the power is running about 163 Watts which is pretty high your GPU is pretty cool at 60c and you can see the utilization is kind of 100% then a little bit lower than 100% so it's it's doing pretty good this is actually 98 so it's like you know bubbling up near the top and the scale can be adjusted in the software too yeah you can turn off the auto scale so I think it's a pretty easy thing to do of course it captures as well so there's a little hot key to do captures and you can adjust uh you know exactly how much updating you want to do there's histograms it's pretty uh full feature I want to ask uh overhead so one of the there's other reasons too but one of the main reasons we use command prompts for all of our capture tools is minimizer overhead right so do you Happ off top of your head like what the impact is when you run a capture on this we turn off the overlay so there's no impact uh that we've been able to measure for capturing with the tool installed of the overlay versus the script because it's basically the same thing and there's I I would assume there's a at least a little bit of overhead with just present mod in general there is a tiny tiny bit but there's yeah I mean there's not really it's not perceptible we've correlated fraps present Monon frame View and a lot of derivative tools and they all get about the same yeah okay my guys know I love histograms okay so nowhere else this is the only place hisr so like let's got some variation to it how about how about we do uh Power right so GP power is fluctuating so instead of a graph you say I want to do o oh I don't want to do average why can I do a histogram uh oh huh the development team this because I got two of them all back okay so let's get rid of let's get rid of temperature real quick oh please work I don't want to ruin Ray's day yeah so graph oh you know what it is I say graph and then instead of line you say histogram okay that was close I was worried we just cost him his job yes so check it out histogram guys no more no histogram guys gone so how many bins you can configure your histogram your autoscaler so let's do a few few less bins and now you can see kind of a distribution over time of power right that's actually the right view for these high variance things and you want to look at it over time and you can percentiles we're adding I hope we're adding a capability to plot multiple different uh variables on the same histogram be pretty cool it's interesting too to see this this pattern where it's the game or the engine or whatever is doing something I guess well again but you're at 96 to 100 so I suspect that some oh scale okay yeah it's Auto scaling so it's very little but still you know substantial I think I think you know to me the tool helps give that next click down into what's going on between CPU and GPU balance so I I think there's work work to be done here you know if if people are using this they have ideas you know put them in your chat we'll we'll read it right you know there's lots of stuff to be done um a stack graph I think is going to be very useful here um and yeah we we're going to keep working on it cool so uh there is going to be a beta soon if not already it it should be out soon okay even. intel.com or something but there's also a GitHub repository that has all the builds so if you just Google get um uh present mon you'll get there yeah cool so check it out if you haven't uh like I said this present mon we've been using for I don't know probably like I don't know when it came out years it's about 10 years it's about 10 years now uh it's command line the interface iteration kind of came out in the last I don't know a year or two year two and uh so check it out if you want to get some of the numbers that we get but uh as always Tom thank you for joining great to see you again yeah thanks for having me and check out the other videos we'll see you all next timeso I have a bombshell which is that uh the whole frame times thing it's all garbage it's all wrong it's all garbage so frame times entered discussion along with 1% and 0.1% a little over a decade ago now and uh that has been a driving factor of reviews it's shown that average FPS is not enough not enough it doesn't show the full picture you can have super high average FPS terrible game experience true but it's all wrong there's some things that can be astr exactly that's your hook that's the hook ni we normally don't tell them that's the hook this is Tom Peterson that was the hook Tom is an engineer at Intel we've done videos in the past on measuring things like actually GPU busy right here y this was a great topic uh we did a a canonical view of the pipeline oh that's right we did that's good and so General kind of technical engineering type topics about games and how they're perceived and problems with uh frame pacing and rendering and resource utilization is what we're talking about today too uh but you have a present One update that will do give us a much better look at I hope so right I hope so and and I want to start too with present Monon is an open source tool so it is completely open you'll find it out on GitHub it's been an Intel project for forever and we've been improving it and making it better and this is a big step for presma and this is what uh I don't know if I could say most or not but a lot of the reviewers I know including us uh most people use present mon these days it basically replaced fraps so yeah uh okay so let's dive in this is there's some cool stuff today animations a big topic I think I think it's going to change the way we think about things a little bit do you want to start with why frame times are on before that this video is brought you by Arctic and the liquid freezer 3 which we've tested using our standard methodology and found to be one of the most noise efficient CPU coolers on our charts the liquid freezer 3 includes rise and offset mounting to improve AMD performance and uses a thicker radiator to further lower the temperatures Arctic has priced these competitively for aios and you can learn more at the link in the description below I think we should start with what have what have we been calculating so far okay okay so what we have been calculating so far is frs's fault okay okay because fraps was a throw them under the bus gone right nobody cares yeah so fraps was a program obviously very important but it was the first way we measured performance right and it was a shim which means that it hooked uh an API called present and so it kind of sat if you if you thought about this where's where's fraps fraps measures from the time render ends which is uh with a call called present and then it stays and it measures until it sees another present so uh fraps is measuring what's called percent to presentent which is a great approximation for frame time right that's what we all saw but now if you look at this chart it's a little bit concerning because that time is across the blue weight it's truly a frame it's not a frame it's it's a frame interval but it's measured across two frames so what does it mean if this frame has a long thing and this had a a short weight it's really not the same frame and this goes back to something I mentioned to you earlier but uh years ago I did a discussion I'm pretty sure we filmed it with Scott Watson at the time he was at AMD uh he then went to Intel and now he's somewhere else but he he ml ml Ben that's right yeah uh but Scott was critical for early frame time discussion because he sort of debuted the whole um written methodology of it from a media perspective yes great guy uh the reason I bring him up though is because uh at one point I noticed there was kind of a silent change in the charts where it went from frame time to something like frame to frame interval or something like that yeah yeah and so I I think I finally understand why he made that change I think that's why I mean I'd have to ask him why he made that that's how I have made that change right and the reason I'm changing it is because suddenly it matters and it matters when you start thinking about uh stutter and animation error and the way to kind of get into it a little bit is if you know the frame time then you can actually calculate basically the animation step for a frame and the animation step is basically equal to the frame time mostly right there's sometimes where it's a little different but what you need that for is to be correlated with the display time step because if the display time step is different from the animation time step you'll get a simulation time error which is measuring stutter directly for the first time so the reason we're changing this is because first of all it's more consistent to measure frame time in the correct spots in the pipeline but also it makes it possible for us to directly measure what we're going to call simulation time error yeah yeah and so this is the I think this is kind of the key component of uh frame times as they've been presented so far yeah inaccurate or all wrong little bit of a definitely not all wrong a little bit of a stretch a big stretch they're mostly right but there's there is more to it so this I was genuinely really excited about seeing just like GP busy when you brought that by we vied GP busy a couple times it needs like one more step to really truly make it into the review cycle and uh it's getting there but the reason I was excited about it is because you're always looking for how can GPU and CPU reviews be improved because if we are at endgame that's very sad I don't think we're at end game yeah and and they're pretty good but for reviewers there's limited insights we have access to uh whereas Hardware vendors can see a whole lot more we soften the talk earlier right yeah there's a lot going on there and so stuff like this should hopefully start open up I think I mean we're making it open source we're we're going to keep iterating on it but the big changes this time are first of all we're lining up the frame time correctly now we're breaking out CPU busy and CPU weight and CPU start by the way all these names that you see are now going to appear in the spreadsheet that is cap apt when you do a capture you see all these Nam so it's a little bit more clear what you're looking at GPU time is now measuring the time from Once the GPU starts rendering to the time it stops rendering so that's pretty cool and we actually break it up into GPU busy and GPU weight so a lot of the times so that's new that's brand new a lot of times the GPU is doing multi-pass rendering and it can actually be idle even though you know you started render and you're not done yet so breaking it up now exposes hey wait a second is my GPU really busy or is it stalled let's waiting on the CP let's recap some of this we we did talk about this in depth in a separate thing I think it's worth bringing it back though um the framing I had last time to to try and help everyone quickly identify where's the use was uh identifying bottlenecks is kind of an obvious one y but can you walk me through uh again why the the breakout here what extra Insight does that yeah the having the GPU weight would tell you is there some kind of codependency on the CPU threads that are actually causing my GPU time to be extended right and so you might think that you're having a very large render when and that you would think that's 100% GPU utilization but the truth is it's not and having this GPU weight gives you that one more insight into there's some kind of funky interdependence between the CPU and GPU that's not allowing the GPU to be fully you know utilizing itself so previously if you saw just a long GP busy here without that weight in the middle am I correct in understanding that that makes it appear like it's all GPU bound but actually some of it's way c a lot of it's CPU CU you'll see in certain games uh the GPU busy as a percent of frame time can actually be quite small right and so that's a that's a very important insight into how should I be balancing my CPU and GPU and let's let's bring that back up as another refresher so when talking about uh GPU versus CPU utilization during the time a frame is being rendered uh I don't really want to frame it as like what's the ideal but uhuh you know what kind of split are you looking for the balance between the two parts I would love for the GPU to be fully you know fully utilized and and but the problem there is that well you know you don't know you're running your worst case scene so maybe you want your GPU to be slightly not fully utilized but if it's not fully utilized that's the big you know thing that you're trying to do and you'd like to adjust your CPU so that it's Al probably the highest cost also the highest Coast right so you're you're looking to kind of utilize that highest value thing in your system so I want to push the CPU uh as much as I can to feed that GPU and if I see I've got the settings messed up where the I'm just putting too much load on the GPU I will know it by looking at my sort of GPU busy relative to frame time or relative to C busy how about simulation time error on the side over here yeah that's cool so that is the thing that uh we'll be introducing probably by the time we put this bait out in public is that the missing link that is the missing length yes found it okay so simulation time error is talking about something that if you've been list you know what I'm talking about so if people have not been listening to me it's the it's the it's this stutter thing right and we all know that when you're playing a game if it stutters or it hitches it's not a great experience but there's also a thing that's happening all the time which I call Micro stutter which are these like barely perceptable little Jitters to things and those aren't great either so this is the first time we're going to measure those directly and what Scott did was said 99th percentile 95th percentile 90th percentile those are kind of proxies for stuttery things and they are in one sense but they're not actually directly measuring so I can add to that too where uh similar but a different calculation for us we talk about this in reviews though when our approach is bar chart for broad picture and then if uh we use 1% low and 0. 1% low a little different calculation on what Scott did if we see one of those drastically out of Step or just really bad that tells us now go draw a line graph for frame time but you're saying so what I've been saying and this is the you know the asterisk a little bit for everyone but what I've been saying is if the 1% 1% is low that is the proxy to get us to the frame time line plot to tell us this is the problem what you're saying the frame time line plot is still kind of the proxy to get us to the to to this right because what you actually care about it it there's a lot of perceptual things here a big fuzzy frame time chart is not good in and of itself even if everything is paced perfectly you're still going to have this long short frame and your your brain kind of sees that as a blur um so you want frame times to be fairly uniform just to avoid that phenomenon is there another step after this are you gonna come back in five years and be like I found it there's one more just one more no but in this case simulation time error is going after that thing directly and and the thing is stutter and that's exactly what simulation time measures it doesn't measure Like A variation which is what the frame Time stuff is measuring this is measuring directly the air what what is happening during simulation time what is that so simulation time is every frame when it's generated on the CPU has a time that it's sort of modeling right and so if you did uh 10 frames in a row they'd all have 10 numbers of what time do they represent sequentially what you want is that that step between those times to be fairly uniform that'll give you fairly you know good uniform experience but you also want them to show up on your monitor with the same relative spacing because if they move around on the monitor timing that will manifest itself in simulation time error and I I think this uh using simple simple words but genuinely one of the better pictures of it is when the game just sort of feels bad yes but you can't quite explain it that's kind of that that St I mean there's lots of things about like if the frame rate gets too low it just sort of sucks if the frame rate is inconsistent it just kind of sucks and this is very directly measuring that second and so why has it taken this long to get the simulation time era then cuz we're talking the frame time discussion you were as I understand it heavily involved in I had a little something to do that back in the day yes uh and at that time that was also one of those why did this take so long to discover so you know I mean if you if you're able to look back at it why are we getting to this now um like what what brought this up right why is this why are we doing this now yeah well it's because why don't you just give me the best thing immediately we kind of it's it's an iterative thing and actually every idea I've ever had Stephen has always been that kind of like that's obvious that shouldn't even be that shouldn't even be a pat sure same idea right but this is not new I mean people have been aware of simulation time era for a long time but we're uniquely position where we make preson and preson is everywhere and I've been managing to convince Jefferson who's the Godfather Of preson You' spoken to him several times Jefferson Montgomery great job uh you know he's he's into it now right it's and and he's trying to help us and we're helping him get that next level how does how does simulation time error so two part question here first one is you're talking about even spacing yeah which uh I guess from a user standpoint kind of manifests itself as like animation fluidity or something smoothness yeah right um how does it look on a chart or a graph you mean how does animation error look yeah how does is this something I can not to make a number okay you can't I mean when you use this you can but you can't do it today because simulation time error requires two things you need to know the animation time associated with every frame and you need to know the time that that frame is being flipped and so like relative to each other you need both of those data points so today people are mostly using CPU start as the animation time which is a pretty good proxy and that's what we're going to be doing initially there are explicit apis both from Nvidia and from us and others that are allowing game engines or games to tell you that animation time and so as that becomes more available we'll be building that into present I see yeah uh and to to Loop it back into the question when it is all functioning as you kind of Envision it to is there a chart with the number I can make yes there is yeah so the chart the chart I would make that's what I need eventually eventually add up all the simulation timers that's a number in milliseconds okay okay and that gives you if I ran my number my test for 10 seconds I had you know 80 milliseconds of simulation time error that by itself is is hard to get a sense of so divide it by the total test time so if you divide the simulation time by the total test time that'll tell you basically a error per second metric some kind of rate yeah so an error per second metric is is effectively what you're looking for and and that would be the the same magnitude that's bigger bar worse though yes exactly well do it inverted now we yeah now we get toct away inverted inverted yeah but I'm really excited about that I'm excited about this one here click the Photon latency so I think I might have mentioned that before Jeff that we should talk about yeah okay well this is a completely software version of click the photon so no hardware needed it looks at a USB event to say hey the there was a USB event that happened and oh by the way I'm doing a frame right now yeah so that USB event is probably associated with this Frame let's pretend it is and then measure the pipeline all the way until I know this fla this Frame gets flipped and that's click the photon so that's going to be like 80% 85% of the way to getting you a hardware free you know Photon measur yeah so for click to photon is exactly what it sounds like if you think through it where it's you click or you have some input how long until there's a an actual like light representation of that event and the way that we and pretty much everyone else so be before other hardware tools is basically highspeed camera is what you did and now there's uh things like lat rla uh but some kind of physical Hardware tool is required to measure so this is software which is interesting yeah and I think that's a very uh cool thing but you know it's it's not enough you need a hardware one that's right yeah baby yeah so uh shout out to Rand who was the original ldap Creator we have uh at Intel created our own version of lat it's called LMT I'm the firmware developer for this one you are I am yeah and I also did the app yeah cool so uh but the the team in Toronto did a great job on the board it uh it does basically similar very similar to lat ours is open you'll see it out on GitHub uh schematics will be up there and uh effectively this will be rolled out in the next couple of uh hopefully weeks like PCB schematics I'll put the whole thing up there yeah yeah I'm just thinking like in terms of uh video content uh we have long talked about taking a PCB schematic to Taiwan and having it made oh that'd be great you know what I just I just did my own PCB as part of this project uh and it's super easy to do online you can actually just you know submit the thing and the board comes back a couple weeks later yeah it's crazy yeah so okay so this is your Hardware solution to this what are the components of this like what well this is an at Mega ATX Mega 32 U I think it basically is the microcontroller um on the back side over here there's a photo diode okay and effectively uh here is a a click you know there's got a little mouse thing um and over here you can instrument a hardware Mouse these are um uh kind of Serial ports for external RGB sensors when you say a mouse thing for this one you mean there's like basically a button on a Wire yeah basically have a little mouse simulator and you can uh click the mouse the mouse event goes into the microcontroller which converts it to a USB event it comes out the USB port and goes over to the PC so does that have a a known latency I guess oh we measure it exactly okay so we're going to we're going to record the time the click happened in the microcontroller and that event's going to go over and when it shows up in the PC it goes into an a host app which we're also making available on public Source okay and the host app will say hey there's a button click and it'll it'll you know if you have a game running it'll light something and then the photo detector over here sees the light change and Records it back on the microcontroller and then uh the microcontroller is communicating over each uh hid uh back to the host app to kind of do analysis cool yeah there's a we'll have at GN we'll have a whole separate video on it I'm sure but I just I don't want to get into the rabbit hole of it too much but there's a lot of like really uh sensitive aspects of test setup for these physical hardware tools where you have to so for example a really quick and simple example but using Game interfaces and menus seems like a really tempting way to measure oh don't the response but it's not right and same thing too like some games have a a fixed uh amount of frames for which the uh attack will animate as an example you need to factor that so there's a lot of uh landmines that if distributed just at large the community you know I think I think we need to put some material I mean for us we're just we're still in like baking mode for this thing so as you know it's going to be a little bit I'm pretty excited about it so back over here click the photon I think you're going to be all over um eventually our LMT will integrate with present Monon so you'll see the LMT events show up in present so LMT to me strikes me as something that uh definitely should be in review tool boxes but this one for end users uh since it'll be in software yeah is more approachable yeah totally so think that frame view does some kind of PC latency metric well actually I know it does a PC latency I'm not very familiar with frame view uh we don't use it here but um so there's a couple tools there's frame view that does something I'm not familiar with there's click to Photon through present mon 2 now I guess which is in beta right now it's just with a few key press okay but we'll be making a a public release in the next month or so okay so stay through a little more QA get some feedback from you as long as it's all good we'll be going up on the web and so anyone who wants to follow that so you can download it and use it when it's ready we will probably do the update in Hardware news we normally use it through CLI there is an interface I know you want to show the inter I do want to show it I do want to show it so why don't we cut to that pull up the demo okay okay so we popped up present mon installed it on a test machine uh I'm just running super position here it was the quickest thing I had to launch and then this overlay you've blown up for presentation purposes it can be resized it can resize any any way you want wider smaller bigger sponsor changeable whole thing the the quick recap is is Tom kind of went through the present Monon interface which is over there we've got Boll will show of it you configured a set of charts in the overlay and now Tom can you walk me through kind of uh what is this telling us now yeah and I mean I know you know but I do this is something we we didn't spend a ton of time on last time because we're so focused on GP busy and this is something that an end user can actually do so I think it's useful well the way to think about it is I've got two clusters I set up here one is sort of a CPU image the other one is sort of gpy on the CPU side I've got frame time CPU busy and CPU weight now if you look at it you can see the red is busy and the green is weight normally you don't want you want some weight on the CPU if you're trying to say not bottleneck your GPU so in this case I've got uh you know about 3 milliseconds or 4 milliseconds busy and about 2 milliseconds waiting which is actually probably pretty good it means that the CPU did all it work had a little bit of head time hung out a little bit now if you look down on the GPU you can see I've got uh frame time set up GPU busy GPU we and here you see wow my my GPU is busy 5.5 milliseconds out of 5.7 so it's basically picked right and so very quickly you know okay if I want my frames higher than 170 I need to lower my GPU settings my CPU is just fine right I think that's a that's a good way to relate it back where uh if I don't know I I'm sure a lot of lot of people do this in the competitive scene but if you're someone who's targeting a certain frame rate or just a really high frame rate and you're struggling to figure out which settings to drop yeah this is the way to do it that would be an easier way right another cool thing is now that you've got these things set up you can also see some Telemetry so this is coming directly from the GPU and your CPU and your system you can see the power is running about 163 Watts which is pretty high your GPU is pretty cool at 60c and you can see the utilization is kind of 100% then a little bit lower than 100% so it's it's doing pretty good this is actually 98 so it's like you know bubbling up near the top and the scale can be adjusted in the software too yeah you can turn off the auto scale so I think it's a pretty easy thing to do of course it captures as well so there's a little hot key to do captures and you can adjust uh you know exactly how much updating you want to do there's histograms it's pretty uh full feature I want to ask uh overhead so one of the there's other reasons too but one of the main reasons we use command prompts for all of our capture tools is minimizer overhead right so do you Happ off top of your head like what the impact is when you run a capture on this we turn off the overlay so there's no impact uh that we've been able to measure for capturing with the tool installed of the overlay versus the script because it's basically the same thing and there's I I would assume there's a at least a little bit of overhead with just present mod in general there is a tiny tiny bit but there's yeah I mean there's not really it's not perceptible we've correlated fraps present Monon frame View and a lot of derivative tools and they all get about the same yeah okay my guys know I love histograms okay so nowhere else this is the only place hisr so like let's got some variation to it how about how about we do uh Power right so GP power is fluctuating so instead of a graph you say I want to do o oh I don't want to do average why can I do a histogram uh oh huh the development team this because I got two of them all back okay so let's get rid of let's get rid of temperature real quick oh please work I don't want to ruin Ray's day yeah so graph oh you know what it is I say graph and then instead of line you say histogram okay that was close I was worried we just cost him his job yes so check it out histogram guys no more no histogram guys gone so how many bins you can configure your histogram your autoscaler so let's do a few few less bins and now you can see kind of a distribution over time of power right that's actually the right view for these high variance things and you want to look at it over time and you can percentiles we're adding I hope we're adding a capability to plot multiple different uh variables on the same histogram be pretty cool it's interesting too to see this this pattern where it's the game or the engine or whatever is doing something I guess well again but you're at 96 to 100 so I suspect that some oh scale okay yeah it's Auto scaling so it's very little but still you know substantial I think I think you know to me the tool helps give that next click down into what's going on between CPU and GPU balance so I I think there's work work to be done here you know if if people are using this they have ideas you know put them in your chat we'll we'll read it right you know there's lots of stuff to be done um a stack graph I think is going to be very useful here um and yeah we we're going to keep working on it cool so uh there is going to be a beta soon if not already it it should be out soon okay even. intel.com or something but there's also a GitHub repository that has all the builds so if you just Google get um uh present mon you'll get there yeah cool so check it out if you haven't uh like I said this present mon we've been using for I don't know probably like I don't know when it came out years it's about 10 years it's about 10 years now uh it's command line the interface iteration kind of came out in the last I don't know a year or two year two and uh so check it out if you want to get some of the numbers that we get but uh as always Tom thank you for joining great to see you again yeah thanks for having me and check out the other videos we'll see you all next time\n"