Error during calibration RRS feed

  • Question

  • When calibration starts it stops right away giving the following message:


    The monitor will turn off and change brightness. PLEASE DO NOT USE THE MOUSE, KEYBOARD, or other input devices. Starting calibration.

    Power usage monitoring is disabled during calibration.

    Phase 1: Preparing system (may take several minutes) ...

    Joulemeter error: Index was out of range. Must be non-negative and less than the size of the collection.
    Parameter name: index

    Error details:    at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
       at System.ThrowHelper.ThrowArgumentOutOfRangeException()
       at System.Collections.Generic.List`1.get_Item(Int32 index)
       at Microsoft.Research.Joulemeter.SystemLoader.SetDefaultLoadingOptions(PowerMeterFilter powerMeterFilter)
       at Microsoft.Research.Joulemeter.SystemLoader..ctor(List`1 resourcesToLoad, String profilesFolder, String loadDataFolder, PowerMeterFilter powerMeterFilter, IntPtr hWnd)
       at JoulemeterWebDownload.MainWindow.RunCalibration(Object meterSelectedIndex)

    Notes: Events . MachineInfos OK. PowerInfos . PowerModelCPUs . PowerModelMonitors . PowerModelSystems . PowerRequests . PowerWakeTimers . SystemMeasurements


    I'm running Windows 7 Professional x64 on a Asus 1215N. 

    Is there any way to correct this error?


    Friday, August 12, 2011 1:49 PM


All replies

  • same problem here...
    Friday, August 19, 2011 3:07 PM
  • the same issue……could anyone share an approach to fix it?
    Monday, August 22, 2011 11:35 AM
  • This is a known issue: http://social.microsoft.com/Forums/en-US/joulemeter/thread/fb7946f9-159e-4e03-b4b4-3348d3069fa8 

    Happens due to some laptops' firmware not reporting CPU frequency correctly. Will fix in next release.


    A manual fix is:


    1. Go to the Joulemeter app data folder, which is typically C:\Users\<YOUR LOGIN NAME>\AppData\Local\Microsoft Research\Joulemeter 1.1\, but could be slightly different based on which drive your OS is installed on.

    2. In a text editor, open the file loadchar.xml which would have been created the first time you ran Joulemeter and got the error in the post above.

    3. Find the line that looks like <PStateFrequencies>. Here you would need to manually add at least one frequency (in MHz) used by your CPU. For instance, if you know that your CPU has a frequency 2794 MHz, then edit this line to look like:


    If you do not know what frequency value to use in the above line, go to the Windows Start button, type "perfmon" in the search box, start the program perfmon.exe. In the left pane, select "Performance Monitor" Then click the green plus sign in the top bar that appears above the graph. In the popup window that opens, in the left pane top list, scroll to "Processor Information" and expand it. The scroll to "Processor Frequency". Sometimes "Processor Frequency may appear under "Processor Performance" instead of "Processor Information". Click on "Processor Frequency" once to select it. The the left bottom panel, select "<All Instances>". Click the "Add >>" button below the list. Then click OK. Now in the list of counters below the graph, you will see a counter named "Processor Frequency" and if you select it, the column labelled Last just below the graph will show its recent value. Thats the CPU frequency being used now. This value may be used in the <PStateFrequencies> line mentioned above. Ignore the part of the value after the decimal.

    4. Find the line <FreqExecTimes /> and change it to look like:


    The above is assuming 4 cores and hence <int>130</int> is repeated 4 times. If your PC has more or less cores then <int>130</int> should be repeated that many times.

    5. Now run calibration again from the Joulemeter program as before.


    Note 1: The manual fix will cause Joulemeter to think that the CPU has only one frequency and hence calibration will be performed only for that frequency. The energy estimate will hence be incorrect when the CPU swtches to other frequencies. If you know what additional frequencies your CPU has, such as when you run some heavy program with the perfmon program running and see other frequency values as well, you can add them all to the <PStateFrequencies> line as follows:


    Also, in this case, <FreqExecTimes> should have corresponding entries.




    Note 2: When manually editing the loadchar.xml file, make sure to not accidentally change anything else. You may wish to keep a copy of the original loadchar.xml file should something get editted accidentally and you wish to start from step 1. If you delete loadchar.xml, you can create it again by running Joulemeter and waiting for the crash.

    • Edited by A Kansal Tuesday, August 23, 2011 6:50 PM
    Monday, August 22, 2011 5:14 PM
  • Hi Aman,


    It still doesn't work~

    Tuesday, August 23, 2011 4:54 AM
  • Could you please post the exception, the contents of your loadchar.xml, and alo send your Joulemeter app data folder, C:\Users\<YOUR LOGIN NAME>\AppData\Local\Microsoft Research\Joulemeter 1.1\, (zipped) to jminfo@microsoft.com
    Tuesday, August 23, 2011 5:02 AM
  • A new version was just released, should fix this issue. Please see http://research.microsoft.com/en-us/downloads/fe9e10c5-5c5b-450c-a674-daf55565f794/default.aspx
    • Marked as answer by A Kansal Friday, September 30, 2011 7:28 PM
    Friday, September 30, 2011 7:27 PM
  • The latest version still has the same issue. I use an HP Pavilion dv7 with an Intel Centrino 2  CPU (Quad @2.00GHZ).

    One thing I noticed while looking through the loadchar.xml file, is that it seems Joulemeter did not detect correctly the number of cores my CPU has. There I found entries only for three cores out of the existing four.

    Then, it occurred to me that it might not detect them because Windows 7 turned off one of them, since not all of them are needed. Therefore, I chose to run a benchmark to stress my laptop and make sure all cores are used. Then I restarted the calibration and it finished without errors this time.

    Joulemeter was able to detect all four cores.

    However, its measurements did not seem realistic, since the calibration was done in "special" conditions. I hope this helps in figuring out how to make the calibration work on multi-core CPUs. Joulemeter is definitely an application with potential.

    Tuesday, January 3, 2012 2:02 PM