Hi, john on i386 is a script that tests for the mmx flag and then launches john-any or john-mmx. This is very nice except that john-mmx is actually slower than john-any. It would be better if you could test the c/s for john-any and john-mmx and pick the faster one: mrvn@dual:~% sh -c "exec -a john /usr/sbin/john-mmx -test" Benchmarking: Standard DES [48/64 4K]... DONE Many salts: 137172 c/s real, 150378 c/s virtual Only one salt: 140544 c/s real, 147012 c/s virtual Benchmarking: BSDI DES (x725) [48/64 4K]... DONE Many salts: 5036 c/s real, 5235 c/s virtual Only one salt: 5110 c/s real, 5225 c/s virtual Benchmarking: FreeBSD MD5 [32/32]... DONE Raw: 5475 c/s real, 5739 c/s virtual Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE Raw: 344 c/s real, 349 c/s virtual Benchmarking: Kerberos AFS DES [48/64 4K]... DONE Short: 142438 c/s real, 145345 c/s virtual Long: 508620 c/s real, 514798 c/s virtual Benchmarking: NT LM DES [48/64 4K]... DONE Raw: 1846528 c/s real, 1868955 c/s virtual mrvn@dual:~% sh -c "exec -a john /usr/sbin/john-any -test" Benchmarking: Standard DES [24/32 4K]... DONE Many salts: 246809 c/s real, 249807 c/s virtual Only one salt: 221721 c/s real, 231926 c/s virtual Benchmarking: BSDI DES (x725) [24/32 4K]... DONE Many salts: 8617 c/s real, 8775 c/s virtual Only one salt: 8584 c/s real, 8670 c/s virtual Benchmarking: FreeBSD MD5 [32/32]... DONE Raw: 5696 c/s real, 5742 c/s virtual Benchmarking: OpenBSD Blowfish (x32) [32/32]... DONE Raw: 344 c/s real, 348 c/s virtual Benchmarking: Kerberos AFS DES [24/32 4K]... DONE Short: 226662 c/s real, 229415 c/s virtual Long: 611225 c/s real, 616154 c/s virtual Benchmarking: NT LM DES [24/32 4K]... DONE Raw: 1649433 c/s real, 1676253 c/s virtual MfG Goswin
I don't agree with your assessment if you compare the results by the used algorithm. In case of a "Standard DES" and "BSDI DES" algorithmen you are correct, that in this case the "any" binary will be faster. In case of the "FreeBSD MD5" algorithmen, you will notice that there's not much difference in using the "any" or the "mmx" binary as the difference is very small. And in case of the "OpenBSD Blowfish" algorithmen, you will see absolutely no difference between the usage of the "any" or "mmx" binary at all: And only in the case of "Kerberos AFS DES" you will again notice that the "any" binary is a bit faster then the "mmx" one. And in the case of the "NT LM DES" algorithemn, the "mmx" binary is faster then the "any" one. So it's not necessarily an overall gain in speed. Also you are not explaining on which kind of cpu you were running those tests. That would maybe help to explain the results you are seeing. Christian
Christian Kurz <shorty@debian.org> writes:
Its an amd64 (x86_64).
If you don't think being faster or equal in all but one cases is
better then think about doing this on a algorithm by algorithm basis.
John is not that big that it couldn't compile in both flavours of the
code, test them on the fly and then use the faster one. The way the
two binaries work with 'exec -a john' is rather ugly anyway.
Or you could check what the passwd file given will need and compare
those numbers for the two binaries.
MfG
Goswin
Hello all,
Surprised by Goswin figures, I decided to test john-{any,mmx} on two
i386 boxes: a Celeron 400 and an Athlon 1G4
On the first one, john-mmx is 25% faster than john-any
On the second, john-mmx is 25% slower than john-any
I also tested John's development version:
john-mmx is faster on both box (up to 4 times!), except for Kerberos AFS
DES on the Athlon (25% slower).
Detailed figures are attached.
So I second Goswin in allowing to run john-any on MMX boxes.
Using one or the other on a per algorithm basis is probably not needed
(and would require some modifications), but having an option to the john
script should be easy and useful.
PS : Note that I tried John 1.6-17 from woody on the Celeron and John
1.6-26 on the Athlon. I think that the source didn't changed between
both packages, but they were not compiled with the same compiler.
Kind Regards,
Hello all,
Surprised by Goswin figures, I decided to test john-{any,mmx} on two
i386 boxes: a Celeron 400 and an Athlon 1G4
On the first one, john-mmx is 25% faster than john-any
On the second, john-mmx is 25% slower than john-any
I also tested John's development version:
john-mmx is faster on both box (up to 4 times!), except for Kerberos AFS
DES on the Athlon (25% slower).
Detailed figures are attached.
So I second Goswin in allowing to run john-any on MMX boxes.
Using one or the other on a per algorithm basis is probably not needed
(and would require some modifications), but having an option to the john
script should be easy and useful.
PS : Note that I tried John 1.6-17 from woody on the Celeron and John
1.6-26 on the Athlon. I think that the source didn't changed between
both packages, but they were not compiled with the same compiler.
Kind Regards,
I would appreciate if you could retest your benchmarks with the latest experimental packages (I just uploaded 1.7-2 and should be available there soon). The new packages will use the MMX code in all cases (unless MMX is not available, in which the -non-mmx binary will run) and the wrapper binary has been dropped. Regards Javier PS: It also has specific code for amd64 which should work better than the 'generic' target
Hi, Here are the results on two boxes. I have a non-MMX box (but no acces at this time). I will also check on this box (probably in the week). It seems to me that 1.7-2 is always faster than 1.6 or 1.6.36 (and sometime much faster!) Note: the Celeron box is running sarge. I recompiled the package (so another compiler was used). Note2: I had to remove the --param inline-unit-growth=2000 option when building on Sarge. Maybe a versionned build dependency is needed. Kind Regards,
Hello, Here are the results of the benchmark on some other boxes (one without MMX). What surprise me is that on the Athlon, john-any (in vertsion 1.6) was fatser, but this is no longer the case. It seems john-any on 1.6 is slower than it use to be (it may be caused by the compiler). Also, in 1.7-2, john doesn't work on the non-MMX box. $ john -test Sorry, MMX is required But john-non-mmx (built, but not distributed) works. I can't debug john on this box, but I can test another version if needed. Best Regards,
Hi Goswin, Since 1.7.7-1, john uses CPU fall-backs instead of a script in order to tests for the mmx (and sse2) flag. Please check if this bug is still relevant. Thanks, Ruben