Prise en charge de la technologie NUMA dans SQL Server

Les modifications clés suivantes ont été apportées à SQL Server 2005 dans le but de tirer parti de l'architecture NUMA.

Regroupement d'unités centrales communes

SQL Server regroupe les planificateurs à mapper dans le regroupement d'unités centrales, en fonction de la limite NUMA matérielle présentée par Windows. Par exemple, un serveur à 16 voies peut être constitué de 4 nœuds NUMA, avec 4 unités centrales par nœud. Cette architecture offre à ce groupe de planificateurs une localité de mémoire supérieure lors du traitement des tâches sur un nœud donné. Avec SQL Server, vous pouvez subdiviser des unités centrales associées à un nœud NUMA en plusieurs nœuds d'unité centrale. Il s'agit d'une configuration NUMA logicielle. En règle générale, la subdivision d'unités centrales permet de répartir le travail sur plusieurs nœuds d'unités centrales Pour plus d'informations sur la configuration NUMA logicielle, consultez Présentation de l'accès NUMA (Non-uniform Memory Access).

Lorsqu'un thread en cours d'exécution sur un nœud matériel NUMA spécifique doit allouer de la mémoire, le gestionnaire de mémoire de SQL Server privilégie la localité de référence en cherchant à allouer d'abord la mémoire associée au nœud NUMA. De la même manière, les pages de pool de mémoires tampons sont distribuées parmi les différents nœuds matériel NUMA. Il est plus efficace pour un thread d'accéder à la mémoire d'une page de mémoire tampon allouée à la mémoire locale que d'y accéder à partir de la mémoire non locale. Pour plus d'informations, consultez Agrandissement et réduction du pool de mémoires tampons sous NUMA.

Chaque nœud NUMA (configuration NUMA logicielle ou configuration NUMA matérielle) est associé à un port de terminaison d'E/S utilisé pour le traitement des E/S réseau, qui est réparti entre plusieurs ports. Lorsqu'un client se connecte à SQL Server, cette connexion est liée à l'un des nœuds. Toutes les requêtes de traitements émanant de ce client sont traitées sur ce nœud.

Chaque fois que l'instance de SQL Server démarre dans un environnement NUMA, le journal des erreurs SQL contient des messages d'information décrivant la configuration NUMA.

Comment SQL Server mappe les nœuds d'une configuration NUMA logicielle aux nœuds d'une configuration NUMA matérielle

Une configuration NUMA logicielle est définie une fois pour toutes les instances SQL Server de l'ordinateur, par conséquent les différentes instances de Moteur de base de données voient toutes les mêmes nœuds logiciels NUMA. Chaque instance de Moteur de base de données utilise ensuite l'option de masque d'affinité pour sélectionner les unités centrales appropriées. Chaque instance utilise en suite les nœuds logiciels NUMA associés à ces unités centrales.

Au démarrage, Windows alloue de la mémoire au système d'exploitation à partir du NODE 0 matériel. Ce nœud a en effet moins de mémoire locale disponible pour d'autres applications que les autres nœuds. Ce problème se complique dans le cas d'un cache du système de fichiers volumineux. Lorsque SQL Server démarre sur un ordinateur équipé de plusieurs nœuds NUMA, celui-ci démarre sur un nœud NUMA différent du NODE 0 afin de pouvoir allouer de la mémoire locale à ses structures globales. Pour définir la configuration NUMA logicielle, consultez Procédure : configurer SQL Serveur pour utiliser soft-NUMA.

Affectation des connexions aux nœuds NUMA

TCP et VIA peuvent affiner les connexions à un ou plusieurs nœuds NUMA spécifiques. En l'absence d'affinités, ou si la connexion s'effectue via des canaux nommés ou la mémoire partagée, les connexions sont distribuées aux nœuds NUMA selon le principe du tourniquet. Au sein d'un nœud NUMA, la connexion s'effectue sur le planificateur le moins chargé de ce nœud. En raison de l'affectation des nouvelles connexions selon le principe du tourniquet, il est possible que toutes les unités centrales au sein d'un nœud soient occupées tandis qu'un autre nœud est inactif. Si le nombre de vos unités centrales est faible (par exemple 2) et si vous constatez des déséquilibres de planification importants en raison des traitements de longue durée tels que les chargements en masse, vous pouvez désactivez NUMA pour améliorer éventuellement les performances. Pour plus d'informations, consultez Procédure : mapper les ports TCP/IP aux nœuds NUMA.

Limitations de version SQL Server

SQL Server 2000 jusqu'au Service Pack 3 n'offre pas de prise en charge spéciale pour NUMA ; cependant, le Service Pack 4 permet des optimisations limitées de NUMA. SQL Server 2005 offre un grand nombre d'améliorations importantes, et les utilisateurs de NUMA sont invités à mettre à niveau vers SQL Server 2005 pour tirer pleinement partie de l'architecture NUMA.