Skip to content

This change adds run-perf.sh script. The script runs all tools #207

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 3 commits into from

Conversation

Sashan
Copy link
Contributor

@Sashan Sashan commented Jun 20, 2024

for OpenSSL versions 1.1.1 3.0 and master. It collects average time each single tool took to run in 25 iterations. The script produces results/report.md.

@Sashan
Copy link
Contributor Author

Sashan commented Jun 20, 2024

Here is the sample output. I used a modified version of run-perf.sh to speed things up, which did just 2 iterations. The results are stored in results/report.md file which I just pasted here using xclip -i results/report.md

evp_fetch

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 N/A N/A .021801 .001414 .011801 0
2 2 N/A N/A .041203 0 .022601 0
4 2 N/A N/A .083805 .008124 .042803 .002828
8 2 N/A N/A .153009 .004690 .074804 .003741
16 2 N/A N/A .289018 .017204 .102006 .002000
32 2 N/A N/A .382424 .002828 .103206 .003162
64 2 N/A N/A .356422 .057131 .139408 .012083

randbytes

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 .118007 .002828 .100006 0 .064003 .005656
2 2 .232014 .005656 .194012 .002828 .112006 0
4 2 .454028 .002828 .392025 .039597 .202013 .002828
8 2 .782049 .002828 .684043 .005567 .288018 .011313
16 2 1.048065 .016970 1.008061 .277196 .290018 .014142
32 2 1.118071 .093338 1.166069 .240424 .366024 .008485
64 2 1.478089 .144253 2.690159 1.230443 .424026 0

handshake

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 141.608900 0 169.810650 .282913 155.009650 .848598
2 2 282.617650 .848598 339.221150 1.131441 11787.667700 16232.977402
4 2 561.835150 3.111481 676.242250 1.979969 618.038600 10.748730
8 2 1116.069800 13.577440 1344.083950 .565473 1231.476950 4.242994
16 2 2196.537350 8.485776 104612.373150 144185.022351 2429.951900 7.637318
32 2 4160.004543 .564710 5408.884385 250.778780 4693.983376 11.296270
64 2 8689.436305 1139.267392 9691.290306 94.586932 8795.334892 19.424184

sslnew

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 .210013 .031112 .224013 .011313 .304019 .022627
2 2 .380024 .005656 .368023 .005656 .540033 .022627
4 2 .808051 .118793 .784048 .050911 1.148071 .147085
8 2 1.570098 .132943 1.496094 .016970 2.018126 .008485
16 2 3.114195 .155569 3.614226 .325287 3.904243 .243259
32 2 7.790485 .251741 7.924490 4.797318 5.970373 .008485
64 2 3.450216 .065053 8.894566 2.288327 8.206510 .449746

newrawkey

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 .012001 0 .410025 .019798 .216014 .005656
2 2 .018000 .002828 .772048 .130111 .422026 .002828
4 2 .016000 0 1.450090 .155569 .858053 .048083
8 2 .024003 0 3.172198 .158398 1.690105 .195171
16 2 .022001 .002828 4.898307 .019798 2.826178 .008485
32 2 .024001 0 8.204513 .203656 3.946246 .048083
64 2 .024001 0 17.117060 2.523096 6.136383 .718460

rsasign

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 5.160320 0 5.120320 0 5.220330 .028284
2 2 10.360640 0 10.300645 .028284 10.340655 .028284
4 2 20.341270 .141435 20.481280 .169729 20.581280 .084864
8 2 39.882505 .452568 40.262515 .254578 39.922495 .961714
16 2 72.364530 .395992 76.164760 1.980012 77.264830 1.046574
32 2 132.428260 2.630564 19589.322400 27500.561354 150.649470 12.502496
64 2 224.482250 .763607 286.206174 3.223460 250.175603 38.569949

x509storeissuer

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 .208013 0 1.504094 0 .236015 0
2 2 .412025 .005656 3.000187 .039597 .466028 .002828
4 2 .814051 .031112 5.984373 .033941 .892055 .005656
8 2 1.516094 .005656 12.036752 .277200 1.708108 .011313
16 2 2.912179 .316798 23.995499 .749578 3.056191 .022627
32 2 3.894245 .065053 1996.854903 2755.249867 4.588289 .684526
64 2 3.844241 .169711 85.677344 3.479165 7.090452 1.354891

