¿Cómo puedo interpretar la salida de velocidad de openssl?

4

Ejecuté openssl speed en mi computadora Ubuntu. Algunos resultados:

Doing md4 for 3s on 16 size blocks: 9063888 md4's in 3.00s
Doing md4 for 3s on 64 size blocks: 7105157 md4's in 3.00s
Doing md4 for 3s on 256 size blocks: 4507884 md4's in 3.00s
Doing md4 for 3s on 1024 size blocks: 1809773 md4's in 2.99s
Doing md4 for 3s on 8192 size blocks: 275679 md4's in 3.00s

¿Qué significan exactamente esos números?

  1. ¿Qué significa 'Hacer md4 para 3s'? ¿Significa hacer la prueba completa durante 3 veces / segundos?
  2. ¿Qué significa '1809773 md4 en 2.99s'?
  3. ¿Qué significa 'bloques de tamaño 8192'?
pregunta mazix 01.07.2013 - 19:18
fuente

2 respuestas

5

MD4 es una función hash; procesa mensajes de entrada que son secuencias de bits de longitud arbitraria. El tiempo de procesamiento es aproximadamente proporcional a la longitud de entrada, pero al iniciar y finalizar la invocación de una función hash implica una sobrecarga fija, en parte debido al algoritmo (inicialización, relleno ...), en parte a la idiosincrasia de CPU (cachés, predicción de rama ...).

Su primera línea dice que OpenSSL calculó un hash completo en mensajes de 16 bytes, y lo hizo de nuevo, y nuevamente ... hasta un total de 9063888 veces en un período de tiempo de 3.0 segundos. Esto implica un ancho de banda de hashing de aproximadamente 48.34 MB / s (eso es 16 por 9063888, dividido por 3.0). La última línea, por otro lado, dice lo que sucede cuando OpenSSL hashesea (repetidamente) mensajes de 8192 bytes: puede hacerlo 275679 veces en 3.0 segundos, para un ancho de banda total de hash de 752.8 MB / s, más de 15 veces más. Esto ilustra que la sobrecarga de iniciar / finalizar la invocación de la función hash domina el costo de cálculo cuando se trata de mensajes pequeños. La última línea está, por otro lado, cerca del ancho de banda que se puede lograr al procesar una entrada muy larga.

Tenga en cuenta que los puntos de referencia se miden principalmente a sí mismos. Si en realidad tuvieras muchos bytes de entrada, por ejemplo. Uno o dos archivos muy grandes, tendría que tener en cuenta el tiempo necesario para mover los datos, en particular al leerlos desde el disco o la red. El banco de pruebas OpenSSL, por construcción, se juega completamente dentro de la memoria caché L1 de la CPU, lo que a menudo no es realista.

    
respondido por el Thomas Pornin 02.07.2013 - 00:46
fuente
7
  1. Corrió md4 tantas veces como pudo durante 3 segundos
  2. Esta es la cantidad de veces que logró completar en 3 segundos
  3. Este es el tamaño de los bloques utilizados. Puede ver cuánto más tarda un bloque de 8192 que un bloque de 16
respondido por el Rory Alsop 01.07.2013 - 21:42
fuente

Lea otras preguntas en las etiquetas