Valutare le prestazioni con i benchmark
Inviato: 15/06/2024, 22:29
Il benchmarking delle prestazioni IO del disco o del file system può essere nella migliore delle ipotesi complicato. Il problema è che i moderni file system sfruttano varie tecniche per garantire che si ottengano le migliori prestazioni come la memorizzazione nella cache dei file nella RAM. Ciò significa che, a meno che non si eludere la cache del disco, le velocità riportate riporteranno la velocità con cui i file possono essere letti dalla memoria.
In questo esempio, tratterò il benchmarking di un file system Linux usando due metodi; dd per il percorso facile e bonnie ++ per un test più completo.
TEST DI SCRITTURA
Puoi usare dd per creare un file di grandi dimensioni il più rapidamente possibile per vedere quanto tempo impiega. È un test molto semplice e non molto personalizzabile, ma ti darà un'idea delle prestazioni del file system. È necessario assicurarsi che questo file sia maggiore della quantità di RAM disponibile nel sistema per evitare che l'intero file venga memorizzato nella cache.
Di solito è installato immediatamente con la maggior parte dei file system Linux che lo rende uno strumento ideale in ambienti bloccati o ambienti in cui è difficile installare pacchetti. Utilizzare il comando seguente sostituendo [PATH] con il percorso del filesystem per testare, [BLOCK_SIZE] con la dimensione del blocco e [LOOPS] per la quantità di blocchi da scrivere.
time sh -c "dd if =/dev/zero of=[PATH] bs=[BLOCK_SIZE]k count=[LOOPS] && sync"
Una suddivisione del comando è la seguente:
Ora facciamo i conti: il comando dd ci dice quanti byte sono stati scritti e il comando time ci dice quanto tempo ha impiegato. In questo caso ci viene restituito un valore espresso in BYTES / SECONDO e dobbiamo eseguire una piccola conversione in in MB/s e per avere di fronte dei numeri con cui poter ragionare meglio.
TEST DI LETTURA
Possiamo anche usare dd per testare la velocità di lettura di un disco leggendo il file che abbiamo creato e temporizzando il processo. Prima di farlo, è necessario svuotare la cache dei file scrivendo un altro file delle dimensioni della RAM installata sul sistema di test. Se non lo facciamo, il file che abbiamo appena creato sarà parzialmente nella RAM e quindi il test di lettura non verrà letto completamente dal disco.
Crea un file usando dd che ha circa le stesse dimensioni della RAM installata sul sistema. Di seguito si presume che siano installati 1 GB di RAM. Puoi controllare quanta RAM è disponibile.
Ora per il test di lettura del nostro file originale.
Ed elaborare il risultato con lo stesso principio visto poco fa con la scrittura:
La nostra formula sarà quindi (1073741824/1024/1024) / 27,328 e la media sarà quindi di 37,47 megabyte al secondo.
Segnalo il tool iotop che aiuta a capire quali processi stanno utilizzando il disco_
In questo esempio, tratterò il benchmarking di un file system Linux usando due metodi; dd per il percorso facile e bonnie ++ per un test più completo.
TEST DI SCRITTURA
Puoi usare dd per creare un file di grandi dimensioni il più rapidamente possibile per vedere quanto tempo impiega. È un test molto semplice e non molto personalizzabile, ma ti darà un'idea delle prestazioni del file system. È necessario assicurarsi che questo file sia maggiore della quantità di RAM disponibile nel sistema per evitare che l'intero file venga memorizzato nella cache.
Di solito è installato immediatamente con la maggior parte dei file system Linux che lo rende uno strumento ideale in ambienti bloccati o ambienti in cui è difficile installare pacchetti. Utilizzare il comando seguente sostituendo [PATH] con il percorso del filesystem per testare, [BLOCK_SIZE] con la dimensione del blocco e [LOOPS] per la quantità di blocchi da scrivere.
time sh -c "dd if =/dev/zero of=[PATH] bs=[BLOCK_SIZE]k count=[LOOPS] && sync"
Una suddivisione del comando è la seguente:
- time = volte l'intero processo dall'inizio alla fine
- of = questo è il percorso che si desidera verificare. Il percorso deve essere letto / scrivibile.
- bs = è la dimensione del blocco da usare. Se si dispone di un carico specifico per il quale si sta testando, rendere questo valore rispecchiare la dimensione di scrittura che ci si aspetterebbe.
- sync = impone al processo di scrivere l'intero file sul disco prima del completamento. Si noti che dd tornerà prima del completamento, ma il comando time no, quindi l'output temporale includerà la sincronizzazione su disco.
Codice: Seleziona tutto
time sh -c "sudo dd if=/dev/zero of=/media/pi/usb/test.tmp bs=128k count=8k && sync"
8192+0 record dentro
8192+0 record fuori
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 54,408 s, 19,7 MB/s
real 1m2,340s
user 0m0,219s
sys 0m12,121s
- Prendiamo i Byte convertiti e li convertiamo in MB (1073741824/1024/1024) e poi dividiamo per i tempo reale impiegato (1 minuto e 2,340 secondi)
- La nostra formula sarà quindi: (1073741824/1024/1024) / ((1 * 60) + 2,340)
TEST DI LETTURA
Possiamo anche usare dd per testare la velocità di lettura di un disco leggendo il file che abbiamo creato e temporizzando il processo. Prima di farlo, è necessario svuotare la cache dei file scrivendo un altro file delle dimensioni della RAM installata sul sistema di test. Se non lo facciamo, il file che abbiamo appena creato sarà parzialmente nella RAM e quindi il test di lettura non verrà letto completamente dal disco.
Crea un file usando dd che ha circa le stesse dimensioni della RAM installata sul sistema. Di seguito si presume che siano installati 1 GB di RAM. Puoi controllare quanta RAM è disponibile.
Codice: Seleziona tutto
sudo dd if=/dev/zero of=/media/pi/usb/cache.tmp bs=128k count=8k
Codice: Seleziona tutto
time sh -c "dd if=/media/pi/usb/test.tmp of=/dev/null bs=128k"
Codice: Seleziona tutto
time sh -c "dd if=/media/pi/usb/test.tmp of=/dev/null bs=128k"
8192+0 record dentro
8192+0 record fuori
1073741824 bytes (1,1 GB, 1,0 GiB) copied, 27,2711 s, 39,4 MB/s
real 0m27,328s
user 0m0,030s
sys 0m4,149s
Codice: Seleziona tutto
sudo hdparm -Tt /dev/sda
Codice: Seleziona tutto
sudo dd if=/dev/zero of=/dev/sda bs=64k count=8k status=progress
Codice: Seleziona tutto
sudo iotop