FastNetMon

среда, 2 апреля 2014 г.

Огромная разница в скорости выполнения sha1sum и openssl sha1, откуда и почему?

В процессе отладки нашего бэкап решения обратил внимание, что хэш функции стали потреблять много процессорного времени и совершенно случайно обнаружил следующее:
[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
SHA1(/vz/private/7803/root.hdd/root.hdd)= c41be08852baed71294623ea27ec7f64a3ac117f

real    0m17.130s
user    0m16.035s
sys    0m1.093s
То есть, типовая/привычная/понятная sha1sum, используемся везде и вся откровенный тормоз. Почему?

Да, тесты проведены корректно, до запуска хэширования страничный кэш Linux был прогрет и все тесты были проведены по 3-5 раз со сходными результатами. 

2 комментария :

  1. > То есть, типовая/привычная/понятная sha1sum, используемся везде и вся откровенный тормоз. Почему?

    Похоже, openssl выигрывает благодаря заранее подготовленным ассемблерным процедурам (см. $OPENSSL_SRC/crypto/sha/asm/).

    ОтветитьУдалить
    Ответы
    1. Угу, + похоже там много SSE инструкций и оптимизаций.

      Удалить

Примечание. Отправлять комментарии могут только участники этого блога.