Partager via


Performances dans les cartes réseau

Il y a toujours des compromis à faire lorsqu’il s’agit de décider quelles fonctions matérielles implémenter sur un adaptateur réseau. Il devient de plus en plus important de considérer l’ajout de fonctionnalités de déchargement des tâches qui permettent de modérer les interruptions, d’ajuster dynamiquement le matériel, d’améliorer l’utilisation du bus PCI et de prendre en charge les Jumbo Frames. Ces fonctionnalités de déchargement sont importantes pour l’adaptateur réseau haut de gamme utilisé dans des configurations nécessitant des performances maximales.

Prise en charge du déchargement des sommes de contrôle TCP et IP

Pour la plupart des trafics réseau courants, décharger le calcul des sommes de contrôle vers le matériel de l’adaptateur réseau offre un avantage de performance significatif en réduisant le nombre de cycles CPU requis par octet. Le calcul de la somme de contrôle est la fonction la plus coûteuse dans la pile réseau pour deux raisons :

  • Il contribue à la longueur du chemin d’exécution.
  • Il provoque des effets de perturbation du cache (typiquement sur l’expéditeur).

Le déchargement du calcul de la somme de contrôle à l’expéditeur améliore les performances globales du système en réduisant la charge sur le CPU hôte et en augmentant l’efficacité du cache.

Dans le Windows Performance Lab, nous avons mesuré une amélioration du débit TCP de 19 % lorsque la somme de contrôle a été déchargée lors de charges de travail intensives en réseau. L’analyse de cette amélioration montre que 11 % de l’amélioration totale est due à la réduction de la longueur du chemin, et 8 % est due à l’augmentation de l’efficacité du cache.

Le déchargement de la somme de contrôle sur le récepteur présente les mêmes avantages que le déchargement sur l’expéditeur. Un bénéfice accru peut être observé sur les systèmes qui agissent à la fois comme client et serveur, comme un serveur proxy de sockets. Sur les systèmes où le CPU n’est pas nécessairement occupé, comme un système client, le bénéfice du déchargement de la somme de contrôle peut se traduire par de meilleurs temps de réponse réseau plutôt que par un débit nettement amélioré.

Prise en charge du déchargement d’envoi de grandes tailles (LSO)

Windows offre la possibilité à l’adaptateur réseau/pilote d’annoncer une taille maximale de segment (MSS) supérieure à la MTU pour TCP, jusqu’à 64K. Cela permet à TCP d’allouer un tampon pouvant atteindre 64K au pilote, qui divise le grand tampon en paquets qui tiennent dans la MTU du réseau.

Le travail de segmentation TCP est effectué par le matériel de l’adaptateur réseau/pilote au lieu du CPU hôte. Cela entraîne une amélioration significative des performances si le CPU de l’adaptateur réseau est capable de gérer le travail supplémentaire.

Pour de nombreux adaptateurs réseau testés, il y a eu peu d’amélioration observée pour les activités purement réseau lorsque le CPU hôte était plus puissant que le matériel de l’adaptateur réseau. Cependant, pour les charges de travail typiques d’entreprise, une amélioration des performances du système global allant jusqu’à 9 % du débit a été mesurée, car le CPU hôte utilise la majorité de ses cycles pour exécuter des transactions. Dans ces cas, le déchargement de la segmentation TCP vers le matériel libère le CPU hôte de la charge de segmentation, lui permettant ainsi d’effectuer plus de transactions.

Prise en charge du déchargement de la sécurité IP (IPSec)

Windows offre la possibilité de décharger le travail de chiffrement de l’IPSec vers le matériel de l’adaptateur réseau. Le chiffrement, en particulier le 3 DES (également connu sous le nom de triple DES), a un ratio cycles/octet très élevé. Par conséquent, il n’est pas surprenant que le déchargement de l’IPSec vers le matériel de l’adaptateur réseau ait permis d’obtenir un gain de performance de 30 % lors des tests Internet sécurisés et VPN.

