Partager via


Mise à l’échelle côté réception NetAdapterCx (RSS)

La mise à l’échelle côté réception (RSS) est une technologie de pilote réseau qui permet une distribution efficace du traitement de réception réseau entre plusieurs processeurs dans des systèmes multiprocesseurs. RSS améliore les performances du système et augmente la scalabilité du réseau en exploitant tous les processeurs disponibles dans un système et en rééquilibrant dynamiquement les charges de travail du processeur.

Cette rubrique met en évidence les pilotes clients RSS pour NetAdapterCx et suppose une connaissance des concepts et de la terminologie RSS. Pour plus d’informations sur RSS en général, y compris des diagrammes illustrant RSS dans différents scénarios matériels, consultez Mise à l’échelle côté réception.

Vue d’ensemble de RSS dans NetAdapterCx

RSS dans NetAdapterCx se concentre sur la facilité de configuration, la simplicité de l’activation et de la désactivation et l’abstraction de la complexité du processeur à l’interruption. Un pilote client pour une carte réseau compatible RSS doit uniquement répondre à trois critères pour prendre en charge RSS dans NetAdapterCx :

  1. Le pilote doit définir les fonctionnalités RSS lors du démarrage d’une carte réseau, mais avant d’appeler NetAdapterStart. Cela inclut l’implémentation de quatre rappels RSS et leur inscription dans la structure des fonctionnalités RSS.
  2. Les files d’attente de chemin de données du pilote doivent être créées et prêtes à accepter les demandes.
  3. Le pilote doit être dans l’état d’alimentation D0 .

La conception de RSS dans NetAdapterCx garantit que le système n’appellera pas les rappels RSS d’un client et n’activera RSS qu’à la fin de la séquence de mise sous tension. Les clients n’ont pas besoin de gérer les demandes de déplacement de table d’indirection ou de gérer d’autres événements RSS jusqu’à ce que tout ce dont ils ont besoin soit prêt.

Plus tard, lorsque le pilote se décharge, NetAdapterCx n’appelle pas les rappels RSS une fois que les files d’attente de chemin de données ont été détruites pendant la séquence de mise hors tension. Étant donné que les files d’attente de chemin de données sont supprimées en tant que première étape pendant la mise hors tension, cela signifie que les clients n’ont pas à gérer les événements RSS possibles à un autre stade pendant la mise hors tension.

Définition des fonctionnalités RSS

Pour commencer à utiliser RSS dans NetAdapterCx, procédez comme suit :

  1. Lorsque vous démarrez votre adaptateur net, informez le système des fonctionnalités et des contraintes RSS de votre matériel à l’aide de la structure NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES .
  2. Initialisez la structure des fonctionnalités en appelant NET_ADAPTER_RECEIVE_SCALING_CAPABILITIES_INIT.
  3. Lorsque vous initialisez la structure des fonctionnalités RSS, définissez les membres de rappel RSS de la structure pour inscrire vos implémentations pour ces rappels :
    1. EvtNetAdapterReceiveScalingEnable
    2. EvtNetAdapterReceiveScalingDisable
    3. EvtNetAdapterReceiveScalingSetHashSecretKey
    4. EvtNetAdapterReceiveScalingSetIndirectionEntries
  4. Définissez le synchrone SynchronizeSetIndirectionEntries de la structure des fonctionnalités RSS comme il convient.
  5. Passez les structures de fonctionnalités RSS initialisées à la méthode NetAdapterSetReceiveScalingCapabilities .

Activation et désactivation de RSS

Une fois que vous avez défini les fonctionnalités RSS, le système continue avec la séquence de mise sous tension de votre pilote. NetAdapterCx commence à appeler les rappels RSS de votre pilote une fois la dernière étape de création des files d’attente de chemin de données terminée. À ce stade, RSS peut être activé et désactivé en fonction des besoins du système.

Important

Vous ne devez pas effacer ou réinitialiser votre table d’indirection lors de l’activation ou de la désactivation de RSS. L’infrastructure définit l’état de votre table d’indirection initiale.

Activation de RSS

NetAdapterCx active RSS en appelant le rappel EvtNetAdapterReceiveScalingEnable de votre pilote. Dans le contexte de ce rappel, vous activez généralement les bits de contrôle dans votre matériel.

Pour obtenir un exemple de code d’activation de RSS, consultez EvtNetAdapterReceiveScalingEnable.

Désactivation de RSS

