Description - phoronix/john-the-ripper

This is a benchmark of John The Ripper, which is a password cracker.

The test case uses three different encryption schemes: blowfish, traditional DES and MD5. One executable supports all three and these are differentiated with the –format= option for “bcrypt” (blowfish), “descrypt” (DES) “md5crypt” (MD5) and this is the order these are run. The –test option is given to have each test example run for 20 sections, though it appears the DES might do two different phases, so 40 seconds total.

Metrics (Intel) - phoronix/john-the-ripper

Metrics for all three encryption types:

sh - pid 32003 // blowfish
	On_CPU   0.996
	On_Core  7.971
	IPC      1.688
	Retire   0.675	(67.5%)
	FrontEnd 0.139	(13.9%)
	Spec     0.169	(16.9%)
	Backend  0.016	(1.6%)
	Elapsed  20.12
	Procs    10
	Minflt   1103
	Majflt   0
	Utime    160.38  	(100.0%)
	Stime    0.00    	(0.0%)
	Start    116333.63
	Finish   116353.75
sh - pid 32038 // DES
	On_CPU   0.998
	On_Core  7.986
	IPC      1.383
	Retire   0.570	(57.0%)
	FrontEnd 0.195	(19.5%)
	Spec     0.143	(14.3%)
	Backend  0.091	(9.1%)
	Elapsed  40.06
	Procs    10
	Minflt   2561
	Majflt   0
	Utime    319.89  	(100.0%)
	Stime    0.02    	(0.0%)
	Start    116404.13
	Finish   116444.19
sh - pid 32072  // MD5
	On_CPU   0.998
	On_Core  7.980
	IPC      1.516
	Retire   0.608	(60.8%)
	FrontEnd 0.227	(22.7%)
	Spec     0.156	(15.6%)
	Backend  0.009	(0.9%)
	Elapsed  20.10
	Procs    10
	Minflt   3666
	Majflt   0
	Utime    160.39  	(100.0%)
	Stime    0.01    	(0.0%)
	Start    116534.45
	Finish   116554.55

None of the workloads stalls much in the backend, so do not expect this benchmark to fit within caches and not be bound by core execution units. Speculation misses are slightly higher but otherwise all have a moderate to high retirement rate as well as IPC.

Metrics (AMD) - phoronix/john-the-ripper
sh - pid 5866  // blowfish
	On_CPU   0.995
	On_Core  15.913
	IPC      1.674
	FrontCyc 0.003	(0.3%)
	BackCyc  0.004	(0.4%)
	Elapsed  20.17
	Procs    18
	Minflt   1154
	Majflt   0
	Utime    320.97  	(100.0%)
	Stime    0.00    	(0.0%)
	Start    423220.95
	Finish   423241.12
sh - pid 5923   // DES
	On_CPU   0.941
	On_Core  15.057
	IPC      1.422
	FrontCyc 0.008	(0.8%)
	BackCyc  0.052	(5.2%)
	Elapsed  40.10
	Procs    18
	Minflt   4062
	Majflt   0
	Utime    603.11  	(99.9%)
	Stime    0.66    	(0.1%)
	Start    423291.58
	Finish   423331.68
sh - pid 5980  // MD5
	On_CPU   0.996
	On_Core  15.937
	IPC      1.495
	FrontCyc 0.001	(0.1%)
	BackCyc  0.018	(1.8%)
	Elapsed  20.13
	Procs    18
	Minflt   6273
	Majflt   0
	Utime    320.81  	(100.0%)
	Stime    0.01    	(0.0%)
	Start    423422.01
	Finish   423442.14

The IPC is remarkably similar on Ryzen as on Haswell test machines.

Process Tree - phoronix/john-the-ripper
Process Tree
Process trees are simple, all of the following form

    32003) sh elapsed=20.12 start=2.71 finish=22.83
      32004) john-the-ripper elapsed=20.12 start=2.71 finish=22.83
        32005) john elapsed=20.11 start=2.72 finish=22.83
        32006) john elapsed=20.07 start=2.76 finish=22.83
        32007) john elapsed=20.07 start=2.76 finish=22.83
        32008) john elapsed=20.07 start=2.76 finish=22.83
        32009) john elapsed=20.07 start=2.76 finish=22.83
        32010) john elapsed=20.07 start=2.76 finish=22.83
        32011) john elapsed=20.07 start=2.76 finish=22.83
        32012) john elapsed=20.07 start=2.76 finish=22.83

About this graph
The CPU is scheduled at almost 100% of the time. The DES workload takes 40 seconds and others run for 20 seconds.


IPC as a whole is higher, with the DES workload having two phases.

About this graph
Backend stalls and bad speculation are not much of an issue. Front end is not a huge issue, but otherwise the largest limiter to this benchmark having even higher IPC.

Next Steps: Break out the DES workload and examine the front end stalls.