Que se passe-t-il lorsqu'une connexion Internet est plus rapide que la vitesse d'écriture du stockage?

28

Si l'on tentait de télécharger un fichier à une vitesse de 800 Mb / s (100 Mo / s) sur un disque dur avec une vitesse d'écriture de 500 Mb / s (62,5 Mo / s), que se passerait-il? Le système limiterait-il la vitesse de téléchargement?

ymulki
la source
5
Ceci est, et a été depuis la création des réseaux, une situation totalement courante lorsque vous êtes dans un réseau rapide, comme dans une université en dehors des heures de pointe.
Peter - Rétablir Monica
4
Puisque vous pouvez programmer, vous pouvez facilement l'observer vous-même. Écrivez un serveur et un client TCP simples (vous devriez pouvoir trouver des exemples pour la bibliothèque de sockets de la langue de votre choix), laissez le serveur livrer des données aussi vite que possible et modifiez le client pour lire ces données uniquement à une vitesse spécifiée (dormir entre les lectures). Vérifiez que les données sont reçues intactes. Vous pouvez même observer les paquets envoyés avec wirehark ou similaire.
Carsten S
3
Ayant eu une expérience telle que décrite dans le post de @ PeterA.Schneider, je peux vous dire que vous devez prendre en compte les tampons RAM du système d'exploitation. Jusqu'à ce qu'ils soient remplis, vous pouvez effectivement stocker les données téléchargées à la vitesse de la RAM. (Habituellement, en milliers de mégaoctets par seconde.)
Personne
@Nobody Et, bien sûr, il y a toujours les tuyaux absurdes qui composent la dorsale Internet qui transmettent les données si rapidement que la RAM de votre ordinateur typique ne peut même pas suivre!
Cort Ammon - Rétablir Monica
Votre ordinateur génèrerait la demande ICMP lui disant de ralentir. Cependant, à ces faibles vitesses, vous pourriez aussi bien obtenir un SSD ou un SSD M.2 et maintenant votre vitesse d'écriture est si élevée que 100 Mo / s sera facile. Certains M.2 ont une écriture de 1500 Mo / s. Mettez 2 ou plus dans un RAID et vous pouvez multiplier cette vitesse plusieurs fois. le SSD ordinaire peut être de 300 à 450 Mo / s selon la capacité et la marque. storagereview.com/samsung_960_pro_m2_nvme_ssd_review
cybernard

Réponses:

41

De nombreux protocoles, y compris TCP qui est le protocole le plus utilisé sur Internet, utilisent ce qu'on appelle le contrôle de flux. Le contrôle de flux signifie simplement que TCP s'assurera qu'un expéditeur ne submerge pas un récepteur en envoyant des paquets plus rapidement qu'il ne peut vider son tampon. L'idée est qu'un nœud recevant des données enverra une sorte de rétroaction au nœud envoyant les données pour lui faire connaître son état actuel. Ainsi, la rétroaction bidirectionnelle permet aux deux machines d'utiliser de manière optimale leurs ressources et d'éviter tout problème dû à une incompatibilité dans leur matériel.

https://en.wikipedia.org/wiki/Flow_control_(data)

