Pourquoi le débit de transfert SMB est-il si bas?


10

Ok, il y a un peu plus dans l'histoire que le titre l'indique.

Contexte et environnement : je copie plusieurs To d'un ancien serveur Ubuntu vers un nouveau serveur Windows 2012 sur SMB. (Techniquement, c'est du matériel de base, mais ce sont des serveurs ici.) Tout le monde est sur un réseau local gigabit, et l'ancienne boîte Ubuntu a une interface liée. Je crois que le serveur Ubuntu a deux cartes Ethernet Rosewill PCI-e 1x et le serveur Windows a une carte Ethernet Intel PCI assez agréable.

L'ordinateur de destination (le serveur Windows) exécute un pool de stockage avec parité sur 4 lecteurs de 2 To. Il exécute le nouveau ReFS de Microsoft. L'ordinateur source (le serveur Ubuntu) exécute un miroir RAID logiciel. Il fonctionne bien ol 'EXT4.

Les deux serveurs fonctionnent via un seul commutateur gigabit. J'ai expérimenté la rupture de la liaison sur l'ordinateur source (Ubuntu) sans aucune amélioration.

Problème : je n'ai aucun problème à transférer à des vitesses raisonnables d'autres ordinateurs vers le serveur Windows. D'autres ordinateurs peuvent contenir 50 à 80 Mo / s sans trop de difficultés, mais le transfert à partir de ce serveur Ubuntu ne dépasse pas 20 Mo / s. 4 + TB à 20 Mo / s prennent beaucoup de temps (quelque chose comme 2,3 jours), et je me demande ce que je peux faire pour déterminer où se trouve le goulot d'étranglement.

Symptômes : le processeur sur les deux ordinateurs est assez minime et certainement pas trop occupé. Les disques durs sur les deux ordinateurs sont actifs mais pas submergés, et le processeur IOwait est près de 0% sur au moins le serveur Ubuntu.

J'ai fait une trace Wireshark pendant 35 secondes (probablement assez longtemps pour m'assurer que tous les ACK étaient destinés à de nouveaux paquets) et j'ai remarqué qu'il y avait pas mal de choses auxquelles je ne m'attendais pas. (1) Il n'y avait aucune somme de contrôle pour les ACK (et certains paquets SMB) de Windows à Ubuntu. Cependant, Wireshark affirme que cela peut être dû au «déchargement de la somme de contrôle IP». Ok, j'ai une jolie carte là-dedans. Je suppose qu'il est possible que la carte réseau fasse des calculs de somme de contrôle. Bien. Passons à autre chose ... (2) "Segment invisible TCP TCP". Celui-ci, j'ai un problème. Le numéro ACK est dans une plage acceptable de ce que je peux dire, et il y a souvent d'énormes blocs de ces messages. Peut-être que Wireshark est tout simplement trop lent?

Résumé : La vitesse de transfert est nulle (20 Mo / s sur Gigabit Ethernet) et je ne sais pas pourquoi. Wireshark affirme que Windows ACKe des choses qui n'ont jamais été envoyées par Ubuntu.

Devinez : Ma première supposition est que les cartes Rosewill moins chères sont submergées. Ma deuxième supposition est que les choses de type RAID logiciel à une extrémité ou à l'autre sont inondées de choses à faire.


2
Quelles vitesses obtenez-vous la copie du serveur Ubuntu vers l'un des bureaux (pas Server 2012)? Peut-être WinXP ou Win7? J'ai eu de gros problèmes avec la signature et le cryptage des paquets avec SMB avec Server 2008 et plus.
Dom

Mise à jour: j'ai fini par devoir redémarrer (grâce à une panique du noyau). Malheureusement, le système a maintenant une panique du noyau à chaque démarrage. J'ai sorti ma fidèle copie de Knoppix et monté les disques, et tout va maintenant bien. Maintenant, je copie sur SSH et je ne sais toujours pas où se trouve le goulot d'étranglement. sshdconsomme 60% d'un processeur du côté de Knoppix. En tout cas, mon transfert est en voie d'achèvement. @Dom: Maintenant que vous le mentionnez, je ne me souviens pas y avoir mis toutes ces données beaucoup plus rapidement que 30 Mbps.
Andy

2
@LorenzoVonMatterhorn, veuillez éviter d'utiliser des raccourcisseurs d'URL.
Cristian Ciupitu

Êtes-vous sûr que ce n'est pas un problème avec vos disques?
MariusMatutiae

2
Windows a mis en œuvre une version beaucoup plus rapide du protocole SMB (SMB 2) au cours des 4 à 5 dernières années, qui est beaucoup moins bavarde et plus efficace sur le fil. Je ne sais pas par hasard quand ces changements ont été apportés à Samba, mais il semble que l'ancien Ubuntu ait un Samba plus ancien et peut-être que Knoppix ait une version plus récente.
uSlackr

Réponses:


1

Votre écart de performances correspond à une expérience courante lorsque Samba (pas sûr que ce soit toujours la valeur par défaut; c'était pendant longtemps) est configuré avec la taille par défaut du tampon de socket de lecture et d'écriture de 1024 octets.

J'avais l'habitude de voir cela fréquemment avec les machines Linux et Mac. Espérons que ce ne soit pas encore le cas.

Il y a un argument d'option de socket dans le fichier de configuration de samba où vous pouvez définir la taille du tampon de socket de lecture et d'écriture. Vous suggère de définir les deux à 8192 octets (8 Ko). 4 ou 8 Ko est souvent similaire, mais je ne l'ai pas testé sur un lien gigabit.

De plus, ne vous attendez pas à ce qu'une seule connexion TCP bénéficie d'une liaison liée, le trafic passera presque toujours par l'une des liaisons; sinon, vous vous retrouvez avec beaucoup de paquets en panne à traiter; attendez-vous donc uniquement à un avantage d'équilibrage de charge lors de la maintenance de plusieurs clients. Même dans ce cas, vous devez rechercher les différents modes de liaison et savoir que pour au moins la liaison "mode 4" (IEEE 802.3ad), il existe essentiellement deux modes de hachage de transmission, qui déterminent sur quelle interface esclave envoyer. Il existe un hachage de couche 2 (par défaut) et un hachage de couche 3. Si vous envoyez la majeure partie de vos données via la passerelle, le hachage de couche 2 ne se distribuera pas correctement, car l'adresse MAC de la passerelle sera la même. Envisagez plutôt d'utiliser la couche 3.


0

Une fois, j'avais deux cartes Ethernet dans un ordinateur Ubuntu et pour une raison quelconque, cela ne fonctionnait pas correctement - ils rivalisaient tous les deux pour les mêmes paquets, donc parfois j'obtiendrais une réponse parfois je ne le ferais pas, selon que l'autre carte réseau attrapait les emballés. C'était étrange. J'ai dû l'avoir mal configuré d'une manière ou d'une autre, mais j'aurais pensé qu'il aurait simplement fonctionné. Les cartes avaient bien sûr des adresses IP uniques.

Quoi qu'il en soit, il serait simple pour vous de l'essayer avec une seule carte Ethernet dans la machine connectée au réseau juste pour exclure cela.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.