What formula is used for calculation CPU mark, memory mark and disk mark?
Announcement
Collapse
No announcement yet.
Formula CPU mark, memory mark and disk mark
Collapse
X

For V8 of PerformanceTest the Formula for the PassMark rating, CPUMark and other mark values is (mostly) equivalent to Constant * Weighted Harmonic Mean:
Here is a simplified version.
PassMark Rating = 1.136147806 * SUM(Wi) / SUM(Wi/Xi)
Wi, Xi
2.521647162015860, CPU Rating
0.314592223502463, 2D Rating
0.396008883238004, 3D Rating
0.569124275370555, Memory Rating
0.599463310688817, Disk Rating
CPUMark = 1.791798549 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
1.61409490426413000, CPU  Integer Math
0.78030297980205800, CPU  Floating Point Math
0.00298791011878377, CPU  Prime Numbers
0.00425539632371741, CPU  Extended Instructions (SSE)
1.28673313314116000, CPU  Compression
0.17464523002838700, CPU  Encryption
0.06047953119557500, CPU  Physics
0.80170208150336800, CPU  Sorting
0.29768491953295500, CPU  Single Threaded
2D Graphics Mark = 2.885893591 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
0.04557724359985280, Graphics 2D  Simple Vectors
0.20274121794503000, Graphics 2D  Complex Vectors
0.26521461537446100, Graphics 2D  Fonts and Text
0.18918250000277200, Graphics 2D  Windows Interface
0.93260256411875300, Graphics 2D  Image Filters
0.75954294849425900, Graphics 2D  Image Rendering
0.03073076923530790, Graphics 2D  Direct 2D
3D Graphics Mark = 9.712167917 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
0.06452845600728730, Graphics 3D  DirectX 9 Simple
0.02817527844893020, Graphics 3D  DirectX 9 Complex
0.00944282812657065, Graphics 3D  DirectX 10
0.02299592705614300, Graphics 3D  DirectX 11
0.38967562748451200, Graphics 3D  DirectCompute
Memory Mark = 0.215741845 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
0.03880159638350440, Memory  Database Operations
12.85056023109620000, Memory  Read Cached
5.82830120721253000, Memory  Read Uncached
3.54541566674865000, Memory  Write
2.25598102304859000, Memory  Available RAM
0.00002063799167225, 1/Memory  Latency
7.92710544574625000, Memory  Threaded
These are Averages:
Disk Mark = 10.84951297 * Average(Xi)
Xi
Disk  Sequential Read
Disk  Sequential Write
Disk  Random Seek + RW
It isn't as straight forward as you might initially imagine however due to several factors.
 We wanted to keep some consistency with past releases.
 Not all tests can be run on all machines. Examples include not being able to run DirectX11 on XP machines. But we still wanted to be able to produce a benchmark number on XP machines, despite not being able to run all tests.
 Some tests can be run only in a degraded state on some machines. An example is not being able to run at full 1920x1080 screen resolution. Or not being able to turn on the desired level of antialiasing on old video cards. We penalize some results in cases like this.
 There is one result where smaller numbers are better (memory latency). So this required special handling.
 Some of the tests actually contain a bunch of subtests. Direct2D being an example. The combination of results from the subtests isn’t covered above.
 The formula above doesn’t cover the loading up (and scaling) of results from older versions of the software (e.g. V5, V6 & V7)
 Some tests are optional, like the CD test, depending on if you have CD drive and suitable media in the drive. But we wanted to allow a benchmark to be run on machines without a CD drive. So this needs to be handled.

