Scarse prestazioni iSCSI con dischi SSD e rete da 10 Gbe


10

Target iSCSI

Ubuntu 14.04 (Trusty Tahr) con 16 GB di RAM e 16 core CPU come target iSCSI supportato da LVM utilizzando tre dischi Samsung SSD, ciascuno in grado di eseguire IOPS 65k utilizzando un controller LSI 6 Gbit / s con cache integrata.

Benchmark su disco SSD nella destinazione:

fio --filename=/dev/sdd --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=ssd-max

iops=65514

Dove sddè configurato in RAID 0 hardware utilizzando tre SSD Samsung 850 EVO.

Iniziatore

Ho esportato un LUN da 500 G su un client Ubuntu 14.04 con 32 GB di RAM e 8 CPU core.

Benchmark su LUN esportato

fio --filename=/dev/sdg --direct=1 --sync=1 --rw=write --bs=4k --numjobs=10 --iodepth=1 --runtime=60 --time_based --group_reporting --name=client-max

iops=2400

C'è un calo significativo delle prestazioni quando si esegue DAS e in rete, mi aspettavo almeno 10k IOPS.

La comunicazione tra target e iniziatore è inferiore a 1 ms e iperf mostra un throughput di rete di 9,2 Gbit / s.

Capisco che ci sarà un impatto sulle prestazioni per le scritture 4k poiché ogni dato deve passare attraverso lo stack di rete sia dell'iniziatore che della destinazione prima di essere scritto su disco, ma questo è un calo inaccettabile da 65k a 2k.

Dove può essere il problema? Ho una scheda NIC Ethernet da 10 Gbit / s tra il target e l'iniziatore. Qualche idea?


2
Non abbastanza vicino a informazioni sufficienti e le nostre sfere di cristallo sono troppo costose per sprecarle su clienti non paganti. Se desideri aiuto, fornisci informazioni significative che possono essere utilizzate per aiutarti a inchiodare le cose.
TomTom

Ho modificato la mia domanda, se hai tempo puoi aiutarmi con i tuoi suggerimenti.
Kevin Parker,

Poiché è probabile che la scheda di rete e la CPU rappresentino il collo di bottiglia in qualsiasi configurazione iSCSI del software, è consigliabile menzionare quali sono.
rakslice,

Risposte:


20

Risposta breve: questo è il risultato della latenza di rete e di un carico di lavoro seriale (come imposto usando direct=1, sync=1e iodepth=1).

Risposta lunga: utilizzando direct=1, sync=1ed iodepth=1è stato creato un carico di lavoro di serie, come nuove scritture non possono essere messi in coda prima che la scrittura precedente è stato commesso e confermata. In altre parole, la percentuale di invio delle scritture dipende strettamente dalla latenza della rete. Un semplice pingtra due macchine può benissimo essere superiore a 0,2 ms, tanto più quando si utilizza un protocollo di livello superiore come TCP (e iSCSI su di esso). Presumendo una latenza di rete totale di circa 0,33 ms, si ha un valore IOPS massimo di circa 3000. Ciò non tiene conto di altre fonti di latenza (es: i dischi stessi), quindi è in linea con ciò che è stato registrato.

Prova questo: esegui un primo benchmark senza --direct=1 --sync=1e un altro con queste opzioni in atto ma aumentando le iodepth32 richieste. Quindi riporta qui i risultati.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.