LINUX.ORG.RU

OpenSSL: странная скорость на Xeon Core i7


0

1

На работе есть сервак: 1 проц Xeon E5620 на ядре i7, 2.4Ггц, 12Мб кэша. И есть дома сервак: Старенький Core 2 Quad Q6600 2.4Ггц, 8Мб кэша.

На обоих стоит генту с ядром 2.6.38, OpenSSL 1.0.0d

Меряю скорости шифрования на том и на другом:

corei7# openssl speed aes
OpenSSL 1.0.0d 8 Feb 2011
built on: Wed Mar 30 14:57:19 MSD 2011
options:bn(64,64) rc4(1x,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM -O3 -march=core2 -mtune=generic -mfpmath=sse -mcx16 -msahf -mpclmul -maes -mpopcnt -mmmx -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -fomit-frame-pointer -pipe
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      71252.78k    76119.74k    77265.41k    77717.49k    77600.09k
aes-192 cbc      60186.34k    63458.69k    64601.47k    64834.56k    64807.21k
aes-256 cbc      52133.24k    54800.87k    55458.33k    55625.80k    55598.75k


core2quad# openssl speed aes
OpenSSL 1.0.0d 8 Feb 2011
built on: Fri Feb 18 13:47:37 MSK 2011
options:bn(64,64) rc4(1x,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM -O2 -march=core2 -mtune=core2 -mfpmath=sse -mmmx -msse -msse2 -msse3 -mssse3 -msahf -mcx16 -fomit-frame-pointer -pipe -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      70263.75k    77108.56k    78429.48k   165245.39k   168088.02k
aes-192 cbc      59363.92k    64024.06k    65624.60k   140857.51k   140510.97k
aes-256 cbc      50643.91k    55779.68k    55850.96k   120444.57k   121844.04k

Что я делаю не так? Почему на серверном проце с новой архитектурой и бОльшим кэшем скорость на блоках >1kb в ДВА раза меньше старенького десктопного проца четырёхлетней давности? Кривая оптимизая компилятора, который не знает о новых процах? Знает только гцц 4.6.0 а его еще нету в портежах чтобы проверить.

Когда проверишь гцц 4.6.0 отпишись! Мне тоже интересно.

fractaler ★★★★★
()
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      54662.50k    60451.97k    61889.79k   130538.84k   132704.94k
aes-192 cbc      47157.57k    50701.25k    51623.17k   110144.51k   111528.62k
aes-256 cbc      40169.49k    43013.48k    44087.55k    94861.31k    95715.33k

и это core2duo 1.9 .

tn1
()

> -march=core2 -mtune=generic

vs

-march=core2 -mtune=core2

anonymous
()

Забавно, у меня быстрее на T7700 2.4ghz, 4mib L2. Ноутбуку 3 года, память медленная:

OpenSSL 1.0.0d 8 Feb 2011
built on: Tue Feb 22 21:53:41 PST 2011
options:bn(64,64) rc4(1x,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: x86_64-pc-linux-gnu-gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM -O2 -pipe -fno-strict-aliasing -Wa,--noexecstack
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      73834.42k    80856.96k    83001.19k   173703.51k   175991.47k
aes-192 cbc      62239.17k    67527.85k    68873.73k   147135.49k   148105.90k
aes-256 cbc      54086.59k    58083.26k    59132.16k   126525.10k   127219.03k
anonymous
()

Если для шифрования используется генератор случайных чисел, то на серверах по определению будет работать медленнее: нет устройств ввода -> меньше энтропия.

Frakhtan-teh ★★
()

Для полноты картины напиши, пожалуйста, версии gcc & glibc на твоих компах. Я до сих пор не понимаю, почему на ноуте у меня такая разница с твоими цифрами на компах.

anonymous
()

Ради интереса, попробуй выключить гипертрэдинг (если он включен, конечно же).

anonymous
()

Ховайтесь, Q9650 вообще рвет в клочья:

OpenSSL 1.0.0d 8 Feb 2011
built on: Tue Feb  8 18:55:12 UTC 2011
options:bn(64,64) md2(int) rc4(1x,char) des(idx,cisc,16,int) aes(partial) idea(int) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -Wa,--noexecstack -m64 -DL_ENDIAN -DTERMIO -O3 -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DWHIRLPOOL_ASM
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      88455.78k    96103.17k    98676.57k   208389.80k   210154.84k
aes-192 cbc      75282.65k    80568.94k    82028.46k   175498.92k   177263.96k
aes-256 cbc      64803.41k    69131.46k    70307.75k   150514.64k   151767.72k

pekmop1024 ★★★★★
()
Ответ на: комментарий от pekmop1024

Ховайтесь, Q9650 вообще рвет в клочья:

OpenSSL 0.9.8k 25 Mar 2009
built on: Thu Feb 10 01:45:33 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     200669.72k   262300.27k   294338.73k   303848.11k   307093.50k
aes-192 cbc     169363.53k   227762.32k   251056.73k   257845.25k   260330.84k
aes-256 cbc     163159.28k   196843.09k   211088.47k   214729.39k   215984.81k

AMD Phenom II X6 1100T руле и педале!

Deleted
()
Ответ на: комментарий от Deleted

старенький AMD ATHLON 2 X3:

OpenSSL 0.9.8o 01 Jun 2010
built on: Thu Feb 10 19:15:33 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     124202.40k   201893.40k   241757.61k   254170.45k   258266.45k
aes-192 cbc     118903.48k   176715.65k   206621.53k   215561.56k   218494.29k
aes-256 cbc     108785.31k   154362.37k   173940.99k   179504.47k   181299.88k
и старенький Intel U2700 ULV:
OpenSSL 0.9.8o 01 Jun 2010
built on: Thu Feb 10 19:55:43 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      57286.46k    78614.60k    86987.71k    89624.36k    90175.91k
aes-192 cbc      51072.63k    68074.53k    73787.07k    74887.21k    75674.33k
aes-256 cbc      45822.98k    59613.01k    63531.46k    65049.15k    65483.84k

ktk ★★★★
()

Мой древний Штеуд T5600 корка два, 1,83 мегагерца, с кэшем в два мега, рвёт Ксеон:

OpenSSL 0.9.8o 01 Jun 2010
built on: Thu Feb 10 19:15:33 UTC 2011
options:bn(64,64) md2(int) rc4(ptr,char) des(idx,cisc,16,int) aes(partial) blowfish(ptr2) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -O3 -Wa,--noexecstack -g -Wall -DMD32_REG_T=int -DOPENSSL_BN_ASM_MONT -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      78581.20k   110859.15k   123633.79k   126512.81k   127456.60k
aes-192 cbc      72417.15k    96273.42k   104209.12k   105965.57k   106864.64k
aes-256 cbc      65663.66k    84086.02k    90252.46k    91980.46k    92482.22k

zloy_buratino
()
Ответ на: комментарий от zloy_buratino

И топик постепенно перерос в мерянье процами...

OpenSSL 0.9.8o 01 Jun 2010
built on: Thu Feb 10 20:02:37 UTC 2011
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx) 
compiler: gcc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -march=i686 -Wa,--noexecstack -g -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      55110.12k    77641.52k    87784.14k    91914.68k    93928.93k
aes-192 cbc      47491.68k    66227.13k    73652.04k    76450.51k    77742.08k
aes-256 cbc      44047.39k    58251.23k    64900.93k    67257.85k    67056.91k
Куда уж мне до вас с моим древним Celeron с ядром Northwood...

TheKnight ★★★
()
Ответ на: комментарий от pekmop1024

Фишка в том что этот проц без AVX, ну в гцц 4.6 есть таргет просто 'corei7' - как будет, проверю.

Да, странный какой-то бенчмарк, у меня на ноуте с T5500 тоже цифры какие-то большие по сравнению с серваками. Причем ноут как сервер работает, никаких там устройств ввода генерящих энтропию там не используется.

Кстати, для чистоты эксперимента можно ли его заставить urandom юзать (если действительно дело в энтропии)?

И надо еще попробовать с AES-NI да бенчмарки в ядре через модуль crypto-test...

blind_oracle ★★★★★
() автор топика

Ну собственно протестировал через ядрёный модуль tcrypt, всё встало на свои места:

testing speed of cbc(aes) encryption:

Xeon 5640:
test 14 (256 bit key, 8192 byte blocks): 15735 operations in 1 seconds (128901120 bytes)

Core 2 Q6600:
test 14 (256 bit key, 8192 byte blocks): 14334 operations in 1 seconds (117424128 bytes)

Core 2 T5500:
test 14 (256 bit key, 8192 byte blocks): 5980 operations in 1 seconds (48988160 bytes)

Т.е. новый ксеон чуть быстрее Q6600, и почти втрое быстрее ноутбука с T5500.

Тестировал через 'modprobe tcrypt mode=200 sec=1', оно подвешивает терминал ненадолго и выдает в dmesg результаты. А почему так дурит опенссл непонятно...

blind_oracle ★★★★★
() автор топика
Ответ на: комментарий от Lumi

Ну собсно оно не собирается :) С графитом вываливается судя по всему из-за старой версии cloog-ppl, а без него:

/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/reload.c:4577:1: internal compiler error: in ready_remove_first, at haifa-sched.c:1414

blind_oracle ★★★★★
() автор топика
Ответ на: комментарий от blind_oracle

Я собирал с cloog-ppl-0.15.10
Там ещё вот такую оказию пришлось сделать:

ls -l /usr/include/cloog
lrwxrwxrwx 1 root root 15 Мар 22 14:18 /usr/include/cloog -> cloog-ppl/cloog

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

Да, что-то он у меня не был почему-то размаскирован... В любом случае, с 0.15.10 и сцылкой тоже не работает:

/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c: In function ‘ppl_powerset_is_empty’:
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:524: error: ‘ppl_PIP_Problem_t’ undeclared (first use in this function)
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:524: error: (Each undeclared identifier is reported only once
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:524: error: for each function it appears in.)
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:524: error: expected ‘;’ before ‘pip’
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:525: warning: ISO C90 forbids mixed declarations and code
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:552: warning: implicit declaration of function ‘ppl_new_PIP_Problem_from_constraints’
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:552: error: ‘pip’ undeclared (first use in this function)
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:553: warning: implicit declaration of function ‘ppl_PIP_Problem_is_satisfiable’
/var/tmp/portage/sys-devel/gcc-4.6.0/work/gcc-4.6.0/gcc/graphite-ppl.c:555: warning: implicit declaration of function ‘ppl_delete_PIP_Problem’

Собираю на 4.4.5, с дефолтными флагами падает на интернал компилер эррор...

blind_oracle ★★★★★
() автор топика

В копилку мерянья:

Core i3


OpenSSL 0.9.8k 25 Mar 2009
built on: Thu Feb 10 02:13:11 UTC 2011
options:bn(64,32) md2(int) rc4(idx,int) des(ptr,risc1,16,long) aes(partial) blowfish(idx) 
compiler: cc -fPIC -DOPENSSL_PIC -DZLIB -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -DL_ENDIAN -DTERMIO -O3 -march=i686 -Wa,--noexecstack -g -Wall -DOPENSSL_BN_ASM_PART_WORDS -DOPENSSL_IA32_SSE2 -DSHA1_ASM -DMD5_ASM -DRMD160_ASM -DAES_ASM
available timing options: TIMES TIMEB HZ=100 [sysconf value]
timing function used: times
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc      82711.16k   108523.32k   117928.41k   121464.61k   120254.71k
aes-192 cbc      72380.57k    92831.25k    99681.92k   102192.43k   101624.78k
aes-256 cbc      52819.67k    76238.15k    85439.53k    87902.69k    89279.06k
mpp5
()
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     125346.63k   171000.27k   188766.21k   193758.73k   196203.94k
aes-192 cbc      90686.17k   136083.78k   155357.58k   161327.42k   164288.35k
aes-256 cbc      84091.70k   120957.59k   135955.65k   140594.51k   142810.16k

Core 2 Duo E7400 2.8Ghz

[root@margaret:~]# gcc -v
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.4.5-8' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.4.5 (Debian 4.4.5-8) 
Pentium02 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.