For V9 here is the updated numbers;
PassMark Rating = 1.136147806 * SUM(Wi) / SUM(Wi/Xi)
Wi, Xi
2.521647162015860, CPU Rating
0.314592223502463, 2D Rating
0.396008883238004, 3D Rating
0.569124275370555, Memory Rating
0.599463310688817, Disk Rating
CPUMark = (1.791798549 * SUM(Wi)/SUM(Wi/Xi)) * 0.935
Overall CPU mark is scaled down 6.5% to bring it closer in line to V8 results
Wi, Xi
1.61409490426413000, CPU  Integer Math
0.78030297980205800, CPU  Floating Point Math
0.00298791011878377, CPU  Prime Numbers
0.00425539632371741, CPU  Extended Instructions (SSE)
1.28673313314116000, CPU  Compression
0.17464523002838700, CPU  Encryption
0.06047953119557500, CPU  Physics
0.80170208150336800, CPU  Sorting
0.29768491953295500, CPU  Single Threaded
2D Graphics Mark = 2.885893591 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
0.04557724359985280, Graphics 2D  Simple Vectors
0.20274121794503000, Graphics 2D  Complex Vectors
0.26521461537446100, Graphics 2D  Fonts and Text
0.18918250000277200, Graphics 2D  Windows Interface
0.93260256411875300, Graphics 2D  Image Filters
0.75954294849425900, Graphics 2D  Image Rendering
0.03073076923530790, Graphics 2D  Direct 2D
3D Graphics Mark = 11.26078383 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
0.02841011904870032, Graphics 3D  DirectX 9 Complex
0.01144654017856387, Graphics 3D  DirectX 10
0.01906127232111015, Graphics 3D  DirectX 11
0.00719999999942400, Graphics 3D  DirectX 12
0.37790089285839027, Graphics 3D  DirectCompute
Memory Mark = 0.215741845 * SUM(Wi)/SUM(Wi/Xi)
Wi, Xi
0.03880159638350440, Memory  Database Operations
12.85056023109620000, Memory  Read Cached
5.82830120721253000, Memory  Read Uncached
3.54541566674865000, Memory  Write
2.25598102304859000, Memory  Available RAM
0.00002063799167225, 1/Memory  Latency
7.92710544574625000, Memory  Threaded
These are Averages:
Disk Mark = 10.84951297 * Average(Xi)
Xi
Disk  Sequential Read
Disk  Sequential Write
Disk  Random Seek + RW
Comment

Any chance you could share how the formula above would turn a set of scores into an overall rating? I've always wanted to understand better how each variable contributes to the whole and while I'm good with excel I'm not familiar with the weighted harmonic mean calculations you cite (and haven't been successful finding an explanation online).
So for example I have a machine here with these scores:
CPU: 10185.8
2D: 812.1
3D: 4411
Memory: 2546
Disk: 4968
I'd love to make a spreadsheet that would show me how each of those turns into the overall score of 4678
Thanks for any tips and thanks for the great software!!
Comment

Per the help documentation:
The "PassMark Rating" is a combination of the CPU, 2D, 3D, Memory and Disk Ratings, the bigger the number, the faster the computer. The exact formula for this calculation is as follows.
1 / (((1 / (CPU Rating * 0.396566187)) + (1 / (2D Rating * 3.178718116)) + (1 / (3D Rating * 2.525195879)) + (1 / (Memory Rating * 1.757085479)) + (1 / (Disk Rating * 1.668158805)))/5)
In this formula each rating is weighted then inverted, the average of these values is taken and then inverted again. The formula gives higher weighting to the CPU and disk tests and lower weighting to the 2D and memory tests. This is done as the CPU performance and disk performance are generally more important when it comes to how fast the computer feels to the general user. The score is also calculated in such a way that a single extremely high value cannot significantly improve the final score. Conversely, a single low score can drag the score down significantly using this formula. All components in a system must be performing well in order for the final score to be high.
Code:Passmark Rating = 1 / (((1 / (10185.8 * 0.396566187)) + (1 / (812.1 * 3.178718116)) + (1 / (4411 * 2.525195879)) + (1 / (2546 * 1.757085479)) + (1 / (4968 * 1.668158805)))/5) = 4677.595655
Comment