providerdoall

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 N/A N/A .040005 0 0 0
2 2 N/A N/A 0 0 0 0
4 2 N/A N/A .020005 .028284 0 0
8 2 N/A N/A .040000 0 0 0
16 2 N/A N/A .040005 0 0 0
32 2 N/A N/A .040000 0 .020005 .028284
64 2 N/A N/A .039987 0 .019993 .028248

rwlocks-rlock

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 0 0 0 0 0 0
2 2 .004000 0 .002000 .002828 .004000 0
4 2 0 0 0 0 0 0
8 2 0 0 .001333 .001414 .002667 0
16 2 .002000 .002828 .008000 .011313 .004000 0
32 2 .012000 .011313 .002000 .002828 .004000 0
64 2 .028001 .039597 .020001 .022627 .004000 0

rwlocks-wlock

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 0 0 0 0 0 0
2 2 0 0 .002000 .002828 0 0
4 2 0 0 0 0 0 0
8 2 0 0 0 0 0 0
16 2 0 0 .002000 .002828 .002000 .002828
32 2 .002000 .002828 0 0 0 0
64 2 .002000 .002828 .004000 0 .020001 .028284

pkeyread-dh-der

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 235.014750 3.677167 243.015200 .848669 238.814950 2.828639
2 2 470.829500 .565685 481.230100 .565685 471.429500 1.414354
4 2 936.858500 1.697197 967.260450 1.697126 938.258550 1.979969
8 2 52966.356350 72262.692155 1913.719500 11.880101 1871.717050 2.828497
16 2 3669.029350 2.262812 105859.206550 144329.218252 92588.272000 125716.855735
32 2 7257.442342 35.301049 7444.155301 18.638857 7282.803464 6.778157
64 2 13892.587977 122.174652 14447.160927 122.175215 13960.068521 55.457003

pkeyread-dhx-der

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 44.202750 .282913 53.203300 .565685 45.602900 .565685
2 2 89.005550 .848598 106.406650 1.131441 90.605650 .848598
4 2 25323.107900 35534.513553 210.813250 1.131441 179.811250 .848598
8 2 358.822400 9.051532 409.625600 3.394253 355.022250 5.374365
16 2 675.642250 0 775.848500 9.334375 656.841100 .565826
32 2 1169.202525 33.606562 1454.364217 30.217378 1193.564946 7.625047
64 2 1546.673169 37.159277 2298.511295 309.941271 1614.750846 12.386683

pkeyread-dsa-der

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 45.002800 .282842 61.203800 1.131512 46.802900 0
2 2 89.605600 0 127.208000 1.131370 91.805750 .282771
4 2 177.411050 .848598 246.815450 1.131441 180.211300 5.940121
8 2 348.021650 1.696985 475.429650 .848740 358.222350 .282771
16 2 655.041050 6.506018 916.657300 3.677096 693.443350 .848598
32 2 1175.193241 5.365779 1651.860373 19.768562 1208.342352 12.708578
64 2 1577.327876 24.772875 3658.468998 1132.511242 1645.803642 40.537316

pkeyread-ec-der

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 2.000150 0 12.600750 .848598 3.200200 0
2 2 3.400200 .282842 25.201550 1.131441 5.600350 0
4 2 4.600250 .282771 45.802900 1.414354 8.800550 0
8 2 4.400250 .565614 88.405550 10.182974 8.800600 .565685
16 2 4.600250 .282913 144.409200 44.692259 10.200650 .283054
32 2 5.591454 .564781 178.126597 12.991533 15.176617 1.694768
64 2 5.971686 0 167.406847 17.171970 14.132961 .281208

pkeyread-rsa-der

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 .400000 0 12.400750 0 1.600100 0
2 2 .400050 0 26.801700 1.131370 2.800150 0
4 2 .400050 0 47.802950 .282913 18207.848850 25742.998277
8 2 .400000 0 85.405350 4.242994 4.200200 .282984
16 2 .400000 0 163.810250 5.940050 4.000200 0
32 2 .399411 0 156.159694 49.703408 4.992362 1.411883
64 2 .398139 0 176.165356 39.129788 4.976363 1.407387

