Pourquoi les écritures open-iscsi sont-elles deux fois plus lentes que Samba via Ethernet 10G?

9

Sur mon serveur de fichiers local, j'ai raid-6 sur des disques durs 7x.

dd if=/dev/zero of=tempfile bs=1M count=2048 conv=fdatasync

Le test de vitesse local me donne une vitesse d'écriture de 349 Mo / s.

Les écritures à distance sur Samba à partir d'un SSD (> 2 Go / s de vitesse de lecture) me donnent 259 Mo / s d'écritures. Mais les écritures à distance sur le disque iSCSI (sur l'initiateur Win10 iSCSI) me donnent seulement 151 Mo / s d'écritures.

raid6 config - 128K chunk size, stripe_cache_size = 8191. Write intention bitmap is on SSD (Samsung 860 PRO, 4096K bitmap chunk bit).

Tableau monté avec options: rw,noatime,nobarrier,commit=999,stripe=128,data=writeback

configuration open-iscsi: la cible est basée sur un fichier de 4 To.

Des indices pourquoi iSCSI est plus lent que Samba en écriture? Des conseils sur la façon d'améliorer la vitesse d'écriture iSCSI?

Je suppose que cela a quelque chose à voir avec le désir de open-iscsi de vider les écritures sur le disque après chaque opération, ce qui augmente l'amplification d'écriture sur raid6 en raison d'une réécriture de parité excessive. Mais je ne sais pas comment y remédier. Accélérez-le plus que la sécurité des données actuellement écrites en cas de panne de courant.

Comme note secondaire, l'ancienne cible ietd iSCSI avait la capacité d'activer le mode de réécriture (à l'aide IOMode=wb) et la vitesse d'écriture soutenue était beaucoup plus rapide. Malheureusement, il semble actuellement non entretenu.

BarsMonster
la source
2
À quoi ressemble le réseau? 10GigE? Quelle est la version du système d'exploitation du serveur, la version du noyau? Quelle est la cible et la version iscsi? ietd, scst ou lio? Open-iscsi ne fournit qu'un initiateur, pas une cible ... Qu'utilisez-vous pour mesurer la vitesse d'écriture? Quel est le système de fichiers utilisé sur la cible?
wazoox
Dans Windows 10, QoS supprimé de la carte réseau?
yagmoth555
2
La publication de la configuration de votre cible iSCSI et de tous les paramètres ajustables du réseau serait également prudente dans ce cas. Vous pouvez également envisager de tester avec un initiateur open-iscsi sur un client Linux avec un noyau moderne pour donner une comparaison claire entre les initiateurs utilisant la même cible, car le test existant peut être trop restreint par l'initiateur Windows. Plus de données == plus mieux.
Spooler
1
Mais en ce qui concerne la question réelle : iSCSI et Samba sont très différents, et vous utilisez une couche de mise en cache VFS lorsque vous utilisez Samba qui n'existe pas dans un périphérique de bloc nu. Je comprends que vous soyez surpris par les différences de performances, mais vous souciez-vous plus de cette comparaison, ou d'obtenir qu'iSCSI sature votre réseau? Si iSCSI est votre principale préoccupation et que les performances de Samba sont un détail mineur pour le contexte, vous pouvez modifier la question pour la clarifier (et probablement obtenir de meilleures réponses).
Spooler
Vous avez utilisé un Windows 10 pour le test, mais je ne vois aucun détail de la machine utilisée nulle part. (et pourquoi utiliser un OS client Windows pour un tel test?)
yagmoth555

Réponses:

6

Tout d'abord, le RAID-6 est le problème en raison du calcul de la double parité. Deuxièmement, vous pouvez connecter la cible iSCSI deux fois dans MS iSCSI Initiator, activer RR ou la moindre profondeur de file d'attente (malheureusement, Win10 ne prend pas en charge le multichemin, vous pouvez donc le tester avec Windows Server à la place).

En fait, l'accès au niveau bloc doit être plus rapide que l'accès au niveau fichier. Quel type d'outil d'analyse comparative que vous utilisez à partir du site Windows? Je recommanderais d'utiliser diskspd ou FIO. De plus, vous pouvez utiliser quelque chose comme Starwind comme cible iSCSI beaucoup plus rapide.

https://www.starwindsoftware.com/starwind-virtual-san#Hyper-V

Stuka
la source
2
Raid 6 est dans le matériel - pas dans le logiciel. Ce n'est plus un problème de performance depuis une vingtaine d'années.
Nils
RAID-6 est le problème? Les calculs de parité se produisent indépendamment du protocole.
Daniel
2
RAID6 est plus lent non pas à cause d'un calcul de parité, mais à cause d'un soi-disant «trou d'écriture» résultant d'une nature RAID de parité lecture-modification-écriture.
BaronSamedi1958
3
"Raid 6 est dans le matériel - pas dans le logiciel. Ce n'est plus un problème de performance depuis environ 20 ans. - Nils 21 mars à 10:05" -> Ce n'est tout simplement pas vrai :( Lisez ceci -> theithollow.com/
2012/03/21
1

iSCSI doit être utilisé au niveau du bloc, votre description de configuration ressemble à celle que vous utilisez un système de fichiers, en y plaçant un fichier, puis en exécutant ce fichier en tant que couche de bloc iSCSI.

C'est loin d'être idéal, et certainement pas une configuration pour comparer les vitesses. Essayez d'utiliser lvm au-dessus du raid6 pour segmenter l'espace et rester sur la couche de bloc pour iSCSI, ou utilisez raid6 directement comme périphérique iSCSI.

Dans votre configuration actuelle, les données sont transférées via le réseau, frappant un fichier dans le système de fichiers, qui n'est (probablement) pas optimisé pour ce type de charge de travail, et également partagé avec d'autres processus. Il est possible d'effectuer une telle configuration avec iSCSI, mais doit être considéré comme une solution de repli non optimisée.

hargut
la source
1

Veuillez noter qu'il dds'agit d'un point de repère très simple et qu'il est TRÈS sujet aux distorsions. Par exemple, vous ddécrivez des zéros - si quelque chose a un cas particulier pour les données pleines de zéros (par exemple, car il peut effectuer une compression), vous verrez des performances fantastiques mais passez à l'écriture de "vraies données" non nulles et soudainement, ces performances peuvent disparaître. ..

Afin de répondre à votre question (comme dans tout benchmarking), vous devez vraiment isoler les pièces pour identifier le bit introduisant le problème. Par exemple, l'écriture directement sur le système de fichiers Windows (et non via iSCSI) est-elle également extrêmement rapide? Si vous prenez la même configuration matérielle et exécutez Linux au lieu de Windows, est-ce aussi rapide ou ralentit-il? Que se passe-t-il si vous passez à l'utilisation d'un outil de référence comme fio ?

Malheureusement, il y a trop de possibilités pour pouvoir bien répondre à une question comme celle-ci ...

Anon
la source