RealTemp plugin for RivaTuner

Discussion in 'Rivatuner Statistics Server (RTSS) Forum' started by burebista, Jan 19, 2009.

  1. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    RealTemp and the plugin use high performance timers within Intel Core based CPUs to calculate the load percentage. During testing, this method seems to respond quicker and more accurately than Task Manager does.

    If you run a single threaded task on a Quad core processor, that task gets scheduled and moved around from core to core approximately 300 times per second. I don't think the method that the Task Manager uses is fast enough to accurately monitor that. The only accurate way is to use the Intel high performance timers. They were specifically designed for this type of monitoring.

    When testing you need a very constant load on the CPU. I use Prime95 Small FFTs for this. Here's how my chart looks.

    [​IMG]

    On my Q6600 I started out using 1 thread of Prime Small FFTs, then 2, 3, 4, 0, 2 and then back to 1.

    The top overall load graph looks exactly what you would expect it to look like. The data for this overall graph comes from reading each individual core and then averaging those 4 values out. With the RivaTuner plugin, you can go to any spot on the graph and the 4 individual loads will always average out and exactly equal the total load. If this plugin was totally wrong, there's no way that the top graph would be so smooth and accurately reflecting the load being created by Prime95 when the individual load of each core is jumping around so rapidly.

    My opinion is that during rapid load transitions which is any time a CPU is partially loaded, the Task Manager method of calculating that load tends to over react to what's really going on inside an Intel CPU.

    It's impossible for the plugin to be 100% accurate during Prime testing but for this same method based on Intel's high performance timers to be totally wrong during your light load testing. Personally, I'd trust the plug-in before trusting Task Manager. The Task Manager method dates back quite a few years and is too slow to accurately reflect the true load on each core of a CPU.

    Here's the latest beta of RealTemp which includes the plugin for anyone that needs it:
    http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta.zip

    Edit: Try running 1 and then 2 threads of Prime95 Small FFTs to see how accurate the plugin looks on your computer.
     
    Last edited: May 15, 2009
  2. stangowner

    stangowner Guest

    Messages:
    607
    Likes Received:
    11
    GPU:
    2xMSI N550GTX-Ti Cy II OC
    Thanks for the prompt and thorough reply unclewebb.

    I don't trust the task manager to be 100% accurate. And would not have even mentioned it had the difference not been so drastic. But I've noticed it enough, that I figured I'd at least ask.

    I actually ran Prime95 prior to your reply trying to get additional info. I did not have enough time to run multiple tests, but I did run a Small FFT with 2 threads and got the following.

    [​IMG]

    I'll run some more tomorrow (and tonight on my Q9550) and let you know what I find.

    - Nick
     
  3. stangowner

    stangowner Guest

    Messages:
    607
    Likes Received:
    11
    GPU:
    2xMSI N550GTX-Ti Cy II OC
    Q9550 results seem to be fine

    [​IMG]

    Edit: But the E6300 still shaky when running 2. Any ideas what could be causing that? Could I have a hardware issue? Or something else interfering?

    [​IMG][​IMG]
     
    Last edited: May 15, 2009
  4. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    Prime95 Small FFTs runs at a low priority. It's possible that there is some background task on your E6300 machine that is using too much CPU time. Start up Task Manager and click on the Processes tab and then click on the CPU heading to organize your tasks by load. I'm a zealot when it comes to getting rid of useless background tasks. With Vista I turned off SuperFetch and some other stuff that might be wonderful in theory but I couldn't stand the constant hard drive thrashing that it does.

    Maybe I'll go try limiting my Quad to 2 cores and create some RivaTuner graphs for you to compare to.

    Edit: By using msconfig I was able to convert my Q6600 to a Dual Core. I also reduced my overclock back to default settings. It was sitting at idle at 266.67 X 6.0 ~ 1600 MHz for this screen shot. Not a lot of extra background activity going on. It sat mostly at a load of 0.2% on both cores.

    Edit: The screen shot shows that RealTemp is a hair quicker to respond to a change in load. Just pressing the Print Screen key on my keyboard got the load up to 0.5% in RealTemp. :)

    [​IMG]

    And here's how my fake E6300 looks running 2 threads and then 1 thread of Prime.
    At the 50% level there's not a lot of variation in the overall load number.

    [​IMG]
     
    Last edited: May 15, 2009

  5. stangowner

    stangowner Guest

    Messages:
    607
    Likes Received:
    11
    GPU:
    2xMSI N550GTX-Ti Cy II OC
    Thanks for the dedication trying to resolve this. We found the culprit.

    Here is the system at idle. You'll see the task manager still squawking, while RealTemp is quiet.

    [​IMG]

    It appears that the issue is the kernel. Here are some shots from the task manager and Process Explorer.

    [​IMG]
    [​IMG]
    [​IMG]

    I suppose I could have saved us both some time had I just been showing the kernel time in the task manager all along. It is hard to see the red - because it is covered by the green (meaning just about 100% of the activity is the kernel).

    [​IMG]

    To make a long story short, the issue is Symantec Endpoint Protection. Removing SEP eliminates the kernel cpu spiking.

    However, I suppose this also means that the task manager is displaying the kernel time in its numbers and RealTemp is not? I'm no cpu architect, but I assume the kernel is running in a protected area? These numbers are not included in the high performance timers? Normally the kernel should not be doing much, so no big deal, but if you know off the top of your head I wouldn't mind learning how the puzzle fits together.

    Thanks again for all your help.
     
    Last edited: May 16, 2009
  6. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    There's spyware out there that doesn't put as heavy a load on your system as Symantec Endpoint Protection does. :)
    Whatever it's protecting you from, there are much more efficient solutions available.

    My opinion is that when the load is rapidly cycling, the Task Manager based load calculation and graph has a tendency to over inflate the true load on the CPU.

    Based on Prime95 Small FFT testing, it sure looks to me that the plugin is very accurate. When you go back to the original graph you posted, Task Manager is showing a load way beyond what the plugin is showing.

    I think if you're reading the internal timers of the CPU that you're bypassing any operating system layers or variables and seeing the load exactly as it really is.

    I don't think you can hide anything from the internal high performance timers. It doesn't make any sense to me how these timers appear to be 100% accurate during Prime testing but for this same method to be wrong when the load is variable. If anything, the plugin should become more accurate during a variable load.

    These timers are moving at 3 billion cycles per second and were specifically designed to be used for high performance monitoring and measurement of the tiniest of details within Intel's CPUs.

    I guess you have to flip a coin to see what version of the truth seems more likely. Thanks for the interesting test. I'm glad you were able to find what's behind your CPU load spiking, however big those spikes really are.

    Edit: Some day in the near future I'm going to try to write a small app that loads the CPU randomly with short bursts of activity. That might finally give us a way to see what load measuring method is the most accurate. It's on my things to do list. :)
     
    Last edited: May 20, 2009
  7. pbcopter

    pbcopter Guest

    Messages:
    22
    Likes Received:
    0
    GPU:
    EVGA GTX 950 FTW 2GB
    I hope this is the right place to ask this. I just noticed that if I deselect the
    combined processor load (E8500 - load), both the E8500(0) - load and
    E8500(1) - load stop displaying and appear to freeze at the last value. I am using Rivatuner 2.24 and version 3.0.7.0 of the plug-in. I also tried the beta as well. Is this normal? Thank you.
     
  8. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    Thanks for finding that bug. I'll have a look at that problem and find a solution for it ASAP.
     
  9. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    That was an oversight I guess. The individual load meters depended on the overall load meter to be running or else they'd flat line like a dead man!

    Thanks for bringing that to my attention. It doesn't take me too long to fix things once I find out about them. You can download the fixed version here:

    http://www.fileden.com/files/2008/3/3/1794507/RTCore.zip

    Copy the RTCore.dll file to the

    C:\Program Files\RivaTuner\PlugIns\Monitoring

    folder and over write the previous version.

    Let me know if you have any problems. If you do a Properties on the new version it should show up as version 3.2.0.1
     
  10. pbcopter

    pbcopter Guest

    Messages:
    22
    Likes Received:
    0
    GPU:
    EVGA GTX 950 FTW 2GB
    Thank you, that worked great. Sorry I didn't get to it until today.

    Paul
     

  11. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    I looked into this issue some more and you are 100% correct. RealTemp and the plugin were ignoring when the CPU was executing code at the ring 0 level which the operating system and device drivers do a lot of.

    So far I've changed RealTemp to include these CPU cycles and the plugin will be updated too in the next day or so.

    Here's where you can download the latest version of RealTemp:

    http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta_330.zip

    If you run RealTemp 3.30 and the plugin at the same time, it should automatically start using the updated code for the plugin as well. It just switches the internal timers to include ring 0 code as well. When the plugin gets updated, you won't need to run RealTemp.

    Edit: Here's another little tool I've been working on. It's called i7 Turbo.

    http://www.fileden.com/files/2008/3/3/1794507/Turbo.zip

    Edit: And this simple load testing tool made it obvious that RealTemp and the plugin used to miss code executing at the ring 0 level.

    http://www.fileden.com/files/2008/3/3/1794507/LoadTester.zip

    Start and stop i7 Turbo or RealTemp 3.30 while the plugin is running and let LoadTester run at full load and you will see the difference in reported load.

    If both i7 Turbo and RealTemp 3.30 are stopped, the plugin will not include ring 0 code and if you start either i7 Turbo or RealTemp 3.30, the plugin will include ring 0 code. Very interesting.
     
    Last edited: Jun 12, 2009
  12. stangowner

    stangowner Guest

    Messages:
    607
    Likes Received:
    11
    GPU:
    2xMSI N550GTX-Ti Cy II OC
    Hi Unclewebb,

    Thanks again for following up. Glad to hear I was not loosing my mind.

    To give you a few updates from my side. It is a corporate environment at work. So AV/AS is installed by policy at system startup. The latest versions of SEP are "supposed" to have the same performance improvements that made it into NIS 2009 and Norton 360v3. We have deployed about 600 hundred clients so far (mostly XP, but a few Vista/2003). Apparently I am the only one with the issue - at least of the bunch we tested! Go figure. I am an admin & developer, so I do have tons of crap on this system. So I'm not going to rebuild it just to troubleshoot what is causing the conflict with SEP. I do have a support case open with Symantec, but they do not seem to know anything neither.

    Anyways, I'll try looking into this more later - including the i7 Turbo tool. But I did take a quick peek at the new beta. It is definitely registering a lot more activity. I did notice two things that seems out of place though. First, the plugin for RT keeps changing the frequency between 1596 and 1862. But RealTemp holds a steady 1862. This happens with RealTemp running or not. Secondly, you'll notice that they never drop below 5%. This is only when I also have RealTemp running. Once I close that, they drop to the bottom grid line again. Or is this related to the ring 0 code you are mentioning in the bottom line?

    [​IMG]

    And here is a hardware log in case you want to open for details.

    - Nick
     
  13. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    http://www.fileden.com/files/2008/3/3/1794507/RealTempBeta_330.zip

    I updated the plugin today. If you download the above link you should end up with RealTemp 3.30 RC4 which includes the new plugin version. With Firefox, sometimes you have to clear your cache so you get the newest version. The RTCore.dll has a version number of 3.2.9.0 which gives me some room to fix any problems before I bump it up to 3.3.0.0 when RealTemp 3.30 is finalized.

    Back on May 29th on the previous page it was brought to my attention that the individual load graphs do not work unless the main load graph is also being displayed. My fix for that problem only caused more issues so I've gone back to the original way.

    You end up with more accurate data when sampling the timers once per second rather than multiple times a second. For individual loads to be reported, the main load graph has to be working too.

    Try using the INI option in RealTemp,
    AverageMulti=1

    This will use data from the internal timers and is the most accurate way to calculate the multiplier. When the MHz in the plugin are switching back and forth between 2 numbers it is because your multiplier is switching back and forth between 6 and 7. When the plugin is finalized, I will include an INI option so you can use the Calculated Multiplier in the plugin too. Core i7 CPUs default to the Calculated Multiplier.

    At the moment, the plugin reads the multiplier from a Model Specific Register (MSR) within the CPU and there is no perfect way to do this. It gives you a snapshot at that particular instant but doesn't always accurately represent the true multiplier. This is how most, if not all, software reads the multiplier.

    If you read this register without any delay, the CPU will likely report on the high side and show it is at the maximum multiplier even if most of the time it has been at the lower multiplier. If you put a brief 1 millisecond delay into the program before reading the multiplier, the CPU will settle down but can end up reporting too low of a multiplier. There's no happy medium.

    The most accurate way is the Calculated Multiplier which Intel recommends. Try out the i7 Turbo program and you might see the difference between these two methods of determining the multiplier. There is an INI option in i7 Turbo so you can adjust the amount of delay from 1 ms to 10 ms before reading the multiplier to play around with this.

    It will be interesting to see how the new plugin stacks up against the Task Manager and other programs that display the load now that the plugin includes all code executing at the ring 0 privilege level.
     
    Last edited: Jun 12, 2009
  14. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    RTCore.dll Version 3.2.9.2

    http://www.fileden.com/files/2008/3/3/1794507/RTCore.zip

    Here's the latest version of the RealTemp plugin for RivaTuner.

    I switched the Frequency reporting to use the Calculated Multiplier by default. This is the most accurate way to report the multiplier as recommend by Intel. When RealTemp is using the AverageMulti=1 INI switch, RealTemp and the plugin should report the same frequency, regardless of the load.

    I also added Battery Level monitoring for laptop owners and a graph for whether you are on AC power or on battery power. Stefan asked for this feature so he would have better control of his laptop. If anyone with an AMD CPU needs these last two features then I'll write a new dll for them. Just ask. :)
     
  15. stangowner

    stangowner Guest

    Messages:
    607
    Likes Received:
    11
    GPU:
    2xMSI N550GTX-Ti Cy II OC
    Thanks for the update. I just played with it for a few at lunch.

    You'll see that it is near identical to the task manager now. This is at idle and then running 1,2,1 Small FFT threads. I no longer have the icicles at full load (100% - ring 0). And on 1 thread, it now resembles 50% plus the kernel spikes.

    [​IMG]

    Looks like you nailed it.

    I have not looked at the ini settings yet to resolve the frequency bouncing, but I'll do that when I get a chance.

    Thanks for all your hard work!

    BTW - I can see my battery and AC levels perfect. Its a desktop so its 0% and 1, but they're there.

    EDIT: I did not have my UPS cable connected - now showing 100% for battery :)

    - Nick
     
    Last edited: Jun 16, 2009

  16. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    I used to think that code running at the ring0 privilege level doesn't make up a very big percentage of CPU usage but obviously, sometimes, it makes up a much bigger percentage that I thought. I'm glad to see your graphs looking more realistic now.

    I had no idea that the new battery feature would work with a UPS. It was designed for laptops. Stefan contacted me the other day and needed this feature so he would have more control over his laptop. Powermizer was giving him a headache so he wanted to create his own power profiles based on whether his laptop was plugged in or not. RivaTuner to the rescue, with the help of the RealTemp plugin. :)

    I think the CPU multiplier should be very accurate with this latest release for your E6300. I still need to do some laptop testing though. With laptop cores going to sleep, I might be in for a surprise.
     
  17. stangowner

    stangowner Guest

    Messages:
    607
    Likes Received:
    11
    GPU:
    2xMSI N550GTX-Ti Cy II OC
    Yeah, it really shouldn't. It should look more like the activity in core1. However, core0 does have a nice EKG type look to it. Maybe its my PC's heartbeat :). The more I think about it, I'm leaning towards a hardware/driver issue. Maybe I'll do some more in depth troubleshooting one of these days. Anyways, you know where to find a troubled kernel if you need any testing :)

    That's pretty cool though. Why use something like PowerChute when you already have RivaTuner running anyways. Just schedule a trigger to shutdown at 20% battery. Nice perk!

    Isn't it fun having zillions of configs out there?

    Thanks again for all your help. Glad we could work all this out (except for the fact I still have a sick PC). I'll let you know how I make out with the multiplier.

    - Nick
     
  18. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    Stefan did some testing for me today with his P8400 laptop. The plugin MHz look pretty good to me. At idle, the multiplier should settle down to 6.0 but his computer was having trouble showing that. I think most of the problem was just background tasks running on his computer. It did show transitions and the multi jumped up to the correct 8.5 when loaded so I think it's OK.

    The Load meter does not work correctly on laptop CPUs that can enter suspended states. Time for some more testing.

    The battery part of the plugin has led to some useful features and possibilities. Too bad very few people will ever find out about it and be able to put these features to good use. I'll write about it in the updated RealTemp documentation but nobody ever reads that junk anyhow. :)
     
  19. unclewebb

    unclewebb Guest

    Messages:
    71
    Likes Received:
    0
    GPU:
    VAPOR-X HD5770 1GB
    RTCore.dll Version 3.2.9.8

    http://www.fileden.com/files/2008/3/3/1794507/RTCore.zip

    I separated the code so the graphs should all work independently now. You don't need to run the main Load meter anymore to see the individual load meters.

    I'm working with Stefan to try to get the load meter working better for mobile processors like his P8400. If the load meter seems too high for your CPU then tell me what model you have so I can have a look.

    Edit: The plug-in has been updated to:
    Version 3.2.9.8

    Always do a Properties check on the .dll file inside the download to make sure that you get the proper version. You might have to clear your browser's cache so it doesn't download a previous version.

    The load meter for mobile CPUs still displays large numbers but I believe what it is actually showing is how hard the one remaining active core has to work at idle since it is running at only 800 MHz internally (1600 MHz externally) while the second core isn't working at all since it is in a suspended sleep state. Show me a bizarre graph and I'll try to explain it.
     
    Last edited: Jun 24, 2009
  20. alxtorrentazos

    alxtorrentazos Guest

    Messages:
    236
    Likes Received:
    10
    GPU:
    ASUS 2060 OC
    Sorry to ask, but I saw in new coretemp version that phenom II cpu are now supported. Can we (AMD users) have a nice plugin for RivaTuner?
    TIA :)
     

Share This Page