Présentation de la mise à l’échelle côté réception
La mise à l’échelle côté réception (RSS) est une technologie de pilote réseau qui permet une distribution efficace du traitement des réceptions réseau entre plusieurs processeurs dans les systèmes multiprocesseurs.
Notes
Étant donné que les processeurs hyperthread sur le même processeur de cœur partagent le même moteur d’exécution, l’effet n’est pas le même que d’avoir plusieurs processeurs à cœurs. Pour cette raison, RSS n’utilise pas de processeurs hyperthread.
Pour traiter efficacement les données reçues, la fonction de service d’interruption de réception d’un pilote miniport planifie un appel de procédure différée (DPC). Sans RSS, un DPC classique indique toutes les données reçues dans l’appel DPC. Par conséquent, tout le traitement de réception associé à l’interruption s’exécute sur le processeur où l’interruption de réception se produit. Pour obtenir une vue d’ensemble du traitement des réceptions non RSS, consultez Traitement des réceptions non RSS.
RSS permet à la carte réseau et au pilote miniport de planifier les DPC de réception sur d’autres processeurs. La conception RSS garantit que le traitement associé à une connexion donnée reste sur un processeur affecté. La carte réseau implémente une fonction de hachage, et la valeur de hachage obtenue permet de sélectionner un processeur.
La figure suivante illustre le mécanisme RSS pour déterminer un processeur.
Une carte réseau utilise une fonction de hachage pour calculer une valeur de hachage sur une zone définie (type de hachage) dans les données réseau reçues. La zone définie peut être non incohérente.
Un certain nombre de bits les moins significatifs (LSB) de la valeur de hachage sont utilisés pour indexer une table d’indirection. Les valeurs de la table d’indirection sont utilisées pour affecter les données reçues à un processeur.
Pour plus d’informations sur la spécification des tables d’indirection, des types de hachage et des fonctions de hachage, consultez Configuration RSS.
Avec la prise en charge de l’interruption signalée par message (MSI), une carte réseau peut également interrompre le processeur associé. Pour plus d’informations sur la prise en charge de NDIS pour les IMS, consultez NDIS MSI-X.
Prise en charge matérielle pour RSS
La figure suivante illustre les niveaux de prise en charge matérielle pour RSS.
Il existe trois niveaux de prise en charge matérielle possibles pour RSS :
Calcul de hachage avec une seule file d’attente : la carte réseau calcule la valeur de hachage et le pilote miniport affecte les paquets reçus aux files d’attente associées aux processeurs.
Calcul de hachage avec plusieurs files d’attente de réception : la carte réseau affecte les mémoires tampons de données reçues aux files d’attente associées aux processeurs.
Interruptions signalées de message :la carte réseau interrompt le processeur qui doit gérer les paquets reçus.
La carte réseau transmet toujours la valeur de hachage 32 bits.
Comment RSS améliore les performances du système
RSS peut améliorer les performances du système réseau en réduisant :
Retards de traitement en distribuant le traitement de réception à partir d’une carte réseau sur plusieurs processeurs.
La distribution du traitement des réceptions permet de s’assurer qu’aucun processeur n’est lourdement chargé alors qu’un autre processeur est inactif.
Surcharge de verrouillage de rotation en augmentant la probabilité que les algorithmes logiciels qui partagent des données s’exécutent sur le même processeur.
Une surcharge de verrouillage de rotation se produit, par exemple, lorsqu’une fonction s’exécutant sur CPU0 possède un verrou de rotation sur les données auxquelles une fonction s’exécutant sur CPU1 doit accéder. CPU1 tourne (attend) jusqu’à ce que CPU0 libère le verrou.
Rechargement des caches et d’autres ressources en augmentant la probabilité que les algorithmes logiciels qui partagent des données s’exécutent sur le même processeur.
Ce rechargement se produit, par exemple, lorsqu’une fonction qui s’exécute et accède à des données partagées sur CPU0 s’exécute sur CPU1 dans une interruption suivante.
Pour obtenir ces améliorations des performances dans un environnement sécurisé, RSS fournit les mécanismes suivants :
Traitement distribué
RSS distribue le traitement des indications de réception d’une carte réseau donnée dans les contrôleurs de carte d’interface réseau à plusieurs processeurs.
Traitement dans l’ordre
RSS conserve l’ordre de livraison des paquets de données reçus. Pour chaque connexion réseau, les processus RSS reçoivent des indications sur un processeur associé. Pour plus d’informations sur le traitement des réceptions RSS, consultez Indication des données de réception RSS.
Équilibrage de charge dynamique
RSS fournit un moyen de rééquilibrer la charge de traitement réseau entre les processeurs à mesure que la charge du système hôte varie. Pour rééquilibrer la charge, les pilotes sur-ment peuvent modifier la table d’indirection. Pour plus d’informations sur la spécification de tables d’indirection, de types de hachage et de fonctions de hachage, consultez Configuration RSS.
Mise à l’échelle côté envoi
RSS permet aux piles de pilotes de traiter les données côté envoi et réception pour une connexion donnée sur le même processeur. En règle générale, un pilote overlying (par exemple, TCP) envoie une partie d’un bloc de données et attend un accusé de réception avant d’envoyer le solde des données. L’accusé de réception déclenche ensuite les demandes d’envoi suivantes. La table d’indirection RSS identifie un processeur particulier pour le traitement des données de réception. Par défaut, le traitement d’envoi s’exécute sur le même processeur s’il est déclenché par l’accusé de réception. Un pilote peut également spécifier le processeur (par exemple, si un minuteur est utilisé).
Hachage sécurisé
RSS inclut une signature qui offre une sécurité supplémentaire. Cette signature protège le système contre les hôtes distants malveillants qui peuvent tenter de forcer le système à un état déséquilibré.
Prise en charge de MSI-X
RSS, avec prise en charge de MSI-X, exécute la routine de service d’interruption (ISR) sur le même processeur que celui qui exécute ultérieurement le DPC. Cela réduit la surcharge de verrouillage de rotation et le rechargement des caches.