Comme la plupart des problèmes de performance, c'est compliqué. La quantité de bande passante obtenue par chaque tâche est une interaction complexe entre de nombreux éléments, à différentes couches de la pile réseau. Même sans mise en forme. Une liste incomplète :
- Planificateur de CPU pour savoir quand les tâches (et les gestionnaires d'interruptions du pilote) peuvent arriver sur le CPU
- La vitesse à laquelle les tâches obtiennent leurs données, éventuellement limitée par des goulots d'étranglement ou des conflits
- Quelle discipline de mise en file d'attente est utilisée, essentiellement un planificateur de paquets
- Détails du pilote, tels que le nombre de files d'attente TX matérielles et la manière dont ils sélectionnent les flux
- Comportement du protocole TCP :si un flux atteint le contrôle de congestion, il peut rester lent alors que la bande passante est limitée
- Toutes les considérations ci-dessus pour le(s) système(s) distant(s) recevant les flux
- Si toutes vos connexions ne vont pas au même destinataire, l'autre la fin a peut-être plus d'impact que votre fin
Beaucoup d'entre eux n'optimisent pas pour une "équité" de bande passante égale, mais d'autres critères. Le contrôle de la congestion TCP préférerait avoir un peu de goodput plutôt que de subir un effondrement congestif.
Et n'oubliez pas non plus que vous êtes probablement pas le seul du réseau à un moment donné - vous devez donc également prendre en compte les routeurs, commutateurs, etc. entre "ici" et "là".
Si cela devait être plus qu'une curiosité, une solution aussi rapide que possible est d'obtenir plus de bande passante.
Ou, la QoS, la mise en forme ou la limitation des applications peut définir des quotas pour un meilleur comportement global, quel que soit le meilleur moyen. Mais ce n'est plus aussi rapide que possible, vous choisissez les gagnants et les perdants par politique.