Memory ping pong in host between cpu cores
The ping pong test uses template for benchmark, enables testing of different pointer/value types, and different memory-synchronization policies.
The output contains the name of the types and how many nano-seconds Round Trip Time to the other core and back.
Example output:
$ ./mpp 3 4
[with T = volatile long unsigned int*; CFP = Flush; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 137.619 min: 63 max: 492043 med: 100 stddev: 1157.83 50%: 100 90%: 193 99%: 477 99.9%: 634 99.99%: 11636
[with T = std::atomic<long unsigned int>*; CFP = Flush; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 128.058 min: 28 max: 467087 med: 121 stddev: 1044.59 50%: 121 90%: 134 99%: 448 99.9%: 548 99.99%: 1960
[with T = volatile std::atomic<long unsigned int>*; CFP = Flush; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 132.164 min: 60 max: 384171 med: 126 stddev: 1002.42 50%: 126 90%: 131 99%: 455 99.9%: 490 99.99%: 2007
[with T = volatile long unsigned int*; CFP = NOP; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 106.732 min: 76 max: 433488 med: 103 stddev: 1018.55 50%: 103 90%: 109 99%: 114 99.9%: 151 99.99%: 1745
[with T = std::atomic<long unsigned int>*; CFP = NOP; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 103.291 min: 67 max: 420284 med: 100 stddev: 867.312 50%: 100 90%: 106 99%: 115 99.9%: 147 99.99%: 1529
[with T = volatile std::atomic<long unsigned int>*; CFP = NOP; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 108.42 min: 61 max: 434583 med: 105 stddev: 1040.04 50%: 105 90%: 107 99%: 133 99.9%: 158 99.99%: 1523
[with T = volatile long unsigned int*; CFP = MFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 109.182 min: 53 max: 446708 med: 106 stddev: 910.449 50%: 106 90%: 110 99%: 115 99.9%: 153 99.99%: 1665
[with T = std::atomic<long unsigned int>*; CFP = MFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 111.005 min: 43 max: 427068 med: 107 stddev: 1011.62 50%: 107 90%: 114 99%: 137 99.9%: 161 99.99%: 1673
[with T = volatile std::atomic<long unsigned int>*; CFP = MFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 114.065 min: 41 max: 383801 med: 107 stddev: 966.855 50%: 107 90%: 113 99%: 141 99.9%: 236 99.99%: 17507
[with T = volatile long unsigned int*; CFP = SFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 111.355 min: 76 max: 386910 med: 107 stddev: 935.584 50%: 107 90%: 116 99%: 122 99.9%: 215 99.99%: 1808
[with T = std::atomic<long unsigned int>*; CFP = SFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 105.027 min: 67 max: 438478 med: 100 stddev: 1022.14 50%: 100 90%: 108 99%: 128 99.9%: 172 99.99%: 1537
[with T = volatile std::atomic<long unsigned int>*; CFP = SFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 102.877 min: 67 max: 443550 med: 100 stddev: 955.72 50%: 100 90%: 105 99%: 112 99.9%: 144 99.99%: 1535
and with distograms
$ ./mpp -h 3 4
[with T = volatile long unsigned int*; CFP = Flush; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 142.247 min: 73 max: 774488 med: 112 stddev: 1321.13 50%: 112 90%: 188 99%: 466 99.9%: 610 99.99%: 1992
hmin: 75 hmax: 6575 bin width: 130 ediff: 0
0 [ 75 - 205 ): 914033 91.4033% 91.403
1 [ 205 - 335 ): 32205 3.2205% 94.624
2 [ 335 - 465 ): 43656 4.3656% 98.989
3 [ 465 - 595 ): 8852 0.8852% 99.875
4 [ 595 - 725 ): 828 0.0828% 99.957
5 [ 725 - 855 ): 163 0.0163% 99.974
6 [ 855 - 985 ): 49 0.0049% 99.979
7 [ 985 - 1115 ): 20 0.0020% 99.981
8 [ 1115 - 1245 ): 11 0.0011% 99.982
9 [ 1245 - 1375 ): 11 0.0011% 99.983
10 [ 1375 - 1505 ): 4 0.0004% 99.983
11 [ 1505 - 1635 ): 4 0.0004% 99.984
12 [ 1635 - 1765 ): 26 0.0026% 99.986
13 [ 1765 - 1895 ): 28 0.0028% 99.989
14 [ 1895 - 2025 ): 16 0.0016% 99.991
15 [ 2025 - 2155 ): 11 0.0011% 99.992
16 [ 2155 - 2285 ): 5 0.0005% 99.992
17 [ 2285 - 2415 ): 1 0.0001% 99.992
19 [ 2545 - 2675 ): 2 0.0002% 99.992
21 [ 2805 - 2935 ): 2 0.0002% 99.993
22 [ 2935 - 3065 ): 3 0.0003% 99.993
23 [ 3065 - 3195 ): 1 0.0001% 99.993
24 [ 3195 - 3325 ): 1 0.0001% 99.993
25 [ 3325 - 3455 ): 1 0.0001% 99.993
27 [ 3585 - 3715 ): 1 0.0001% 99.993
28 [ 3715 - 3845 ): 2 0.0002% 99.994
29 [ 3845 - 3975 ): 4 0.0004% 99.994
31 [ 4105 - 4235 ): 2 0.0002% 99.994
33 [ 4365 - 4495 ): 1 0.0001% 99.994
34 [ 4495 - 4625 ): 1 0.0001% 99.994
38 [ 5015 - 5145 ): 2 0.0002% 99.995
39 [ 5145 - 5275 ): 1 0.0001% 99.995
40 [ 5275 - 5405 ): 1 0.0001% 99.995
41 [ 5405 - 5535 ): 1 0.0001% 99.995
42 [ 5535 - 5665 ): 2 0.0002% 99.995
43 [ 5665 - 5795 ): 1 0.0001% 99.995
44 [ 5795 - 5925 ): 3 0.0003% 99.996
45 [ 5925 - 6055 ): 2 0.0002% 99.996
46 [ 6055 - 6185 ): 2 0.0002% 99.996
47 [ 6185 - 6315 ): 1 0.0001% 99.996
48 [ 6315 - 6445 ): 1 0.0001% 99.996
49 [ 6445 - 6575 ): 39 0.0039% 100.000
[with T = std::atomic<long unsigned int>*; CFP = Flush; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 135.204 min: 28 max: 395306 med: 126 stddev: 1074.04 50%: 126 90%: 144 99%: 452 99.9%: 503 99.99%: 1738
hmin: 28 hmax: 5528 bin width: 110 ediff: 0
0 [ 28 - 138 ): 878755 87.8755% 87.876
1 [ 138 - 248 ): 100232 10.0232% 97.899
2 [ 248 - 358 ): 2614 0.2614% 98.160
3 [ 358 - 468 ): 15161 1.5161% 99.676
4 [ 468 - 578 ): 2782 0.2782% 99.954
5 [ 578 - 688 ): 208 0.0208% 99.975
6 [ 688 - 798 ): 60 0.0060% 99.981
7 [ 798 - 908 ): 12 0.0012% 99.982
8 [ 908 - 1018 ): 6 0.0006% 99.983
9 [ 1018 - 1128 ): 10 0.0010% 99.984
10 [ 1128 - 1238 ): 2 0.0002% 99.984
11 [ 1238 - 1348 ): 3 0.0003% 99.984
12 [ 1348 - 1458 ): 4 0.0004% 99.985
13 [ 1458 - 1568 ): 13 0.0013% 99.986
14 [ 1568 - 1678 ): 27 0.0027% 99.989
15 [ 1678 - 1788 ): 14 0.0014% 99.990
16 [ 1788 - 1898 ): 9 0.0009% 99.991
17 [ 1898 - 2008 ): 12 0.0012% 99.992
18 [ 2008 - 2118 ): 3 0.0003% 99.993
19 [ 2118 - 2228 ): 3 0.0003% 99.993
20 [ 2228 - 2338 ): 3 0.0003% 99.993
21 [ 2338 - 2448 ): 1 0.0001% 99.993
22 [ 2448 - 2558 ): 2 0.0002% 99.994
23 [ 2558 - 2668 ): 3 0.0003% 99.994
24 [ 2668 - 2778 ): 3 0.0003% 99.994
25 [ 2778 - 2888 ): 2 0.0002% 99.994
26 [ 2888 - 2998 ): 2 0.0002% 99.995
27 [ 2998 - 3108 ): 2 0.0002% 99.995
28 [ 3108 - 3218 ): 2 0.0002% 99.995
29 [ 3218 - 3328 ): 2 0.0002% 99.995
30 [ 3328 - 3438 ): 4 0.0004% 99.996
31 [ 3438 - 3548 ): 1 0.0001% 99.996
32 [ 3548 - 3658 ): 5 0.0005% 99.996
35 [ 3878 - 3988 ): 2 0.0002% 99.996
37 [ 4098 - 4208 ): 1 0.0001% 99.997
38 [ 4208 - 4318 ): 1 0.0001% 99.997
39 [ 4318 - 4428 ): 2 0.0002% 99.997
42 [ 4648 - 4758 ): 1 0.0001% 99.997
43 [ 4758 - 4868 ): 1 0.0001% 99.997
44 [ 4868 - 4978 ): 1 0.0001% 99.997
45 [ 4978 - 5088 ): 2 0.0002% 99.997
47 [ 5198 - 5308 ): 2 0.0002% 99.998
48 [ 5308 - 5418 ): 1 0.0001% 99.998
49 [ 5418 - 5528 ): 24 0.0024% 100.000
[with T = volatile std::atomic<long unsigned int>*; CFP = Flush; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 126.323 min: 57 max: 379122 med: 111 stddev: 1084 50%: 111 90%: 124 99%: 433 99.9%: 544 99.99%: 16988
hmin: 55 hmax: 5555 bin width: 110 ediff: 0
0 [ 55 - 165 ): 975519 97.5519% 97.552
1 [ 165 - 275 ): 4271 0.4271% 97.979
2 [ 275 - 385 ): 2164 0.2164% 98.195
3 [ 385 - 495 ): 16591 1.6591% 99.854
4 [ 495 - 605 ): 711 0.0711% 99.926
5 [ 605 - 715 ): 240 0.0240% 99.950
6 [ 715 - 825 ): 102 0.0102% 99.960
7 [ 825 - 935 ): 61 0.0061% 99.966
8 [ 935 - 1045 ): 19 0.0019% 99.968
9 [ 1045 - 1155 ): 10 0.0010% 99.969
10 [ 1155 - 1265 ): 6 0.0006% 99.969
11 [ 1265 - 1375 ): 5 0.0005% 99.970
12 [ 1375 - 1485 ): 3 0.0003% 99.970
13 [ 1485 - 1595 ): 43 0.0043% 99.975
14 [ 1595 - 1705 ): 18 0.0018% 99.976
15 [ 1705 - 1815 ): 8 0.0008% 99.977
16 [ 1815 - 1925 ): 18 0.0018% 99.979
17 [ 1925 - 2035 ): 4 0.0004% 99.979
18 [ 2035 - 2145 ): 3 0.0003% 99.980
19 [ 2145 - 2255 ): 1 0.0001% 99.980
20 [ 2255 - 2365 ): 1 0.0001% 99.980
21 [ 2365 - 2475 ): 5 0.0005% 99.980
23 [ 2585 - 2695 ): 1 0.0001% 99.980
24 [ 2695 - 2805 ): 4 0.0004% 99.981
25 [ 2805 - 2915 ): 1 0.0001% 99.981
26 [ 2915 - 3025 ): 1 0.0001% 99.981
27 [ 3025 - 3135 ): 4 0.0004% 99.981
28 [ 3135 - 3245 ): 1 0.0001% 99.982
30 [ 3355 - 3465 ): 1 0.0001% 99.982
34 [ 3795 - 3905 ): 1 0.0001% 99.982
37 [ 4125 - 4235 ): 1 0.0001% 99.982
38 [ 4235 - 4345 ): 1 0.0001% 99.982
43 [ 4785 - 4895 ): 1 0.0001% 99.982
46 [ 5115 - 5225 ): 1 0.0001% 99.982
49 [ 5445 - 5555 ): 179 0.0179% 100.000
[with T = volatile long unsigned int*; CFP = NOP; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 116.729 min: 74 max: 401941 med: 110 stddev: 1027.87 50%: 110 90%: 114 99%: 122 99.9%: 182 99.99%: 17204
hmin: 75 hmax: 5325 bin width: 105 ediff: 0
0 [ 75 - 180 ): 998981 99.8981% 99.898
1 [ 180 - 285 ): 512 0.0512% 99.949
2 [ 285 - 390 ): 178 0.0178% 99.967
3 [ 390 - 495 ): 22 0.0022% 99.969
4 [ 495 - 600 ): 10 0.0010% 99.970
5 [ 600 - 705 ): 5 0.0005% 99.971
6 [ 705 - 810 ): 3 0.0003% 99.971
7 [ 810 - 915 ): 2 0.0002% 99.971
8 [ 915 - 1020 ): 1 0.0001% 99.971
10 [ 1125 - 1230 ): 1 0.0001% 99.972
11 [ 1230 - 1335 ): 4 0.0004% 99.972
12 [ 1335 - 1440 ): 1 0.0001% 99.972
13 [ 1440 - 1545 ): 17 0.0017% 99.974
14 [ 1545 - 1650 ): 20 0.0020% 99.976
15 [ 1650 - 1755 ): 24 0.0024% 99.978
16 [ 1755 - 1860 ): 5 0.0005% 99.979
17 [ 1860 - 1965 ): 5 0.0005% 99.979
18 [ 1965 - 2070 ): 4 0.0004% 99.980
19 [ 2070 - 2175 ): 2 0.0002% 99.980
20 [ 2175 - 2280 ): 3 0.0003% 99.980
21 [ 2280 - 2385 ): 3 0.0003% 99.980
22 [ 2385 - 2490 ): 2 0.0002% 99.981
24 [ 2595 - 2700 ): 4 0.0004% 99.981
25 [ 2700 - 2805 ): 2 0.0002% 99.981
26 [ 2805 - 2910 ): 1 0.0001% 99.981
29 [ 3120 - 3225 ): 2 0.0002% 99.981
30 [ 3225 - 3330 ): 1 0.0001% 99.982
32 [ 3435 - 3540 ): 1 0.0001% 99.982
33 [ 3540 - 3645 ): 1 0.0001% 99.982
34 [ 3645 - 3750 ): 2 0.0002% 99.982
35 [ 3750 - 3855 ): 3 0.0003% 99.982
42 [ 4485 - 4590 ): 1 0.0001% 99.982
48 [ 5115 - 5220 ): 1 0.0001% 99.982
49 [ 5220 - 5325 ): 176 0.0176% 100.000
[with T = std::atomic<long unsigned int>*; CFP = NOP; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 109.245 min: 71 max: 403912 med: 105 stddev: 1012.7 50%: 105 90%: 109 99%: 120 99.9%: 168 99.99%: 1757
hmin: 70 hmax: 5070 bin width: 100 ediff: 0
0 [ 70 - 170 ): 999024 99.9024% 99.902
1 [ 170 - 270 ): 555 0.0555% 99.958
2 [ 270 - 370 ): 252 0.0252% 99.983
3 [ 370 - 470 ): 10 0.0010% 99.984
4 [ 470 - 570 ): 16 0.0016% 99.986
5 [ 570 - 670 ): 3 0.0003% 99.986
6 [ 670 - 770 ): 1 0.0001% 99.986
7 [ 770 - 870 ): 1 0.0001% 99.986
10 [ 1070 - 1170 ): 1 0.0001% 99.986
11 [ 1170 - 1270 ): 16 0.0016% 99.988
12 [ 1270 - 1370 ): 7 0.0007% 99.989
13 [ 1370 - 1470 ): 1 0.0001% 99.989
15 [ 1570 - 1670 ): 2 0.0002% 99.989
16 [ 1670 - 1770 ): 13 0.0013% 99.990
17 [ 1770 - 1870 ): 16 0.0016% 99.992
18 [ 1870 - 1970 ): 8 0.0008% 99.993
19 [ 1970 - 2070 ): 10 0.0010% 99.994
20 [ 2070 - 2170 ): 7 0.0007% 99.994
21 [ 2170 - 2270 ): 5 0.0005% 99.995
22 [ 2270 - 2370 ): 5 0.0005% 99.995
23 [ 2370 - 2470 ): 2 0.0002% 99.996
24 [ 2470 - 2570 ): 3 0.0003% 99.996
25 [ 2570 - 2670 ): 2 0.0002% 99.996
26 [ 2670 - 2770 ): 1 0.0001% 99.996
27 [ 2770 - 2870 ): 4 0.0004% 99.997
28 [ 2870 - 2970 ): 2 0.0002% 99.997
29 [ 2970 - 3070 ): 2 0.0002% 99.997
30 [ 3070 - 3170 ): 2 0.0002% 99.997
31 [ 3170 - 3270 ): 1 0.0001% 99.997
32 [ 3270 - 3370 ): 2 0.0002% 99.997
34 [ 3470 - 3570 ): 1 0.0001% 99.998
35 [ 3570 - 3670 ): 1 0.0001% 99.998
36 [ 3670 - 3770 ): 2 0.0002% 99.998
38 [ 3870 - 3970 ): 1 0.0001% 99.998
41 [ 4170 - 4270 ): 1 0.0001% 99.998
45 [ 4570 - 4670 ): 3 0.0003% 99.998
47 [ 4770 - 4870 ): 1 0.0001% 99.998
48 [ 4870 - 4970 ): 1 0.0001% 99.999
49 [ 4970 - 5070 ): 15 0.0015% 100.000
[with T = volatile std::atomic<long unsigned int>*; CFP = NOP; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 104.901 min: 59 max: 405603 med: 98 stddev: 966.692 50%: 98 90%: 103 99%: 126 99.9%: 174 99.99%: 16908
hmin: 60 hmax: 4810 bin width: 95 ediff: 0
0 [ 60 - 155 ): 998671 99.8671% 99.867
1 [ 155 - 250 ): 759 0.0759% 99.943
2 [ 250 - 345 ): 254 0.0254% 99.968
3 [ 345 - 440 ): 16 0.0016% 99.970
4 [ 440 - 535 ): 23 0.0023% 99.972
5 [ 535 - 630 ): 9 0.0009% 99.973
6 [ 630 - 725 ): 4 0.0004% 99.974
7 [ 725 - 820 ): 4 0.0004% 99.974
11 [ 1105 - 1200 ): 5 0.0005% 99.975
12 [ 1200 - 1295 ): 4 0.0004% 99.975
14 [ 1390 - 1485 ): 4 0.0004% 99.975
15 [ 1485 - 1580 ): 19 0.0019% 99.977
16 [ 1580 - 1675 ): 16 0.0016% 99.979
17 [ 1675 - 1770 ): 5 0.0005% 99.979
18 [ 1770 - 1865 ): 6 0.0006% 99.980
19 [ 1865 - 1960 ): 8 0.0008% 99.981
20 [ 1960 - 2055 ): 3 0.0003% 99.981
21 [ 2055 - 2150 ): 2 0.0002% 99.981
23 [ 2245 - 2340 ): 2 0.0002% 99.981
24 [ 2340 - 2435 ): 2 0.0002% 99.982
25 [ 2435 - 2530 ): 2 0.0002% 99.982
27 [ 2625 - 2720 ): 1 0.0001% 99.982
28 [ 2720 - 2815 ): 2 0.0002% 99.982
29 [ 2815 - 2910 ): 2 0.0002% 99.982
31 [ 3005 - 3100 ): 1 0.0001% 99.982
32 [ 3100 - 3195 ): 2 0.0002% 99.983
35 [ 3385 - 3480 ): 2 0.0002% 99.983
37 [ 3575 - 3670 ): 1 0.0001% 99.983
42 [ 4050 - 4145 ): 1 0.0001% 99.983
45 [ 4335 - 4430 ): 1 0.0001% 99.983
47 [ 4525 - 4620 ): 1 0.0001% 99.983
49 [ 4715 - 4810 ): 168 0.0168% 100.000
[with T = volatile long unsigned int*; CFP = MFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 107.366 min: 57 max: 387130 med: 100 stddev: 1035.15 50%: 100 90%: 105 99%: 112 99.9%: 156 99.99%: 17866
hmin: 55 hmax: 5305 bin width: 105 ediff: 0
0 [ 55 - 160 ): 999029 99.9029% 99.903
1 [ 160 - 265 ): 486 0.0486% 99.951
2 [ 265 - 370 ): 126 0.0126% 99.964
3 [ 370 - 475 ): 55 0.0055% 99.970
4 [ 475 - 580 ): 22 0.0022% 99.972
5 [ 580 - 685 ): 1 0.0001% 99.972
7 [ 790 - 895 ): 1 0.0001% 99.972
8 [ 895 - 1000 ): 3 0.0003% 99.972
10 [ 1105 - 1210 ): 2 0.0002% 99.973
11 [ 1210 - 1315 ): 2 0.0002% 99.973
12 [ 1315 - 1420 ): 1 0.0001% 99.973
13 [ 1420 - 1525 ): 19 0.0019% 99.975
14 [ 1525 - 1630 ): 21 0.0021% 99.977
15 [ 1630 - 1735 ): 15 0.0015% 99.978
16 [ 1735 - 1840 ): 9 0.0009% 99.979
17 [ 1840 - 1945 ): 4 0.0004% 99.980
18 [ 1945 - 2050 ): 1 0.0001% 99.980
19 [ 2050 - 2155 ): 2 0.0002% 99.980
21 [ 2260 - 2365 ): 1 0.0001% 99.980
23 [ 2470 - 2575 ): 1 0.0001% 99.980
24 [ 2575 - 2680 ): 1 0.0001% 99.980
25 [ 2680 - 2785 ): 1 0.0001% 99.980
28 [ 2995 - 3100 ): 1 0.0001% 99.980
29 [ 3100 - 3205 ): 1 0.0001% 99.981
30 [ 3205 - 3310 ): 1 0.0001% 99.981
33 [ 3520 - 3625 ): 1 0.0001% 99.981
35 [ 3730 - 3835 ): 1 0.0001% 99.981
36 [ 3835 - 3940 ): 1 0.0001% 99.981
38 [ 4045 - 4150 ): 1 0.0001% 99.981
41 [ 4360 - 4465 ): 3 0.0003% 99.981
43 [ 4570 - 4675 ): 1 0.0001% 99.981
44 [ 4675 - 4780 ): 2 0.0002% 99.982
49 [ 5200 - 5305 ): 184 0.0184% 100.000
[with T = std::atomic<long unsigned int>*; CFP = MFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 101.432 min: 42 max: 388772 med: 98 stddev: 999.903 50%: 98 90%: 106 99%: 123 99.9%: 145 99.99%: 1595
hmin: 40 hmax: 5040 bin width: 100 ediff: 0
0 [ 40 - 140 ): 997840 99.7840% 99.784
1 [ 140 - 240 ): 1865 0.1865% 99.971
2 [ 240 - 340 ): 119 0.0119% 99.982
3 [ 340 - 440 ): 28 0.0028% 99.985
4 [ 440 - 540 ): 32 0.0032% 99.988
5 [ 540 - 640 ): 4 0.0004% 99.989
6 [ 640 - 740 ): 3 0.0003% 99.989
8 [ 840 - 940 ): 1 0.0001% 99.989
10 [ 1040 - 1140 ): 1 0.0001% 99.989
11 [ 1140 - 1240 ): 4 0.0004% 99.990
12 [ 1240 - 1340 ): 1 0.0001% 99.990
13 [ 1340 - 1440 ): 1 0.0001% 99.990
15 [ 1540 - 1640 ): 3 0.0003% 99.990
16 [ 1640 - 1740 ): 19 0.0019% 99.992
17 [ 1740 - 1840 ): 17 0.0017% 99.994
18 [ 1840 - 1940 ): 12 0.0012% 99.995
19 [ 1940 - 2040 ): 8 0.0008% 99.996
20 [ 2040 - 2140 ): 6 0.0006% 99.996
22 [ 2240 - 2340 ): 1 0.0001% 99.997
23 [ 2340 - 2440 ): 1 0.0001% 99.997
24 [ 2440 - 2540 ): 1 0.0001% 99.997
25 [ 2540 - 2640 ): 1 0.0001% 99.997
28 [ 2840 - 2940 ): 2 0.0002% 99.997
29 [ 2940 - 3040 ): 3 0.0003% 99.997
33 [ 3340 - 3440 ): 4 0.0004% 99.998
34 [ 3440 - 3540 ): 1 0.0001% 99.998
40 [ 4040 - 4140 ): 4 0.0004% 99.998
44 [ 4440 - 4540 ): 1 0.0001% 99.998
46 [ 4640 - 4740 ): 1 0.0001% 99.998
49 [ 4940 - 5040 ): 16 0.0016% 100.000
[with T = volatile std::atomic<long unsigned int>*; CFP = MFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 103.222 min: 38 max: 435178 med: 98 stddev: 1049.13 50%: 98 90%: 105 99%: 117 99.9%: 156 99.99%: 17951
hmin: 38 hmax: 5288 bin width: 105 ediff: 0
0 [ 38 - 143 ): 998128 99.8128% 99.813
1 [ 143 - 248 ): 1410 0.1410% 99.954
2 [ 248 - 353 ): 128 0.0128% 99.967
3 [ 353 - 458 ): 42 0.0042% 99.971
4 [ 458 - 563 ): 20 0.0020% 99.973
5 [ 563 - 668 ): 7 0.0007% 99.973
6 [ 668 - 773 ): 3 0.0003% 99.974
7 [ 773 - 878 ): 2 0.0002% 99.974
8 [ 878 - 983 ): 2 0.0002% 99.974
9 [ 983 - 1088 ): 3 0.0003% 99.974
11 [ 1193 - 1298 ): 1 0.0001% 99.975
12 [ 1298 - 1403 ): 2 0.0002% 99.975
13 [ 1403 - 1508 ): 6 0.0006% 99.975
14 [ 1508 - 1613 ): 27 0.0027% 99.978
15 [ 1613 - 1718 ): 19 0.0019% 99.980
16 [ 1718 - 1823 ): 6 0.0006% 99.981
17 [ 1823 - 1928 ): 2 0.0002% 99.981
18 [ 1928 - 2033 ): 3 0.0003% 99.981
19 [ 2033 - 2138 ): 3 0.0003% 99.981
20 [ 2138 - 2243 ): 2 0.0002% 99.982
21 [ 2243 - 2348 ): 2 0.0002% 99.982
22 [ 2348 - 2453 ): 1 0.0001% 99.982
25 [ 2663 - 2768 ): 1 0.0001% 99.982
26 [ 2768 - 2873 ): 1 0.0001% 99.982
27 [ 2873 - 2978 ): 2 0.0002% 99.982
28 [ 2978 - 3083 ): 1 0.0001% 99.982
29 [ 3083 - 3188 ): 2 0.0002% 99.983
30 [ 3188 - 3293 ): 2 0.0002% 99.983
31 [ 3293 - 3398 ): 2 0.0002% 99.983
32 [ 3398 - 3503 ): 2 0.0002% 99.983
33 [ 3503 - 3608 ): 2 0.0002% 99.983
34 [ 3608 - 3713 ): 1 0.0001% 99.984
36 [ 3818 - 3923 ): 2 0.0002% 99.984
37 [ 3923 - 4028 ): 2 0.0002% 99.984
38 [ 4028 - 4133 ): 1 0.0001% 99.984
46 [ 4868 - 4973 ): 1 0.0001% 99.984
49 [ 5183 - 5288 ): 159 0.0159% 100.000
[with T = volatile long unsigned int*; CFP = SFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 110.343 min: 63 max: 407955 med: 106 stddev: 1009.46 50%: 106 90%: 113 99%: 118 99.9%: 159 99.99%: 1773
hmin: 65 hmax: 5065 bin width: 100 ediff: 0
0 [ 65 - 165 ): 999155 99.9155% 99.915
1 [ 165 - 265 ): 522 0.0522% 99.968
2 [ 265 - 365 ): 125 0.0125% 99.980
3 [ 365 - 465 ): 22 0.0022% 99.982
4 [ 465 - 565 ): 25 0.0025% 99.985
5 [ 565 - 665 ): 2 0.0002% 99.985
6 [ 665 - 765 ): 4 0.0004% 99.986
7 [ 765 - 865 ): 4 0.0004% 99.986
9 [ 965 - 1065 ): 4 0.0004% 99.986
10 [ 1065 - 1165 ): 1 0.0001% 99.986
11 [ 1165 - 1265 ): 16 0.0016% 99.988
13 [ 1365 - 1465 ): 1 0.0001% 99.988
14 [ 1465 - 1565 ): 1 0.0001% 99.988
15 [ 1565 - 1665 ): 3 0.0003% 99.989
16 [ 1665 - 1765 ): 12 0.0012% 99.990
17 [ 1765 - 1865 ): 28 0.0028% 99.992
18 [ 1865 - 1965 ): 13 0.0013% 99.994
19 [ 1965 - 2065 ): 13 0.0013% 99.995
20 [ 2065 - 2165 ): 3 0.0003% 99.995
21 [ 2165 - 2265 ): 5 0.0005% 99.996
22 [ 2265 - 2365 ): 3 0.0003% 99.996
23 [ 2365 - 2465 ): 3 0.0003% 99.996
24 [ 2465 - 2565 ): 1 0.0001% 99.997
25 [ 2565 - 2665 ): 1 0.0001% 99.997
27 [ 2765 - 2865 ): 2 0.0002% 99.997
28 [ 2865 - 2965 ): 1 0.0001% 99.997
29 [ 2965 - 3065 ): 3 0.0003% 99.997
30 [ 3065 - 3165 ): 1 0.0001% 99.997
31 [ 3165 - 3265 ): 1 0.0001% 99.998
32 [ 3265 - 3365 ): 1 0.0001% 99.998
33 [ 3365 - 3465 ): 5 0.0005% 99.998
41 [ 4165 - 4265 ): 1 0.0001% 99.998
46 [ 4665 - 4765 ): 1 0.0001% 99.998
47 [ 4765 - 4865 ): 1 0.0001% 99.998
48 [ 4865 - 4965 ): 1 0.0001% 99.999
49 [ 4965 - 5065 ): 15 0.0015% 100.000
[with T = std::atomic<long unsigned int>*; CFP = SFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 118.633 min: 67 max: 474589 med: 111 stddev: 1127.01 50%: 111 90%: 115 99%: 154 99.9%: 277 99.99%: 17073
hmin: 65 hmax: 5815 bin width: 115 ediff: 0
0 [ 65 - 180 ): 996717 99.6717% 99.672
1 [ 180 - 295 ): 2406 0.2406% 99.912
2 [ 295 - 410 ): 479 0.0479% 99.960
3 [ 410 - 525 ): 53 0.0053% 99.966
4 [ 525 - 640 ): 27 0.0027% 99.968
5 [ 640 - 755 ): 7 0.0007% 99.969
6 [ 755 - 870 ): 3 0.0003% 99.969
7 [ 870 - 985 ): 2 0.0002% 99.969
8 [ 985 - 1100 ): 4 0.0004% 99.970
9 [ 1100 - 1215 ): 6 0.0006% 99.970
10 [ 1215 - 1330 ): 18 0.0018% 99.972
11 [ 1330 - 1445 ): 2 0.0002% 99.972
14 [ 1675 - 1790 ): 9 0.0009% 99.973
15 [ 1790 - 1905 ): 15 0.0015% 99.975
16 [ 1905 - 2020 ): 5 0.0005% 99.975
17 [ 2020 - 2135 ): 6 0.0006% 99.976
18 [ 2135 - 2250 ): 10 0.0010% 99.977
19 [ 2250 - 2365 ): 9 0.0009% 99.978
20 [ 2365 - 2480 ): 13 0.0013% 99.979
21 [ 2480 - 2595 ): 5 0.0005% 99.980
22 [ 2595 - 2710 ): 4 0.0004% 99.980
23 [ 2710 - 2825 ): 7 0.0007% 99.981
24 [ 2825 - 2940 ): 2 0.0002% 99.981
25 [ 2940 - 3055 ): 1 0.0001% 99.981
26 [ 3055 - 3170 ): 2 0.0002% 99.981
27 [ 3170 - 3285 ): 1 0.0001% 99.981
28 [ 3285 - 3400 ): 1 0.0001% 99.981
29 [ 3400 - 3515 ): 3 0.0003% 99.982
31 [ 3630 - 3745 ): 1 0.0001% 99.982
32 [ 3745 - 3860 ): 2 0.0002% 99.982
33 [ 3860 - 3975 ): 2 0.0002% 99.982
34 [ 3975 - 4090 ): 1 0.0001% 99.982
36 [ 4205 - 4320 ): 1 0.0001% 99.982
39 [ 4550 - 4665 ): 1 0.0001% 99.983
40 [ 4665 - 4780 ): 1 0.0001% 99.983
49 [ 5700 - 5815 ): 174 0.0174% 100.000
[with T = volatile std::atomic<long unsigned int>*; CFP = SFence; LC = FixedLoopsCount<1000000>]
==>> [ns] avg: 113.49 min: 67 max: 496047 med: 106 stddev: 1006.12 50%: 106 90%: 111 99%: 138 99.9%: 190 99.99%: 16692
hmin: 65 hmax: 5065 bin width: 100 ediff: 0
0 [ 65 - 165 ): 998255 99.8255% 99.826
1 [ 165 - 265 ): 1176 0.1176% 99.943
2 [ 265 - 365 ): 243 0.0243% 99.967
3 [ 365 - 465 ): 20 0.0020% 99.969
4 [ 465 - 565 ): 26 0.0026% 99.972
5 [ 565 - 665 ): 5 0.0005% 99.972
6 [ 665 - 765 ): 6 0.0006% 99.973
7 [ 765 - 865 ): 2 0.0002% 99.973
8 [ 865 - 965 ): 2 0.0002% 99.974
9 [ 965 - 1065 ): 1 0.0001% 99.974
11 [ 1165 - 1265 ): 6 0.0006% 99.974
12 [ 1265 - 1365 ): 2 0.0002% 99.974
13 [ 1365 - 1465 ): 2 0.0002% 99.975
14 [ 1465 - 1565 ): 11 0.0011% 99.976
15 [ 1565 - 1665 ): 11 0.0011% 99.977
16 [ 1665 - 1765 ): 15 0.0015% 99.978
17 [ 1765 - 1865 ): 7 0.0007% 99.979
18 [ 1865 - 1965 ): 4 0.0004% 99.979
19 [ 1965 - 2065 ): 7 0.0007% 99.980
20 [ 2065 - 2165 ): 4 0.0004% 99.981
21 [ 2165 - 2265 ): 6 0.0006% 99.981
22 [ 2265 - 2365 ): 9 0.0009% 99.982
23 [ 2365 - 2465 ): 5 0.0005% 99.983
25 [ 2565 - 2665 ): 1 0.0001% 99.983
26 [ 2665 - 2765 ): 1 0.0001% 99.983
27 [ 2765 - 2865 ): 2 0.0002% 99.983
28 [ 2865 - 2965 ): 2 0.0002% 99.983
29 [ 2965 - 3065 ): 1 0.0001% 99.983
30 [ 3065 - 3165 ): 1 0.0001% 99.983
31 [ 3165 - 3265 ): 1 0.0001% 99.983
32 [ 3265 - 3365 ): 1 0.0001% 99.984
34 [ 3465 - 3565 ): 1 0.0001% 99.984
37 [ 3765 - 3865 ): 1 0.0001% 99.984
42 [ 4265 - 4365 ): 1 0.0001% 99.984
49 [ 4965 - 5065 ): 162 0.0162% 100.000