2008-11-11 4 views
13

Comment choisir la taille d'un tampon (octets lus ou écrits sur le socket) pour le débit maximum lors de l'implémentation d'un transfert HTTP et FTP de bas niveau? Mon application devrait transférer des données avec HTTP ou FTP sur des connexions variant de 130 Kbps à 3 Mbps (je connais la vitesse prévue au préalable). Parfois, il s'agit d'un transfert à sens unique, parfois dans les deux sens. Dois-je m'en tenir à une taille de mémoire tampon moyenne ou dois-je la faire varier en fonction de la vitesse de connexion?Choix de la taille du tampon pour les transferts FTP et HTTP

Merci.

Répondre

6

D'abord, prenez quelques mesures.

Ensuite, après avoir effectué une mesure de performance fiable, modifiez la taille de votre mémoire tampon et tracez un graphique de la vitesse par rapport à la taille de la mémoire tampon.

Étant donné que vous connaissez les vitesses de connexion à l'avance, vous devriez pouvoir obtenir des mesures de vitesses réelles avec différentes tailles de tampons réelles.

Le système d'exploitation, la pile de protocoles et le réseau sont trop complexes pour élaborer une réponse à partir des premiers principes. Vous devez mesurer avant de faire quoi que ce soit.

+0

Merci. Les mesures sont quelque chose que nous sommes en train de faire. Je pensais qu'il pourrait y avoir un algorithme générique ou conseiller comme utiliser 2x MTU ou quelque chose comme ça ... Eh bien, alors la mesure est. – wasker

+0

S'il existait un algorithme générique, il aurait déjà été implémenté dans le cadre du protocole. Il n'y a jamais d'algorithmes génériques qui n'ont pas été implémentés. La mesure est votre seul choix. –

11

Choisissez une taille de mémoire tampon supérieure à 8 Ko. 9000 est généralement la plus grande taille MTU (unité de transmission maximale) utilisée même dans les réseaux les plus rapides. Lorsque vous utilisez un tampon plus grand que le MTU de la connexion, le système d'exploitation le décomposera en morceaux de taille MTU si nécessaire, et donc tout ce que vous utiliserez sur le MTU aura peu d'effet sur les performances du réseau. Cependant, l'utilisation d'un tampon de grande taille aura probablement d'autres effets sur les performances. Si vous transférez des fichiers, l'utilisation de tampons volumineux peut augmenter les performances de lecture, améliorant ainsi la vitesse de votre application. Donc, choisir un bon nombre rond comme 16KB est une bonne idée. Ne passez certainement pas en dessous de 1500, car cela peut affecter négativement les performances du réseau (entraînant parfois l'envoi de petits paquets par le système d'exploitation, ce qui diminue les performances sur le réseau).

+0

Salut, merci pour vos pensées. Et si nous parlions de réseaux lents (130 kbps) et de transfert bidirectionnel (supposons que nous ayons une connexion symétrique). Les grands tampons ne vont-ils pas obstruer la transmission dans l'une des directions, tout en profitant de l'autre? – wasker

+0

Cela dépend des caractéristiques physiques du lien (simplex vs. duplex). La plupart des connexions Ethernet sont en duplex, ce qui signifie qu'elles peuvent envoyer et recevoir en même temps. – SoapBox

+0

Mais aussi, la congestion dans les réseaux est généralement causée par le nombre de paquets (pas leur taille). Tant de petits paquets peuvent causer plus de problèmes que quelques gros. – SoapBox

Questions connexes