Problème d’utilisation élevée du processeur sur le serveur SMB

Cet article explique comment résoudre le problème d’utilisation élevée du processeur sur le serveur SMB.

Utilisation élevée du processeur en raison de problèmes de performances de stockage

Les problèmes de performances de stockage peuvent entraîner une utilisation élevée du processeur sur les serveurs SMB. Avant de résoudre les problèmes, assurez-vous que le dernier correctif cumulatif est installé sur le serveur SMB pour éliminer les problèmes connus dans srv2.sys.

Dans la plupart des cas, vous remarquerez le problème d’utilisation élevée du processeur dans le processus système. Avant de continuer, utilisez process Explorer pour vous assurer que srv2.sysou ntfs.sys consomme des ressources processeur excessives.

Scénario de réseau de zone de stockage (SAN)

Dans les niveaux agrégés, les performances SAN globales peuvent sembler correctes. Toutefois, lorsque vous travaillez avec des problèmes SMB, le temps de réponse de chaque demande est ce qui compte le plus.

En règle générale, ce problème peut être dû à une forme de mise en file d’attente de commandes dans le san. Vous pouvez utiliser Perfmon pour capturer un suivi Microsoft-Windows-StorPort et l’analyser afin de déterminer avec précision la réactivité du stockage.

Latence d’E/S du disque

La latence d’E/S du disque est une mesure du délai entre le moment où une demande d’E/S de disque est créée et terminée.

La latence d’E/S mesurée dans Perfmon inclut tout le temps passé dans les couches matérielles, ainsi que le temps passé dans la file d’attente du pilote de port Microsoft (Storport.sys pour SCSI). Si les processus en cours d’exécution génèrent une file d’attente StorPort volumineuse, la latence mesurée augmente. En effet, les E/S doivent attendre avant d’être envoyées aux couches matérielles.

Dans Perfmon, les compteurs suivants indiquent la latence du disque physique :

  • « Objet de performance de disque physique » -> « Moyenne disque sec/compteur de lecture » : affiche la latence de lecture moyenne.
  • « Objet de performance de disque physique » -> « Moyenne disque sec/compteur d’écriture » : affiche la latence d’écriture moyenne.
  • « Objet de performances de disque physique » -> « Moyenne disque sec/Compteur de transfert » : affiche les moyennes combinées pour les lectures et les écritures.

Le instance « _Total » est une moyenne des latences pour tous les disques physiques de l’ordinateur. Chacune des autres instances représente un disque physique individuel.

Remarque

Ne confondez pas ces compteurs avec les transferts de disque moyen/s. Ce sont des compteurs complètement différents.

Pile de stockage Windows

Cette section fournit une brève explication sur la pile de stockage Windows.

Lorsqu’une application crée une demande d’E/S, elle envoie la requête au sous-système d’E/S Windows en haut de la pile. Les E/S se déplacent ensuite jusqu’au sous-système « Disque » matériel. Ensuite, la réponse remonte jusqu’à la hauteur. Au cours de ce processus, chaque couche remplit sa fonction, puis transmet les E/S à la couche suivante.

Diagramme montrant le flux de la pile de stockage.

Perfmon ne crée pas de données de performances par seconde. Au lieu de cela, il consomme des données fournies par d’autres sous-systèmes dans Windows.

Pour l'« objet de performance de disque physique », les données sont capturées au niveau « Gestionnaire de partitions » dans la pile de stockage.

Lorsque nous mesurons les compteurs mentionnés dans la section précédente, nous mesurons tout le temps passé par la requête sous le niveau « Gestionnaire de partitions ». Lorsque la demande d’E/S est envoyée par le gestionnaire de partitions en bas de la pile, nous l’horodatageons. Lorsqu’il est retourné, nous l’horodatageons à nouveau et calculons la différence de temps. La différence de temps est la latence.

En procédant ainsi, nous prenons en compte le temps passé dans les composants suivants :

  • Pilote de classe : gère le type de périphérique, tel que les disques, les bandes, etc.
  • Pilote de port : gère le protocole de transport, tel que SCSI, FC, SATA, etc.
  • Pilote Miniport de périphérique : il s’agit du pilote de périphérique de l’adaptateur de stockage. Il est fourni par le fabricant des appareils, tels que Raid Controller et FC HBA.
  • Sous-système de disque : inclut tout ce qui se trouve sous le pilote Miniport de périphérique. Cela peut être aussi simple qu’un câble connecté à un seul disque dur physique, ou aussi complexe qu’un réseau de zone de stockage. Si le problème est déterminé comme étant dû à ce composant, vous pouvez contacter le fournisseur de matériel pour plus d’informations sur la résolution des problèmes.

Mise en file d’attente de disque

Un sous-système de disque peut accepter une quantité limitée d’E/S à un moment donné. Les E/S excédentaires sont mises en file d’attente jusqu’à ce que le disque puisse accepter à nouveau les E/S. Le temps passé par les E/S dans les files d’attente sous le niveau « Gestionnaire de partitions » est pris en compte dans les mesures de latence du disque physique Perfmon. À mesure que les files d’attente augmentent et que les E/S doivent attendre plus longtemps, la latence mesurée augmente également.

Il existe plusieurs files d’attente sous le niveau « Gestionnaire de partitions », comme suit :

  • File d’attente des pilotes de port Microsoft - File d’attente SCSIport ou Storport
  • File d’attente des pilotes de périphérique fournis par le fabricant - Pilote de périphérique OEM
  • Files d’attente matérielles : telles que la file d’attente du contrôleur de disque, la file d’attente des commutateurs SAN, la file d’attente du contrôleur de tableau et la file d’attente de disque dur

Nous prenons également en compte le temps que le disque dur passe activement à la maintenance des E/S et le temps de trajet nécessaire pour que la demande de revenir au niveau « Gestionnaire de partitions » soit marquée comme terminée.

Enfin, nous devons prêter une attention particulière à la file d’attente des pilotes de port (pour les Storport.sys SCSI). Le pilote de port est le dernier composant Microsoft à toucher une E/S avant de le remettre au pilote Miniport d’appareil fourni par le fabricant.

Si le pilote miniport de l’appareil ne peut plus accepter d’E/S, car sa file d’attente ou les files d’attente matérielles situées en dessous sont saturées, nous allons commencer à accumuler des E/S sur la file d’attente des pilotes de port. La taille de la file d’attente du pilote de port Microsoft est limitée uniquement par la mémoire système (RAM) disponible, et elle peut devenir très volumineuse. Cela entraîne une latence mesurée importante.

Utilisation élevée du processeur causée par l’énumération de dossiers

Pour résoudre ce problème, désactivez la fonctionnalité d’énumération basée sur l’accès (ABE).

Pour déterminer les partages SMB sur lesquels ABE est activé, exécutez l’applet de commande PowerShell suivante :

Get-SmbShare | Select Name, FolderEnumerationMode

Unrestricted = ABE désactivé.
AccessBase = ABE activé.

Vous pouvez activer ABE dans Gestionnaire de serveur. Accédez àPartages des services > de fichiers et de stockage, cliquez avec le bouton droit sur le partage, sélectionnez Propriétés, accédez à Paramètres, puis sélectionnez Activer l’énumération basée sur l’accès.

Capture d’écran montrant l’option Activer l’énumération basée sur l’accès sous les Paramètres de Gestionnaire de serveur.

En outre, vous pouvez réduire ABELevel à un niveau inférieur (1 ou 2) pour améliorer les performances.

Vous pouvez case activée performances du disque lorsque l’énumération est lente en ouvrant le dossier localement via une console ou une session RDP.