For version 10 the updated numbers are;
Passmark Rating = 1 / (((1 / (CPU Mark * 0.396566187)) + (1 / (2D Mark * 3.178718116)) + (1 / (3D Mark * 2.525195879)) + (1 / (Memory Mark * 1.757085479)) + (1 / (Disk Mark * 1.668158805)))/5)
CPU Mark = 1 / AVERAGE ( test values ) * 1.65
Overall CPU mark is scaled up to be closer to PT9 result
1 / ( 0.149001983 * CPU Integer Math)
1 / ( 0.271311984 * CPU  Floating Point Math)
1 / ( 296.1871085 * CPU  Prime Numbers)
1 / (0.758484696 * CPU  Extended Instructions (SSE))
1 / (0.034970332 * CPU  Compression)
1 / (0.8766779 * CPU  Encryption)
1 / (17.81818182 * CPU  Physics)
1 / (0.392310713 * CPU  Sorting)
1 / (4.908772082 * CPU  Single Threaded)
2D Graphics Mark = 1 / AVERAGE ( test values )
1 / (60.25393099 * Graphics 2D  Simple Vectors)
1 / (3.649649659 * Graphics 2D  Fonts and Text)
1 / (15.78231555 * Graphics 2D  Windows Interface)
1 / (0.463690633 * Graphics 2D  Image Filters)
1 / (4.196513 * Graphics 2D  Image Rendering
1 / (15.802781340 * Graphics 2D  Direct 2D)
1 / (16.39344251 * Graphics 2D  PDF Rendering)
1 / (13 * Graphics 2D  Direct 2D  SVG)
3D Graphics Mark = 1 / AVERAGE (test values) * 2.35
Overall 3D mark is scaled up be closer to PT9 result
If no DX10 then 40% penalty is applied, if no DX11/DX12 a 20% penalty is applied
1 / (28.77991307 * Graphics 3D  DirectX 9 Complex)
1 / (44.43436155 * Graphics 3D  DirectX 10)
1 / (24.36318087 * Graphics 3D  DirectX 11)
1 / (95.96088498 * Graphics 3D  DirectX 12)
1 / (1.093968291 * Graphics 3D  DirectCompute)
Memory Mark = 1 / AVERAGE (test values)
1 / (2.5 * Memory  Database Operations)
1 / (0.077817619 * Memory  Read Cached)
1 / (0.171576582 * Memory  Read Uncached)
1 / (0.282054375 * Memory  Write)
1 / (0.44326614 * Memory  Available RAM)
1 / (48454.32714 * Memory  Latency)
1 / (0.126149451 * Memory  Threaded)
Disk Mark = Disk Mark * 14.2135
Overall Disk Mark is scaled up to be closer to PT9
Disk mark is a straight average unlike the inverse averages used for the other test
Disk Mark = (Sequential Read + Sequential Write + IOPS 32KQD20 + IOPS 4KQD1) / 4Last edited by Tim (PassMark); 04222021, 11:44 PM.
Comment

Hi Tim,
Thanks for your clarification.
The reason that I am asking that is because I couldn't get the CPU Mark value by substituting the values with the following formula:
CPUMark = 17698(This is what I am getting from running the test)
CPUMark = (1.791798549 * SUM(Wi)/SUM(Wi/Xi)) * 1.65SUM(Wi) = 321.39682W X W/X CPU  Integer Math 0.149001983 50246 0.000002965449648 CPU  Floating Point Math 0.271311984 29233 0.00000928101748 CPU  Prime Numbers 296.1871085 112.7 2.628102116 CPU  Extended Instructions (SSE) 0.758484696 14660 0.00005173838308 CPU  Compression 0.034970332 225767 0.0000001548956756 CPU  Encryption 0.8766779 14346 0.00006110957061 CPU  Physics 17.81818182 793 0.02246933395 CPU  Sorting 0.392310713 24411 0.00001607106276 CPU  Single Threaded 4.908772082 2605 0.001884365483 SUM 321.39682 2.652597136
SUM(Wi/Xi) = 2.652597136
CPUMark = 358.2146999(This is what I get from manual calculation)
Could you help on this?
Thanks,
Vincent
Comment

Hi Tim,
Sorry for the messy table.
Here is the clearer one.
W X W/X CPU  Integer Math 0.149001983 50246 0.000002965449648 CPU  Floating Point Math 0.271311984 29233 0.00000928101748 CPU  Prime Numbers 296.1871085 112.7 2.628102116 CPU  Extended Instructions (SSE) 0.758484696 14660 0.00005173838308 CPU  Compression 0.034970332 225767 0.0000001548956756 CPU  Encryption 0.8766779 14346 0.00006110957061 CPU  Physics 17.81818182 793 0.02246933395 CPU  Sorting 0.392310713 24411 0.00001607106276 CPU  Single Threaded 4.908772082 2605 0.001884365483 SUM 321.39682 2.652597136
Vincent
Comment

Sorry, there was a disconnect between the original formula values and the ones used internally I believe due to an attempt to make the forum formula slightly more readable, I have adjusted the value in the post. For example to calculate your CPU mark it is;
Code:X W 1 / (W * X) CPU  Integer Math 50246 0.149001983 0.000133569 CPU  Floating Point Math 29233 0.271311984 0.000126083 CPU  Prime Numbers 112.7 296.1871085 2.99578E05 CPU  Extended Instructions (SSE) 14660 0.758484696 8.9933E05 CPU  Compression 225767 0.034970332 0.00012666 CPU  Encryption 14346 0.8766779 7.95113E05 CPU  Physics 793 17.81818182 7.07723E05 CPU  Sorting 24411 0.392310713 0.00010442 CPU  Single Threaded 2605 4.908772082 7.82023E05 CPU Mark = 1 / AVERAGE( 1 / (W * X))) * 1.65 17697.33149
Comment
Comment