NetAdapterCx désactive RSS en appelant le rappel EvtNetAdapterReceiveScalingDisable de votre pilote. Ici, vous désactivez généralement le bit de contrôle dans votre matériel que vous avez défini précédemment dans EvtNetAdapterReceiveScalingEnable.

Pour obtenir un exemple de code de désactivation de RSS, consultez EvtNetAdapterReceiveScalingDisable.

Définition de la clé secrète de hachage

Une fois RSS activé, NetAdapterCx appelle le rappel EvtNetAdapterReceiveScalingSetHashSecretKey pour fournir à votre pilote la clé secrète de hachage que votre carte réseau doit utiliser pour vérifier les calculs de hachage. Ce rappel peut être appelé à tout moment lorsque RSS est en cours d’exécution si la clé secrète de hachage change.

Pour obtenir un exemple de code de définition de la clé secrète de hachage, consultez EvtNetAdapterReceiveScalingSetHashSecretKey.

Déplacement d’entrées de table d’indirection

Pendant que RSS s’exécute sur le système, les pilotes de protocole de couche supérieure surveillent la charge de travail du processeur et gèrent une table d’indirection qui mappe les files d’attente de réception aux processeurs. Lorsque le pilote de protocole doit rééquilibrer la charge de travail du processeur dans RSS, il calcule d’abord un nouveau mappage pour chaque entrée de table d’indirection vers un nouveau processeur. Ensuite, le protocole transmet ces informations à NetAdapterCx, qui gère la complexité du mappage des files d’attente de réception et des vecteurs d’interruption matérielle au processeur approprié pour le compte de votre pilote client de carte réseau. NetAdapterCx stocke la nouvelle table d’indirection, avec des entrées mappées pour recevoir des ID de file d’attente, dans une structure NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRIES et la transmet à votre pilote lorsqu’il appelle la fonction de rappel EvtNetAdapterReceiveScalingSetIndirectionEntries .

Dans ce rappel, vous déplacez chaque entrée de la table d’indirection de votre carte réseau vers la file d’attente de réception spécifiée. Chaque structure NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRY dans le tableau NET_ADAPTER_RECEIVE_SCALING_INDIRECTION_ENTRIES contient l’index de hachage de cette entrée dans la table, la nouvelle file d’attente de réception à laquelle affecter l’entrée et un champ d’état indiquant si ce déplacement individuel a réussi ou non.

La méthode d’attribution d’entrées d’index aux files d’attente de réception matérielles dépend de la conception de votre carte réseau et du nombre de files d’attente de réception qu’elle possède. Pour plus d’informations et un exemple de code, consultez EvtNetAdapterReceiveScalingSetIndirectionEntries.

Prise en charge du processeur hétérogène

Important

La prise en charge hétérogène de l’UC est une fonctionnalité de préversion qui peut être considérablement modifiée avant sa publication commerciale. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.

Les systèmes d’UC hétérogènes utilisent plusieurs types de cœurs qui ont des vitesses d’horloge et des fonctionnalités différentes. Comparés aux systèmes multiprocesseurs homogènes où chaque cœur est identique les uns aux autres, les systèmes d’UC hétérogènes peuvent mieux s’adapter aux charges de calcul dynamique et utiliser moins d’énergie.

À compter de la préversion wdk version 25197, NetAdapterCx offre une prise en charge hétérogène du système d’UC en utilisant efficacement les différents types de cœurs. Pendant l’exécution de RSS, le système décide du processeur à utiliser en fonction de la charge de travail du trafic reçue par le pilote client. Lorsqu’il y a moins de trafic reçu, des cœurs plus petits et plus économes en énergie peuvent gérer le trafic. Quand il y a plus de trafic, des cœurs plus volumineux et plus performants sont nécessaires pour interroger en permanence les paquets reçus.

Pour choisir la prise en charge du système hétérogène, l’administrateur système doit définir le mot clé INF standardisé*RSSProfile sur NdisRssProfileBalanced. Il s’agit du profil par défaut pour les systèmes hétérogènes. Pour permettre au système de choisir les meilleurs cœurs à utiliser, vous ne pouvez pas définir de mots clés avancés RSS.

Les autres profils RSS sont également pris en charge pour les systèmes hétérogènes. Si vous souhaitez contrôler les paramètres avancés comme le numéro de processeur de base RSS et le nombre maximal de processeur RSS sur le système, vous devez utiliser un autre profil RSS.

Vous pouvez également utiliser NdisRssProfileBalanced sur un système d’UC homogène. Dans ce cas, le système décide quels processeurs utiliser pour RSS.