pkeyread-x25519-der

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 4.800300 0 11.400700 .282842 5.400350 .282913
2 2 8.800550 0 22.801400 0 9.600600 0
4 2 14.600850 .848598 44.002800 0 18.401200 1.131512
8 2 20.801300 0 77.604950 3.394324 26.401600 0
16 2 20.401250 0 126.808000 29.417480 25.201550 1.131300
32 2 28.356280 1.129775 108.633187 5.083318 31.950879 2.259268
64 2 27.469844 1.126528 136.553194 .562912 37.223328 .844614

pkeyread-dh-pem

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 237.014800 .282842 278.217400 .282842 238.214900 .282842
2 2 468.229350 1.414284 559.034950 3.677167 478.029950 .565756
4 2 931.658250 19.800191 1111.669550 1.131441 954.659700 .282842
8 2 53017.571700 72419.979644 2191.736950 14.143054 1888.117950 3.960151
16 2 3697.431200 .565826 106520.627000 144427.906954 3709.031950 19.800333
32 2 7283.202825 63.259442 8571.222494 36.713145 202554.810603 276030.931597
64 2 14049.444715 43.915285 16447.086584 13.230665 14239.146298 64.465506

pkeyread-dhx-pem

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 45.602800 .565685 86.005400 .565685 47.203000 0
2 2 90.805700 0 173.810900 3.111411 93.805900 1.414354
4 2 176.211050 1.979969 338.421100 6.788649 186.411650 1.131441
8 2 346.221600 6.505665 682.642650 12.728699 361.222550 .565756
16 2 649.840650 32.528962 102770.964500 143482.264630 689.443150 .282630
32 2 1184.578924 .564852 2437.452626 7.342516 1180.185603 34.453947
64 2 1597.233678 8.445309 4441.758459 6.193377 1638.239400 25.898841

pkeyread-dsa-pem

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 6282.835050 8820.778298 87.005450 .848598 48.403000 0
2 2 89.805600 .282842 175.010950 .282771 95.605950 .565756
4 2 177.411050 .282771 341.221300 1.131512 187.611750 2.262812
8 2 347.821800 4.808750 689.043100 3.677096 374.623300 .282984
16 2 659.841300 17.820646 1324.882800 5.091451 698.643700 3.677379
32 2 1176.990565 11.296553 2465.609275 7.625047 1221.322334 3.388902
64 2 1595.442177 14.920178 4511.627388 22.238958 1660.931827 3.941022

pkeyread-ec-pem

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 2.000100 0 44.002700 .565685 4.400300 0
2 2 3.800250 .282771 91.405700 7.071492 8.200550 .282913
4 2 5.000250 .282771 180.611250 9.900131 13.800850 .282913
8 2 5.200300 0 334.020850 3.960151 19.801250 .848598
16 2 5.400350 .848598 649.040500 48.369073 20.401300 0
32 2 6.390076 .564923 1375.285493 335.218950 34.346745 11.296341
64 2 5.971686 0 1610.370770 79.947753 25.678393 .844262

pkeyread-rsa-pem

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 1.200050 0 43.202700 0 4.400250 0
2 2 1.800150 .282913 93.605850 6.788578 8.400500 .565826
4 2 1.600050 0 171.610700 .565685 14.400900 1.131370
8 2 2.200000 .282842 330.420600 3.960080 20.401250 0
16 2 2.400250 0 678.842500 92.212522 23.601400 4.525624
32 2 2.396266 0 1254.870856 71.166950 25.959814 0
64 2 2.388585 0 1541.497462 3.378109 27.469944 1.126388

pkeyread-x25519-pem

