В процессе отладки нашего бэкап решения обратил внимание, что хэш функции стали потреблять много процессорного времени и совершенно случайно обнаружил следующее:
Да, тесты проведены корректно, до запуска хэширования страничный кэш Linux был прогрет и все тесты были проведены по 3-5 раз со сходными результатами.
[root@technode4 ~]# time sha1sum /vz/private/7803/root.hdd/root.hdd
c41be08852baed71294623ea27ec7f64a3ac117f /vz/private/7803/root.hdd/root.hdd
real 1m1.632s
user 0m59.987s
sys 0m1.663s
[root@technode4 ~]# time openssl sha1 /vz/private/7803/root.hdd/root.hddТо есть, типовая/привычная/понятная sha1sum, используемся везде и вся откровенный тормоз. Почему?
SHA1(/vz/private/7803/root.hdd/root.hdd)= c41be08852baed71294623ea27ec7f64a3ac117f
real 0m17.130s
user 0m16.035s
sys 0m1.093s
Да, тесты проведены корректно, до запуска хэширования страничный кэш Linux был прогрет и все тесты были проведены по 3-5 раз со сходными результатами.
> То есть, типовая/привычная/понятная sha1sum, используемся везде и вся откровенный тормоз. Почему?
ReplyDeleteПохоже, openssl выигрывает благодаря заранее подготовленным ассемблерным процедурам (см. $OPENSSL_SRC/crypto/sha/asm/).
Угу, + похоже там много SSE инструкций и оптимизаций.
Delete