Sigma
la source
2
... idéalement. Bufferbloat signifie qu'il est probable que plusieurs commutateurs stockent et attendent de transmettre une pile toujours croissante de paquets (ce qui pourrait être quelque peu atténué par un protocole de transfert qui nécessite des ACK occasionnels pour continuer).
Eric Towers
3
Vous pourriez mentionner que cela distingue TCP (hé, il a le contrôle en son nom) d'UDP qui continuera volontiers à envoyer, quelle que soit la capacité du consommateur.
Peter - Rétablir Monica
5
@Fabian C'est ce qui se passe tout le temps de toute façon. Le cache du disque dur du système d'exploitation permet aux données d'être «envoyées» au disque dur beaucoup plus rapidement qu'elles ne peuvent être écrites, remplissant le cache en RAM et écrivant sur le disque dès que possible. Ainsi, selon la quantité de RAM (inutilisée) de votre machine, le système d'exploitation peut mettre en mémoire tampon des dizaines à des centaines de Mo d'un fichier en RAM avant qu'il n'atteigne le disque. La taille du cache est cependant un compromis, car les données que l'application peut considérer comme déjà persistantes sur le disque peuvent ne pas l'être pendant un certain temps, ce qui peut entraîner une perte de données inattendue en cas de panne (d'alimentation) ou similaire.
JimmyB
2
@Fabian: vous pouvez le voir dans la boîte de dialogue de copie de fichiers dans Windows, à partir de 8.1. En mode étendu, il montre le taux de transfert, et vous pouvez observer, que la première moitié d'une seconde environ est très rapide, et si le fichier est plus grand que ce qui aurait pu être transféré pendant cela, alors la vitesse chute considérablement, à un taux constant. Cette vitesse rapide au début était due au cache. Une fois rempli, la vitesse est réduite.
vsz
1
@EricTowers Non, bufferbloat ne se produit que lorsqu'une connexion réseau est le goulot d'étranglement. (Vous pourriez voir une forme de bufferbloat sur le disque dur, qui ralentira les autres opérations sur le disque dur, mais cela n'affectera pas les autres connexions réseau)
user253751
12

ce qui se passerait?

  • Les octets qui ne peuvent pas être écrits sur le disque dur à temps seraient temporairement mis en mémoire tampon quelque part; il est très probable que certains d’entre eux soient mis en mémoire tampon dans l’application qui «convertit» le trafic réseau en trafic de disque dur (c.-à-d. votre navigateur) et, en cas de congestion plus longue, les parties de niveau inférieur de la pile (c.-à-d. le sous-système réseau de votre PC) aurait également des tampons à des niveaux inférieurs, qui se rempliraient jusqu'à saturation.
  • Les informations indiquant que les données arrivent trop rapidement se propageraient alors à l'expéditeur d'une manière ou d'une autre. Dans le cas de TCP / IP, cela signifierait qu'une partie du protocole TCP indique à l'expéditeur qu'il doit arrêter d'envoyer. La page Wikipedia sur TCP / IP le dit mieux quand elle dit:

    Sa responsabilité [TCP] comprend le transfert de message de bout en bout indépendant du réseau sous-jacent, ainsi que le contrôle des erreurs, la segmentation, le contrôle de flux, le contrôle de l'encombrement et ...

  • À la fin de la journée, le "système" (pas nécessairement l'ordinateur du destinataire, mais le système total composé de l'expéditeur, du réseau et du destinataire) "plafonnerait" indirectement la vitesse de téléchargement. À aucun moment, il n'existe une variable de "vitesse". Le trafic réseau et le trafic HDD sont basés sur des blocs, c'est-à-dire que les retards entre ces blocs seraient suffisamment longs (du côté du réseau le plus rapide) jusqu'à ce que la "vitesse" nette (débit) soit en moyenne la même que la vitesse plus lente de votre HDD.

Le système limiterait-il la vitesse de téléchargement?

Pas littéralement. Il y a quelques dizaines d'années, les ordinateurs communiquaient en effet avec des vitesses synchrones (c'est-à-dire des modems avec des paramètres de vitesse fixes). Ceci, à un niveau relativement bas, se produit également aujourd'hui; c'est-à-dire que votre modem DSL ou câble aura probablement une certaine vitesse définie à laquelle il communiquera avec son composant physique de liaison montante directe. Mais en 2017, tout cela est suffisamment compliqué pour que presque tous les composants soient assez dynamiques. Dans le bon vieux temps, les modems n'étaient souvent physiquement capables de parler qu'à une certaine vitesse, et cela devait même être établi avant de se connecter. mais ils ne se sont pas bien déroulés par rapport à TCP / IP.

Aujourd'hui, la vitesse effective est généralement toujours implicitement atteinte par la mise en mémoire tampon, le contrôle de flux, etc.

Notez également que dans votre exemple, il peut même y avoir plus de participants. L'interface réseau pourrait avoir plus de travail à faire (autres connexions à votre PC). Une partie du réseau en cours de route pourrait être occupée (un membre de la famille qui surfe ou regarde des vidéos). Le disque dur peut effectuer 3 écritures de fichiers volumineux en même temps. Il ne serait donc pas logique de définir spécifiquement une "vitesse" qui pourrait être plafonnée.

AnoE
la source
2

Les téléchargements de fichiers (généralement) ont lieu via un protocole appelé TCP. Dans TCP, l'expéditeur n'envoie aucune donnée tant que le récepteur n'est pas prêt à la recevoir.

Ce qui se passera, c'est que votre ordinateur réservera une certaine quantité de RAM pour conserver temporairement les données reçues avant de les écrire sur votre disque dur (c'est ce qu'on appelle un tampon). Ensuite, il demandera à l'expéditeur juste assez de données pour remplir le tampon. Au fur et à mesure qu'il reçoit des données, il commence à écrire des données du tampon sur le disque dur - cependant, il ne demandera pas plus de données tant que le tampon est presque plein.

L'effet global est que l'expéditeur attend simplement que le récepteur se rattrape avant de continuer l'envoi.

user253751
la source