thread count numder of iterations openssl 1.1.1 per operation avg usec 1.1,1 std dev openssl 3.0.0 avg usec 3.0 std dev master usec master std dev
1 2 4.800300 0 45.202800 .565685 6.400400 0
2 2 9.000550 .282913 89.205600 0 12.000750 0
4 2 15.600900 1.697056 182.811350 7.354405 21.201350 .565756
8 2 21.201350 .565756 352.222000 13.294314 30.201900 1.980040
16 2 22.601400 .848669 641.440150 13.860212 32.002000 2.262883
32 2 27.956969 .564923 1180.185703 6.777946 39.938598 1.694486
64 2 27.868182 0 180248.799811 252578.275878 53.546079 10.415890

-----------

Script which collects performance stats by running all tools above. It tests
OpenSSL versions 1.1.1 3.0 and master.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about 3.1, 3.2, 3.3? Aren't we interested in those too? In particular we should be interested in master vs the latest released version (3.3) - so perhaps 1.1.1, 3.0, 3.3 and master are sufficient.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, so I will add 3.3 to the script.

perf/run-perf.sh Outdated
}

mkdir -p $RESULTS
rm -rf $RESULTS/*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yikes....better hope no one ever clears the RESULTS setting above or this could end badly. Should we sanity check $RESULTS?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think TMPDIR is the answer here.

perf/run-perf.sh Outdated
make
fi
popd
for THREADS in 1 2 4 8 16 32 64 ; do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if 64 is really a high enough thread count. Previously we've tested up to 500 or 1000

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm using what @nhorman put into his fist version of the script. The whole script is based on his work in fact.

IMO the thread count should be aligned with CPU-cores particular system has. This should be customized once script is deployed to test machines.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO the thread count should be aligned with CPU-cores particular system has. This should be customized once script is deployed to test machines.

It is interesting to see values for numbers of threads around the number of physical cores and number of hyperthreads. However it is also interesting to see the value for some much higher number of threads. Not sure we need to measure both 500 and 1000 as these numbers should not differ that much.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think running 1 or 2 powers of two above the highest number of cpus we reasonably expect a system to have makes the most sense. I think the perf system we have waiting for us has 96 cpus, so limiting to 128 or 256 is sensible

perf/run-perf.sh Outdated
echo "### $TOOL" >> $OUT
echo '' >> $OUT
# print table header
echo -n '|thread count| numder of iterations |' >> $OUT
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo: number

perf/run-perf.sh Outdated
Comment on lines 115 to 120
for TOOL in evp_fetch randbytes handshake sslnew newrawkey rsasign \
x509storeissuer providerdoall rwlocks-rlock rwlocks-wlock \
pkeyread-dh-der pkeyread-dhx-der pkeyread-dsa-der pkeyread-ec-der \
pkeyread-rsa-der pkeyread-x25519-der pkeyread-dh-pem pkeyread-dhx-pem \
pkeyread-dsa-pem pkeyread-ec-pem pkeyread-rsa-pem \
pkeyread-x25519-pem ; do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put the list of tools into a variable so you do not have to duplicate it below

perf/run-perf.sh Outdated
Comment on lines 194 to 199
for TOOL in evp_fetch randbytes handshake sslnew newrawkey rsasign \
x509storeissuer providerdoall rwlocks-rlock rwlocks-wlock \
pkeyread-dh-der pkeyread-dhx-der pkeyread-dsa-der pkeyread-ec-der \
pkeyread-rsa-der pkeyread-x25519-der pkeyread-dh-pem pkeyread-dhx-pem \
pkeyread-dsa-pem pkeyread-ec-pem pkeyread-rsa-pem \
pkeyread-x25519-pem ; do
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please avoid the duplication of the tools

perf/run-perf.sh Outdated
# https://www.openssl.org/source/license.html
#

set -x
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I usually use this for debugging, I'm not sure we need it on all the time

perf/run-perf.sh Outdated
make
fi
popd
for THREADS in 1 2 4 8 16 32 64 ; do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think running 1 or 2 powers of two above the highest number of cpus we reasonably expect a system to have makes the most sense. I think the perf system we have waiting for us has 96 cpus, so limiting to 128 or 256 is sensible

perf/run-perf.sh Outdated
for TOOL in evp_fetch randbytes handshake sslnew newrawkey rsasign \
x509storeissuer providerdoall rwlocks-rlock rwlocks-wlock \
pkeyread-dh-der pkeyread-dhx-der pkeyread-dsa-der pkeyread-ec-der \
pkeyread-rsa-der pkeyread-x25519-der pkeyread-dh-pem pkeyread-dhx-pem \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is the intent here to add scripts or something to represent utilties like pkeyread-dh-der? I ask because I don't see these utilities added anywhere. It would actually be reasonable to do as that would let us add scripts that set various options for the tool in different configurations. (handshake -s for example)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

those utilities were added as symlinks to pkeyread tool in PR here: #203
and similarly here for rwlocks: #205

@Sashan Sashan force-pushed the run-perf.sh branch 4 times, most recently from bde776f to 9dd36d5 Compare June 20, 2024 22:38
@Sashan
Copy link
Contributor Author

Sashan commented Jun 20, 2024

new version, ready for review. list of changes is as follows:

  • adding TOOLS, which defines list of tools to execute
  • adding VERSIONS which defines list of openssl versions to test (1.1.1, 3.0, 3.3 master)
  • adding THREAD_COUNTS which defines number of threads used for testing, I'm opting for @nhorman suggestion here and going for 1 2 4 8 16 32 64 128
    - table headers are no longer hardcoded by generated dynamically
    - using TMPDIR to hold interim results
    - run-perf.sh requires mandatory argument; filename where to save table with results
    - set -x is gone.

below is sample output. I used modified version for 8 and 128 threads using 2 iterations so I don't wait for ages.

evp_fetch

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 N/A N/A .153010 0 .071605 0 .074805 .003162
128 2 N/A N/A .466229 .020639 .138208 .001414 .151209 .011832

randbytes

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 .730045 .014142 .764049 .192343 .260016 .011313 .268017 .005656
128 2 1.981990 .687290 2.609988 .087692 .431998 .016970 .447997 .028284

handshake

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1095.868450 .282771 1321.282500 15.274354 1215.475950 14.991441 1215.076000 16.123024
128 2 14392.712767 395.817635 17759.218107 89.230903 15252.535650 179.025773 791649.754994 1098665.620556

sslnew

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1.330084 .002645 1.290080 .002828 1.968123 .130115 2.228140 .350744
128 2 4.203993 .203644 5.889974 1.852597 9.423984 1.793220 9.179986 .786304

newrawkey

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 .024000 0 2.666166 .161226 1.560097 .022627 1.758110 .048083
128 2 .017999 .008366 49.849925 5.218440 5.343992 .588307 4.699990 .073532

rsasign

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 40.102515 .028284 39.202450 .509158 39.542465 .424271 39.162460 .113137
128 2 309.602277 43.744439 432.731762 1.469434 425.058833 3.277856 276.652004 93.791438

x509storeissuer

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1.468091 .011313 11.968748 .079195 496.314434 685.341613 1.718106 .138592
128 2 4.489994 .070710 156.191742 9.373404 161.485756 6.479893 5.507991 .079195

providerdoall

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 N/A N/A 0 0 0 0 0 0
128 2 N/A N/A .039967 0 0 0 .039967 0

rwlocks-rlock

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 0 0 .001333 .001414 .002667 0 .002667 0
128 2 .004000 0 .004000 0 .004000 0 .096012 .130123

rwlocks-wlock

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 0 0 0 0 0 0 0 0
128 2 .002000 .002828 .004000 0 .004000 0 .114014 .155582

pkeyread-dh-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1833.914650 20.648720 1905.319000 12.445786 50237.166950 68445.464444 1844.515300 9.617076
128 2 25057.736847 25.734855 25736.972409 64.896766 25133.493324 94.827620 25246.633109 184.340612

pkeyread-dhx-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 337.221150 2.262812 405.025250 2.545796 349.822000 .282842 347.021700 7.071492
128 2 1581.981705 52.029409 2943.222310 104.618098 1617.189774 49.791589 1650.815269 33.007733

pkeyread-dsa-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 337.821100 1.414354 467.629250 9.051603 356.822250 1.131582 50097.836800 70352.903300
128 2 1549.938588 35.805112 4042.380884 24.335955 1745.361946 271.335024 1563.191109 123.919414

pkeyread-ec-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 5.000350 .282771 73.004550 11.597187 10.600800 1.980181 12.200650 5.374223
128 2 5.933791 0 543.745105 528.965870 14.439280 .279989 13.252373 1.398828

pkeyread-rsa-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 .200000 .282842 88.405500 7.920020 4.600300 .282984 3.600200 0
128 2 .395619 0 508.535700 464.066796 5.933989 0 5.933989 0

pkeyread-x25519-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 20.601300 .282842 75.804700 .848528 26.001650 0 24.001450 0
128 2 27.295886 1.677979 156.655261 2.797239 39.955300 2.237679 36.197191 .279987

pkeyread-dh-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1848.515550 8.485917 2180.536350 6.222893 50089.880150 68182.860259 1851.115650 50.066342
128 2 25397.948131 53.707738 30988.091722 62.099457 25451.353145 181.263522 25422.079114 116.366755

pkeyread-dhx-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 344.421400 3.394112 686.842900 .565685 360.422500 1.131370 359.822400 .282842
128 2 1590.684830 31.888613 5950.332278 207.837646 1743.977749 54.546799 1693.736946 93.708430

pkeyread-dsa-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 348.421900 .565826 684.042700 3.960080 370.223050 11.597187 365.222750 3.960010
128 2 1570.905013 77.204634 154777.124159 210065.864215 1745.560176 1.958319 1723.802314 86.435692

pkeyread-ec-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 5.000350 .282913 330.020700 1.697056 19.801250 .848598 20.401250 0
128 2 7.120550 1.678259 1671.978787 89.791303 26.504895 .559349 26.109672 0

pkeyread-rsa-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 2.400200 0 347.221600 24.326028 22.401400 .565685 21.601350 2.828639
128 2 2.373467 0 1590.289359 64.337067 28.680874 3.077228 28.483089 3.356939

pkeyread-x25519-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 22.401400 1.131512 357.022350 8.768619 29.201850 1.131441 28.201700 .282842
128 2 30.065022 1.118490 1602.948329 5.035129 48.856013 .839689 49.844788 1.119049

_fetch

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 N/A N/A .153010 0 .071605 0 .074805 .003162
128 2 N/A N/A .466229 .020639 .138208 .001414 .151209 .011832

randbytes

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 .730045 .014142 .764049 .192343 .260016 .011313 .268017 .005656
128 2 1.981990 .687290 2.609988 .087692 .431998 .016970 .447997 .028284

handshake

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1095.868450 .282771 1321.282500 15.274354 1215.475950 14.991441 1215.076000 16.123024
128 2 14392.712767 395.817635 17759.218107 89.230903 15252.535650 179.025773 791649.754994 1098665.620556

sslnew

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1.330084 .002645 1.290080 .002828 1.968123 .130115 2.228140 .350744
128 2 4.203993 .203644 5.889974 1.852597 9.423984 1.793220 9.179986 .786304

newrawkey

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 .024000 0 2.666166 .161226 1.560097 .022627 1.758110 .048083
128 2 .017999 .008366 49.849925 5.218440 5.343992 .588307 4.699990 .073532

rsasign

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 40.102515 .028284 39.202450 .509158 39.542465 .424271 39.162460 .113137
128 2 309.602277 43.744439 432.731762 1.469434 425.058833 3.277856 276.652004 93.791438

x509storeissuer

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1.468091 .011313 11.968748 .079195 496.314434 685.341613 1.718106 .138592
128 2 4.489994 .070710 156.191742 9.373404 161.485756 6.479893 5.507991 .079195

providerdoall

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 N/A N/A 0 0 0 0 0 0
128 2 N/A N/A .039967 0 0 0 .039967 0

rwlocks-rlock

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 0 0 .001333 .001414 .002667 0 .002667 0
128 2 .004000 0 .004000 0 .004000 0 .096012 .130123

rwlocks-wlock

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 0 0 0 0 0 0 0 0
128 2 .002000 .002828 .004000 0 .004000 0 .114014 .155582

pkeyread-dh-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1833.914650 20.648720 1905.319000 12.445786 50237.166950 68445.464444 1844.515300 9.617076
128 2 25057.736847 25.734855 25736.972409 64.896766 25133.493324 94.827620 25246.633109 184.340612

pkeyread-dhx-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 337.221150 2.262812 405.025250 2.545796 349.822000 .282842 347.021700 7.071492
128 2 1581.981705 52.029409 2943.222310 104.618098 1617.189774 49.791589 1650.815269 33.007733

pkeyread-dsa-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 337.821100 1.414354 467.629250 9.051603 356.822250 1.131582 50097.836800 70352.903300
128 2 1549.938588 35.805112 4042.380884 24.335955 1745.361946 271.335024 1563.191109 123.919414

pkeyread-ec-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 5.000350 .282771 73.004550 11.597187 10.600800 1.980181 12.200650 5.374223
128 2 5.933791 0 543.745105 528.965870 14.439280 .279989 13.252373 1.398828

pkeyread-rsa-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 .200000 .282842 88.405500 7.920020 4.600300 .282984 3.600200 0
128 2 .395619 0 508.535700 464.066796 5.933989 0 5.933989 0

pkeyread-x25519-der

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 20.601300 .282842 75.804700 .848528 26.001650 0 24.001450 0
128 2 27.295886 1.677979 156.655261 2.797239 39.955300 2.237679 36.197191 .279987

pkeyread-dh-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 1848.515550 8.485917 2180.536350 6.222893 50089.880150 68182.860259 1851.115650 50.066342
128 2 25397.948131 53.707738 30988.091722 62.099457 25451.353145 181.263522 25422.079114 116.366755

pkeyread-dhx-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 344.421400 3.394112 686.842900 .565685 360.422500 1.131370 359.822400 .282842
128 2 1590.684830 31.888613 5950.332278 207.837646 1743.977749 54.546799 1693.736946 93.708430

pkeyread-dsa-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 348.421900 .565826 684.042700 3.960080 370.223050 11.597187 365.222750 3.960010
128 2 1570.905013 77.204634 154777.124159 210065.864215 1745.560176 1.958319 1723.802314 86.435692

pkeyread-ec-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 5.000350 .282913 330.020700 1.697056 19.801250 .848598 20.401250 0
128 2 7.120550 1.678259 1671.978787 89.791303 26.504895 .559349 26.109672 0

pkeyread-rsa-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 2.400200 0 347.221600 24.326028 22.401400 .565685 21.601350 2.828639
128 2 2.373467 0 1590.289359 64.337067 28.680874 3.077228 28.483089 3.356939

pkeyread-x25519-pem

thread count number of iterations openssl 1.1.1 per operation avg usec 1.1.1 std dev openssl 3.0 per operation avg usec 3.0 std dev openssl 3.3 per operation avg usec 3.3 std dev openssl master per operation avg usec master std dev
8 2 22.401400 1.131512 357.022350 8.768619 29.201850 1.131441 28.201700 .282842
128 2 30.065022 1.118490 1602.948329 5.035129 48.856013 .839689 49.844788 1.119049

@Sashan
Copy link
Contributor Author

Sashan commented Jun 21, 2024

the new version of run-perf.sh script runs on current tool repo we have. the script no longer depends on pull requests #205 and #203 which both are found kind of controversial.

the idea is to use the shell function as a wrapper which drives the execution of a particular performance tool.

@Sashan Sashan force-pushed the run-perf.sh branch 2 times, most recently from 286fcfe to 198480b Compare June 21, 2024 06:26
for OpenSSL versions 1.1.1 3.0 and master. It collects average
time each single tool took to run in 25 iterations. The script
produces results/report.md.
Sashan added 2 commits June 25, 2024 13:42
… for OpenSSL versions 1.1.1 3.0 and master. It collects average time each single tool took to run in 25 iterations. The script produces results/report.md.
…l tools for OpenSSL versions 1.1.1 3.0 and master. It collects average time each single tool took to run in 25 iterations. The script produces results/report.md.
@Sashan
Copy link
Contributor Author

Sashan commented Jun 25, 2024

closing this pull request in favour of #208 with improvements by @vdukhovni

@Sashan Sashan closed this Jun 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants