Cible iSCSI
Ubuntu 14.04 (Trusty Tahr) avec 16 Go de RAM et 16 cœurs comme cible iSCSI soutenue par LVM à l'aide de trois disques SSD Samsung, chacun capable de faire 65 000 IOPS à l'aide d'un contrôleur LSI 6 Gbit / s avec cache intégré.
Benchmark sur disque SSD dans la cible:
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
Où sdd
est configuré dans le RAID matériel 0 à l' aide de trois SSD Samsung 850 EVO.
Initiateur
J'ai exporté un LUN 500G sur un client Ubuntu 14.04 avec 32 Go de RAM et 8 processeurs principaux.
Référence sur les LUN exportés
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
Il y a une baisse significative des performances lors de l'exécution de DAS et sur le réseau, je m'attendais à au moins 10 000 IOPS.
La communication entre la cible et l'initiateur est inférieure à 1 ms et iperf affiche un débit réseau de 9,2 Gbit / s.
Je comprends qu'il y aura un impact sur les performances des écritures 4k car chaque donnée doit passer par la pile réseau de l'initiateur et de la cible avant d'être écrite sur le disque, mais c'est une baisse inacceptable de 65k à 2k.
Où peut être le problème? J'ai une carte réseau Ethernet 10 Gbit / s entre la cible et l'initiateur. Des idées?
la source
Réponses:
Réponse courte: il s'agit des résultats de la latence du réseau et d' une charge de travail série (comme vous l'avez imposé en utilisant
direct=1
,sync=1
etiodepth=1
).Réponse longue: en utilisant
direct=1
,sync=1
etiodepth=1
vous avez créé une charge de travail série, car les nouvelles écritures ne peuvent pas être mises en file d'attente avant que l'écriture précédente ne soit validée et confirmée. En d'autres termes, le taux de soumission des écritures dépend strictement de la latence du réseau. Un simpleping
entre deux machines peut très bien être supérieur à 0,2 ms, d'autant plus lorsque vous utilisez un protocole de niveau supérieur comme TCP (et iSCSI en plus). En supposant une latence totale du réseau d'environ 0,33 ms, vous avez une valeur IOPS maximale d'environ 3000. C'est sans tenir compte des autres sources de latence (es: les disques eux-mêmes), donc c'est en ligne avec ce que vous avez enregistré.Essayez ceci: exécutez un premier benchmark sans
--direct=1 --sync=1
, et un autre avec ces options en place mais en augmentant leiodepth
à 32 requêtes. Reportez ensuite ici les résultats.la source