Come posso interpretare l'output di velocità openssl?

4

Ho eseguito openssl speed sul mio computer Ubuntu. Alcuni risultati:

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

Che cosa significano esattamente quei numeri?

  1. che cosa significa "Fare md4 per 3s"? significa fare l'intero test per 3 volte / secondi?
  2. che cosa significa "1809773 md4 in 2.99s"?
  3. che cosa significa "8192 size blocks"?
posta mazix 01.07.2013 - 19:18
fonte

2 risposte

5

MD4 è una funzione di hash; elabora i messaggi di input che sono sequenze di bit di lunghezza arbitraria. Il tempo di elaborazione è approssimativamente proporzionale alla lunghezza dell'input, ma con l'avvio e il termine di una funzione di hash l'invocazione implica un overhead fisso, in parte dovuto all'algoritmo (inizializzazione, riempimento ...), in parte alle idiosincrasie di CPU (cache, previsione ramo ...).

La prima riga dice che OpenSSL ha calcolato un hash completo su un messaggio da 16 byte, e lo ha fatto di nuovo, e ancora ... fino a un totale complessivo di 9063888 volte in un intervallo di tempo di 3,0 secondi. Ciò implica una larghezza di banda hashing di circa 48,34 MB / s (ovvero 16 volte 9063888, diviso per 3,0). L'ultima riga, d'altra parte, dice cosa succede quando OpenSSL blocca (ripetutamente) messaggi a 8192 byte: può farlo 275679 volte in 3.0 secondi, per una larghezza di banda hash totale di 752.8 MB / s, più di 15 volte di più. Questo dimostra che il sovraccarico di iniziare / terminare l'invocazione della funzione hash domina il costo del calcolo quando si tratta di piccoli messaggi. L'ultima linea è, d'altra parte, vicina alla larghezza di banda che può essere raggiunta durante l'elaborazione di un input molto lungo.

Nota che i benchmark si misurano principalmente da soli. Se dovessi effettivamente effettuare l'hash di molti byte di input, ad es. uno o due file molto grandi, si dovrebbe prendere in considerazione il tempo necessario per spostare i dati, in particolare leggendolo dal disco o dalla rete. Il benchmark OpenSSL, per costruzione, gioca interamente nella cache della CPU L1, rendendolo spesso non realistico.

    
risposta data 02.07.2013 - 00:46
fonte
7
  1. Ha eseguito md4 tutte le volte che è riuscito per 3 secondi
  2. Ecco quante volte è riuscito a completare in 3 secondi
  3. Questa è la dimensione dei blocchi utilizzati. Puoi vedere per quanto tempo un blocco di 8192 richiede più di un blocco di 16
risposta data 01.07.2013 - 21:42
fonte

Leggi altre domande sui tag