Amélioration de la modération des interruptions

Un simple adaptateur réseau génère une interruption matérielle sur l’hôte lors de l’arrivée d’un paquet ou pour signaler l’achèvement d’une requête d’envoi de paquet. La latence des interruptions et les effets de perturbation du cache qui en résultent ajoutent une surcharge à la performance globale du réseau. Dans de nombreux scénarios (par exemple, une utilisation intensive du système ou du réseau), il est préférable de réduire le coût de l’interruption matérielle en traitant plusieurs paquets pour chaque interruption.

Avec des charges de travail réseau importantes, une amélioration des performances allant jusqu’à 9 % du débit a été mesurée lors de charges de travail intensives en réseau. Cependant, ajuster les paramètres de modération des interruptions uniquement pour améliorer le débit peut entraîner une dégradation des temps de réponse. Pour maintenir des réglages optimaux et s’adapter à différentes charges de travail, il est préférable de permettre un ajustement dynamique des paramètres comme décrit dans l’ajustement automatique plus tard dans cet article.

Utilisation efficace du bus PCI

L’un des facteurs les plus importants dans les performances matérielles de l’adaptateur réseau est son efficacité à utiliser le bus PCI. De plus, les performances DMA de l’adaptateur réseau affectent les performances de toutes les cartes PCI qui se trouvent sur le même bus PCI. Les directives suivantes doivent être prises en compte lors de l’optimisation de l’utilisation du PCI :

  • Simplifiez les transferts DMA en agrégeant les pages cibles lorsque cela est approprié.

  • Réduisez la surcharge du protocole PCI en effectuant des DMA par grands segments (au moins 256 octets). Si possible, cadrez le flux de données afin que des paquets entiers soient transférés en une seule transaction PCI. Cependant, considérez comment le transfert doit avoir lieu. Par exemple, n’attendez pas que toutes les données arrivent avant d’initier les transferts, car cela augmenterait la latence et consommerait de l’espace tampon supplémentaire.

  • Il est préférable de compléter le transfert de paquets DMA avec des octets supplémentaires, plutôt que d’exiger un transfert supplémentaire court pour « nettoyer » en transférant les derniers octets du paquet.

  • Utilisez les transactions Memory Read, Memory Read Line et Memory Read Multiple comme recommandé par la spécification PCI.

  • Le matériel d’interface de bus de l’adaptateur réseau doit détecter les limitations du contrôleur de mémoire hôte et ajuster son comportement en conséquence. Par exemple, le matériel d’interface de bus de l’adaptateur réseau doit détecter les limitations de prélecture du contrôleur de mémoire lors de lectures DMA de mémoire et attendre une courte période avant de tenter à nouveau la transaction. Le matériel doit détecter les réessais excessifs de la part de l’adaptateur réseau et augmenter le temps avant le premier réessai sur les futures transactions lorsque l’hôte interrompt le transfert. Il est inutile de continuer à soumettre des transactions au contrôleur de mémoire lorsque vous êtes certain qu’il est encore occupé à prélever le prochain ensemble séquentiel de données.

  • Minimisez l’insertion d’états d’attente, en particulier pendant les transferts de données. Il est préférable de libérer le bus et de laisser un autre adaptateur PCI utiliser le bus pour accomplir du travail si plus d’un ou deux états d’attente doivent être insérés.

  • Utilisez les E/S mappées en mémoire au lieu des E/S programmées. Cela est également vrai pour les pilotes.

Prise en charge des jumbo frames

Prendre en charge des tailles de transmission maximale (MTU) plus grandes et donc des tailles de trame plus importantes, en particulier les Jumbo Frames, réduit la surcharge de la pile réseau par octet. Une augmentation de 20 % du débit TCP a été mesurée lorsque la MTU a été modifiée de 1514 à 9000. De plus, une réduction significative de l’utilisation du CPU est obtenue grâce au nombre réduit d’appels de la pile réseau vers le pilote réseau.