Come testare la velocità del disco e della RAM del tuo server Linux

Quando si lavora regolarmente con file, sia in lettura che in scrittura, la velocità del disco in uso ha un effetto diretto sulle prestazioni del server. Anche se non esiste un unico modo per misurare la velocità del disco e della RAM, ci sono dei test di performance che possono essere eseguiti per monitorare le prestazioni di I/O, cioè di input e output dei dati.

Tra questi, il modo più semplice è misurare il tempo necessario per leggere file di grandi dimensioni, oppure eseguire copie di file di grandi dimensioni.

Ciò permette di ottenere una misura della velocità di lettura e scrittura sequenziale, che rappresenta una buona metrica per comprendere e valutare quali sono le performance del proprio disco, ma generalmente le velocità in ambiente server saranno inferiori. Un altro metodo efficace è quello che misura la velocità con cui si può accedere ai file che sono archiviati in blocchi casuali, non posizionati uno di seguito all’altro. Si tratta di un metodo che offre una metrica migliore, perché il modo in cui determina i parametri di velocità è più simile al modo in cui vengono utilizzati i dispositivi nel mondo reale. Ecco come eseguire i test di velocità del disco e della RAM del server Linux.

Disco e RAM: come si misura la velocità

Prima di proseguire, è necessario fare una distinzione tra i dischi rigidi HDD (Hard Disk Drive) e i dischi allo stato solido SSD (Solid State Disk). I dischi SSD sono estremamente veloci sia nelle operazioni di lettura e scrittura casuale di tanti piccoli file sparsi in posizioni diverse del disco, sia nella lettura e scrittura sequenziale di grandi file. Sono quindi la scelta ideale in ogni scenario di utilizzo, ma costano molto di più degli HDD i quali, a loro volta, sono economici ma offrono buone prestazioni solo in lettura e scrittura sequenziale.

Ciò rende gli HDD una buona scelta solo nel caso in cui il server sia usato per archiviare e recuperare la copia dei dati degli utenti, ovvero per il backup online.

Ma la sola scelta di un disco, sia esso rigido o SSD, non basta per garantire buone prestazioni. Anche la RAM gioca un ruolo fondamentale, perché molte applicazioni memorizzano nella cache (cioè nella RAM) grandi quantità di dati. Di conseguenza, quando un utente cerca di leggere quei dati, essi verranno letti direttamente dalla memoria in modo molto veloce. Naturalmente a patto che la memoria RAM istallata sia sufficiente a contenere tutti i dati della cache che, altrimenti, verrà trascritta almeno in parte sul disco. Ciò vuol dire che, per applicazioni con un alto flusso di dati in lettura e scrittura, sarà necessario avere un server con molta RAM e con un disco molto veloce, altrimenti le prestazioni generali saranno basse. 

Le unità di misura per la velocità di trasmissione dei dati di cui tenere conto sono principalmente due. Quella più utilizzata è il Megabyte al secondo (MB/S), ma alcuni provider misurano la velocità dei propri server in IOPS, cioè operazioni di input/output al secondo. La conversione tra le due unità di misura può essere fatta con la seguente formula:

IOPS = (MB/s / Dimensione del blocco) x 1024

Con il termine “blocco” si intende un gruppo di settori (nei dischi HDD) o di celle di memoria (negli SSD), che può avere dimensioni diverse in base al tipo di disco o alla sua configurazione. Per questo motivo è impossibile conoscere la reale velocità di un disco quando è espressa in IOPS se non sappiamo l’esatta dimensione del blocco.

Come usare FIO per i test di performance

disco rigidoI server Linux dispongono di un comando integrato dd, cioè un’applicazione che converte e copia un file. Per questo motivo, può essere utilizzato per misurare le prestazioni di scrittura sequenziale di blocchi di dati, ma ha un limite: non è un test in grado di riprodurre condizioni di uso sotto stress dei dischi nel mondo reale.

Inoltre, questo comando permette anche di cancellare e partizionare il disco, quindi un uso improprio potrebbe comportare la perdita di file importanti.

Il modo migliore per misurare la velocità di lettura e scrittura casuale è quello di utilizzare il software di utilità fio, che può essere installata dal gestore di pacchetti della distribuzione Linux in uso attraverso il comando:

sudo apt-get install fio

Una volta installata l’utility, si potrà procedere con un test di base che esegue lettura e scrittura casuali utilizzando 250 MB di dati, e mostra le velocità in IOPS e MB/s. Per lanciare il test, bisogna usare il comando:

fio –randrepeat=1 –ioengine=libaio –direct=1 –gtod_reduce=1 –name=test –filename=random_read_write.fio –bs=4k –iodepth=64 –size=250M — readwrite=randrw –rwmixread=80

Solitamente, le prestazioni di scrittura sono sempre inferiori con qualsiasi tipo di I/O, ma molti dischi rigidi e SSD sono dotati di una cache integrata che quindi rende più veloci le operazioni di lettura. Gli utenti potranno eseguire altri tipi di test modificando alcuni parametri nella stringa di comando sopra citata.

Ad esempio, sostituendo uno dei seguenti comandi al posto di -readwrite, FIO consente di eseguire le seguenti operazioni:

seqread: lettura sequenziale:

seqwrite: scrittura sequenziale

randread: lettura casuale

randwrite: scrittura casuale

randrw: I/O misto casuale.

Inoltre, è possibile in ogni momento modificare la dimensione del blocco in analisi nel test, modificando -bs con il parametro che meglio si adatta al carico reale che si vuole testare.

Come testare la performance della RAM

ramSe invece un utente vuole testare la velocità della RAM del proprio server, l’utilità migliore da installare non è fio ma bensì sysbench. Per installare l’utilità dal gestore pacchetti della propria distribuzione, il comando da utilizzare è:

sudo apt-get install sysbench

Si tratta di un pacchetto che permette di monitorare diverse metriche per eseguire il benchmark del server, ma in particolare permette di testare le performance della RAM. Utilizzando il comando seguente, verrà allocato 1 MB di RAM e verranno eseguite operazioni di scrittura fino a quando non saranno scritti 10 GB di dati:

sysbench –test=memory –memory-block-size=1M –memory-total-size=10G run

Il risultato della velocità della memoria così misurata sarà espresso in Mebibyte al secondo (MiB/s). Il Mebibyte è l’unità di misura della quantità di dati ed è molto simile al Megabyte: per comodità possiamo considerare che un Mebibyte equivale ad un Megabyte più il 4,9%.

Inoltre, il comando sysbench fornisce anche una misura della latenza di accesso della memoria RAM, che generalmente è bassissima.

In caso contrario, è probabile che ci sia un problema ai connettori della memoria con la scheda madre o che la memoria stessa sia guasta. Sempre grazie a sysbench è possibile misurare anche la velocità di lettura aggiungendo alla stringa il comando –memory-oper=read. Combinando queste due misurazioni, i valori restituiti permetteranno di valutare la velocità della RAM nelle operazioni di scrittura e lettura. Combinando questi risultati con quelli sulla velocità del disco è possibile testare le prestazioni del server Linux e scoprire eventuali colli di bottiglia. Nella gran parte dei casi, però, è il disco a rallentare il server e non la memoria RAM: al massimo è possibile che essa sia poca, non che sia lenta.

Fonte Fastweb.it

Calendario Notizie

Novembre 2024
L M M G V S D
 123
45678910
11121314151617
18192021222324
252627282930