Mauvaises performances iSCSI avec les disques SSD et le réseau 10 Gbe

10

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

sddest 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?

Kevin Parker
la source
2
Pas assez près d'informations suffisantes et nos boules de cristal sont trop chères pour les gaspiller sur des clients non payants. Si vous voulez de l'aide, fournissez des informations utiles qui peuvent vous aider à mieux comprendre.
TomTom
J'ai édité ma question, si vous avez le temps, vous pouvez m'aider avec vos suggestions.
Kevin Parker
Étant donné que la carte réseau et le processeur sont susceptibles d'être le goulot d'étranglement dans toute configuration logicielle iSCSI, vous voudrez peut-être mentionner ce qu'ils sont.
rakslice

Réponses:

20

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=1et iodepth=1).

Réponse longue: en utilisant direct=1, sync=1et iodepth=1vous 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 simple pingentre 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 le iodepthà 32 requêtes. Reportez ensuite ici les résultats.

shodanshok
la source