Maszynka… Nic rewelacyjnego, jak poniżej:
niagara2.dev:root ~ > psrinfo -pv
The physical processor has 64 virtual processors (0-63)
UltraSPARC-T2 (cpuid 0 clock 1167 MHz)
niagara2.dev:root ~ > prtconf | grep Memory
Memory size: 32640 Megabytes
niagara2.dev:root ~ > uname -a
SunOS niagara2.dev 5.10 Generic_120011-14 sun4v sparc SUNW,SPARC-Enterprise-T5220
Wiem, że niżej zamieszczam test typowo syntetyczny, wiem, że to nijak musi się przekładać na faktyczne warunki “bojowe” (i zapewne się nie przekłada), niemniej jednak liczby robią wrażenie:
niagara2.dev:root ~ > openssl speed rsa1024 -engine pkcs11
engine "pkcs11" set.
Doing 1024 bit private rsa's for 10s: 15509 1024 bit private RSA's in 0.60s
Doing 1024 bit public rsa's for 10s: 29934 1024 bit public RSA's in 0.90s
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,risc1,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 1024 bits 0.0000s 0.0000s 25848.3 33260.0
Dla porównania analogiczne testy ze stojącego akurat obok X2200M2 (w środku 2 razy Opteron 2220 z zegarem 2,8GHz):
x2200m2.dev:root ~ > openssl speed rsa1024 -engine pkcs11
engine "pkcs11" set.
Doing 1024 bit private rsa's for 10s: 5364 1024 bit private RSA's in 10.00s
Doing 1024 bit public rsa's for 10s: 71792 1024 bit public RSA's in 9.99s
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,cisc,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
sign verify sign/s verify/s
rsa 1024 bits 0.0019s 0.0001s 536.4 7186.4
Tak, wiem, że T2 ma 8 rdzeni, w przypadku Opteronów sumarycznie z dwóch procesorów miałem “aż” cztery. Ale nie w tym jest siła. Wyniki dla jednego wątku openssl, najpierw T5220:
niagara2.dev:root ~ > openssl speed rsa1024 -engine pkcs11 -multi 1
engine "pkcs11" set.
Forked child 0
+DTP:1024:private:rsa:10
+R1:15470:1024:10.00
+DTP:1024:public:rsa:10
+R2:32576:1024:10.01
Got: +F2:1:1024:0.000647:0.000307 from 0
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,risc1,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used:
sign verify sign/s verify/s
rsa 1024 bits 0.0006s 0.0003s 1545.6 3257.3
Oraz Opteron:
x2200m2.dev:root ~ > openssl speed rsa1024 -engine pkcs11 -multi 1
engine "pkcs11" set.
Forked child 0
+DTP:1024:private:rsa:10
+R1:5337:1024:9.99
+DTP:1024:public:rsa:10
+R2:71640:1024:10.00
Got: +F2:1:1024:0.001873:0.000140 from 0
OpenSSL 0.9.7d 17 Mar 2004 (+ security patches to 2006-09-29)
built on: date not available
options:bn(64,32) md2(int) rc4(ptr,char) des(ptr,cisc,16,long) aes(partial) blowfish(ptr)
compiler: information not available
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used:
sign verify sign/s verify/s
rsa 1024 bits 0.0019s 0.0001s 533.9 7142.9
To o co chodzi? A o to, że w T2 mamy jednostkę MAU (Modular Arithmetic Unit) – a dokładniej 8 takich (po jednej na rdzeń). Zalążek tego mieliśmy już w T1, (tak samo, po jednej jednostce MAU na rdzeń), przy czym tam mieliśmy tylko wsparcie dla algorytmów RSA, DSA oraz Diffie Hellman. W T2 dochodzi nam do tego jeszcze AES, 3DES, RC4, SHA1, SHA256, MD5, ECC. Robi wrażenie. :)
Na zakończenie dwie tabelki: pierwsza obrazuje liczbę “podpisów” dla RSA1024 w zależności od liczby wątków równoległych – widać, jak ładnie T2 się “wątkuje”:
| T5220 | X2200M2 | |
|---|---|---|
| 1 | 1545,6 | 535,3 |
| 2 | 3084,0 | 1074,1 |
| 4 | 6104,6 | 2141,1 |
| 8 | 10975,8 | 2164,5 |
| 16 | 22521,4 | 2218,9 |
| 32 | 29379,2 | 2231,7 |
| 64 | 29743,7 | 4015,0 |
Druga przedstawia liczbę “podpisów” dla RSA${i}, gdzie ${i} przyjmuje wartości 512, 1024, 2048, 4096 – tu z kolei widać, gdzie się kończy wsparcie MAU dla biblioteki PKCS11 (dla obydwu serwerów przyjąłem “-multi 32″):
| T5220 | X2200M2 | |
|---|---|---|
| 512 | 67738,7 | 11796,5 |
| 1024 | 29402,7 | 2660,3 |
| 2048 | 5179,7 | 502,9 |
| 4096 | 18,8 | 62,9 |
Na koniec “disklejmer” – wszędzie powyżej używałem “-engine pkcs11″ z dwóch powodów – po pierwsze, software’owe algorytmy dla RSA w tej bibliotece wyglądają na wydajniejsze od standardowej zawartej w OpenSSL, po drugie, tylko w ten sposób mogę zrobić pożytek z akceleracji sprzętowej – libpkcs11 zapewnia obsługę odpowiednich providerów dostarczanych przez kernel Solarisa.
5 Comments
Nie myslisz, ze to ma bardziej zwiazek z dolaczonymi do kazdego core CryptoCard ?
Ten “CryptoCard” to przecież właśnie MAU, o którym piszę…
Tutaj wyniki dla Niagara-2 1.4GHz (openssl speed rsa1024 -engine pkcs11 -multi N)
N sign/s verify/s %usr %sys runq
1 1862 3968 0 1 0
2 3752 7707 0 3 0
4 7410 14897 1 6 0
8 14542 28546 1 11 0
16 27304 51436 2 22 1
32 35828 81803 4 45 3
64 36492 103769 6 85 16
128 38177 122601 9 90 64
256 43070 124192 10 90 188
512 32734 51623 10 90 400
W przypadku Opteronow domniemam, ze bardzo szybko wysyciles CPU :)
Tak, Opterowny miały już dosyć przy N=4. :)
W sumie nie pomyślałem o tym, żeby zestawić to jeszcze z użyciem CPU, chociaż też na to zwróciłem uwagę…
Z ciekawostek: Sun 3/60 (z MC68020 w roli CPU; połowa lat osiemdziesiątych) zawierał podstawkę pod AM9518, układ robiący sprzętowo DES, z oszałamiającą prędkością 1.3MB/s. Ciekawe do czego miało to być (AFAIK Sun nigdy nie wprowadził tej opcji do cennika) wykorzystywane i czym – w końcu w tamtych czasach SSL jeszcze nie istniał?
Post a Comment