Partager via


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

Cet article aborde la façon de 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 en matière de stockage

Les problèmes de performances en matière de stockage peuvent entraîner une utilisation élevée du processeur sur les serveurs SMB. Avant de résoudre les problèmes, vérifiez que le correctif cumulatif le plus récent 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 l’Explorateur de processus pour vous assurer que srv2.sys, ou 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 globales du SAN peuvent sembler correctes. Toutefois, en travaillant sur les problèmes SMB, le temps de réponse des requêtes individuelles 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 des commandes dans le SAN. Vous pouvez utiliser Perfmon pour capturer un suivi Microsoft-Windows-StorPort et l’analyser pour déterminer avec précision la réactivité du stockage.

Latence d’E/S sur disque

La latence d’E/S du disque est une mesure du délai entre le moment de la création d’une demande d’E/S de disque et son achèvement.

La latence d’E/S mesurée dans Perfmon inclut tout le temps passé dans les couches matérielles en plus du 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. Cela est dû au fait que les E/S doivent attendre avant qu’elles ne sont envoyées aux couches matérielles.

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

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

L’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.

Notes

Ne confondez pas ces compteurs avec les transferts de disque moyen/sec. 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. L’E/S descend ensuite dans la pile jusqu’au sous-système « Disque » matériel. Ensuite, la réponse remonte jusqu’au bout. Au cours de ce processus, chaque couche remplit sa fonction, puis remet l’E/S à la couche suivante.

Diagramme montrant le flux de pile de stockage.

Perfmon ne crée pas de données de performances par seconde. Il consomme plutôt des données fournies par d’autres sous-systèmes dans Windows.

Pour l’« objet de performances de disque physique », les données sont capturées au niveau du 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 en dessous du niveau « Gestionnaire de partition ». Lorsque la demande d’E/S est envoyée par le gestionnaire de partitions dans la pile, nous lui appliquons un horodatage. Lorsqu’elle est renvoyée, nous lui appliquons à nouveau un horodatage 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 de périphérique miniport : il s’agit du pilote de périphérique de l’adaptateur de stockage. Il est fourni par le fabricant des périphériques, tels que le contrôleur Raid et le HBA FC.
  • Sous-système de disque : inclut tout ce qui se trouve en dessous du pilote de périphérique miniport. Il peut s’agir d’un simple câble connecté à un seul disque dur physique, ou d’un réseau de zone de stockage compliqué. S’il est déterminé que le problème est 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 des E/S à nouveau. Le temps passé par les E/S dans les files d’attente en dessous du niveau « Gestionnaire de partitions » est pris en compte dans les mesures de latence du disque physique Perfmon. À mesure que les files d’attente gagnent en volume et que les E/S soient obligées d’attendre plus longtemps, la latence mesurée augmente également.

Il existe plusieurs files d’attente en dessous du niveau « Gestionnaire de partitions », comme suit :

  • File d’attente du pilote de port Microsoft – File d’attente SCSIport ou Storport
  • File d’attente du pilote de périphérique fourni 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 passé activement par le disque dur à la maintenance des E/S et le temps de trajet nécessaire pour que la demande revienne au niveau « Gestionnaire de partitions » pour être marquée comme terminée.

Enfin, nous devons accorder une attention particulière à la file d’attente du pilote 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 de périphérique miniport fourni par le fabricant.

Si le Pilote de périphérique mini-port ne peut plus accepter d’E/S en raison de la saturation de sa file d’attente ou des files d’attente matérielles situées en dessous, nous commencerons à accumuler des E/S sur la file d’attente du Pilote 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 élevée.

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 activés par ABE, 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 le Gestionnaire de serveur. Accédez à Services de fichiers et de stockage>Partages, faites un clic 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 Paramètres de Gestionnaire de serveur.

Vous pouvez également réduire ABELevel à un niveau inférieur (1 ou 2) pour améliorer les performances.

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