Compartir a través de


Problema de uso elevado de CPU en el servidor SMB

En este artículo se describe cómo solucionar el problema de uso elevado de CPU en el servidor SMB.

Uso elevado de CPU debido a problemas de rendimiento del almacenamiento

Los problemas de rendimiento del almacenamiento pueden provocar un uso elevado de la CPU en los servidores SMB. Antes de solucionar problemas, asegúrese de que el paquete acumulativo de actualizaciones más reciente está instalado en el servidor SMB para eliminar los problemas conocidos en srv2.sys.

En la mayoría de los casos, observará el problema de un uso elevado de la CPU en el proceso del sistema. Antes de continuar, use el Explorador de procesos para asegurarse de que srv2.syso ntfs.sys consume recursos excesivos de CPU.

Escenario de red de área de almacenamiento (SAN)

En los niveles agregados, el rendimiento general de SAN puede parecer correcto. Sin embargo, cuando se trabaja con problemas de SMB, el tiempo de respuesta de la solicitud individual es lo que más importa.

Por lo general, este problema puede deberse a algún tipo de cola de comandos en la SAN. Puede usar Perfmon para capturar un seguimiento de Microsoft-Windows-StorPort y analizarlo para determinar con precisión la capacidad de respuesta del almacenamiento.

Latencia de E/S de disco

La latencia de E/S de disco es una medida del retraso entre el momento en que se crea y se completa una solicitud de E/S de disco.

La latencia de E/S que se mide en Perfmon incluye todo el tiempo que se dedica a las capas de hardware más el tiempo que se pasa en la cola del controlador de puerto de Microsoft (Storport.sys para SCSI). Si los procesos en ejecución generan una cola de StorPort grande, la latencia medida aumenta. Esto se debe a que la E/S debe esperar antes de que se envíe a las capas de hardware.

En Perfmon, los siguientes contadores muestran la latencia del disco físico:

  • "Objeto de rendimiento de disco físico":> "Promedio de segundos de disco/contador de lectura": muestra la latencia media de lectura.
  • "Objeto de rendimiento de disco físico":> "Contador promedio de segundos de disco/escritura": muestra la latencia media de escritura.
  • "Objeto de rendimiento de disco físico":> "Promedio de segundos de disco/contador de transferencia": muestra los promedios combinados de lecturas y escrituras.

La instancia de "_Total" es un promedio de las latencias de todos los discos físicos del equipo. Cada una de las demás instancias representa un disco físico individual.

Nota:

No confunda estos contadores con promedio de transferencias de disco por segundo. Estos son contadores completamente diferentes.

Pila de almacenamiento de Windows

En esta sección se proporciona una breve explicación sobre la pila de almacenamiento de Windows.

Cuando una aplicación crea una solicitud de E/S, envía la solicitud al subsistema de E/S de Windows en la parte superior de la pila. A continuación, la E/S viaja hasta la pila hasta el subsistema de hardware "Disk". A continuación, la respuesta recorre todo el camino de vuelta. Durante este proceso, cada capa realiza su función y, a continuación, entrega la E/S a la siguiente capa.

Diagrama que muestra el flujo de la pila de almacenamiento.

Perfmon no crea datos de rendimiento por segundo. En su lugar, consume datos proporcionados por otros subsistemas dentro de Windows.

Para el "objeto de rendimiento de disco físico", los datos se capturan en el nivel "Administrador de particiones" en la pila de almacenamiento.

Al medir los contadores que se mencionan en la sección anterior, se mide todo el tiempo que pasa la solicitud por debajo del nivel "Administrador de particiones". Cuando el administrador de particiones envía la solicitud de E/S a la pila, la marcamos de tiempo. Cuando se devuelve, se marca de nuevo el tiempo y se calcula la diferencia de tiempo. La diferencia de tiempo es la latencia.

Al hacerlo, se explica el tiempo que se dedica a los siguientes componentes:

  • Controlador de clase: administra el tipo de dispositivo, como discos, cintas, etc.
  • Controlador de puerto: administra el protocolo de transporte, como SCSI, FC, SATA, etc.
  • Controlador de minipuerto de dispositivo: este es el controlador de dispositivo para el adaptador de almacenamiento. Lo suministra el fabricante de los dispositivos, como Raid Controller y FC HBA.
  • Subsistema de disco: incluye todo lo que está debajo del controlador de minipuerto de dispositivo. Esto podría ser tan sencillo como un cable conectado a un único disco duro físico o tan complejo como una red de área de almacenamiento. Si se determina que el problema se debe a este componente, puede ponerse en contacto con el proveedor de hardware para obtener más información sobre la solución de problemas.

Puesta en cola de disco

Hay una cantidad limitada de E/S que un subsistema de disco puede aceptar en un momento dado. El exceso de E/S se pone en cola hasta que el disco puede aceptar de nuevo la E/S. El tiempo que la E/S pasa en las colas por debajo del nivel "Administrador de particiones" se tiene en cuenta en las medidas de latencia del disco físico Perfmon. A medida que las colas aumentan y la E/S debe esperar más tiempo, también aumenta la latencia medida.

Hay varias colas por debajo del nivel "Administrador de particiones", como se indica a continuación:

  • Cola del controlador de puerto de Microsoft: cola SCSIport o Storport
  • Cola de controladores de dispositivo proporcionados por el fabricante: controlador de dispositivo OEM
  • Colas de hardware: como cola de controlador de disco, cola de conmutadores SAN, cola de controlador de matriz y cola de disco duro

También tenemos en cuenta el tiempo que el disco duro dedica activamente a dar servicio a la E/S y el tiempo de viaje que se tarda en que la solicitud vuelva al nivel "Administrador de particiones" que se marcará como completada.

Por último, debemos prestar especial atención a la cola de controladores de puerto (para Storport.sys SCSI). El controlador de puerto es el último componente de Microsoft que toca una E/S antes de entregarla al controlador de minipuerto de dispositivo proporcionado por el fabricante.

Si device miniport driver can't accept more IO because its queue or the hardware queues below it are saturad, we'll start accumulating IO on the Port Driver Queue. El tamaño de la cola del controlador de puerto de Microsoft solo está limitado por la memoria del sistema (RAM) disponible y puede crecer mucho. Esto provoca una latencia medida grande.

CPU alta causada por la enumeración de carpetas

Para solucionar este problema, deshabilite la característica enumeración basada en acceso (ABE).

Para determinar qué recursos compartidos SMB tienen habilitado ABE, ejecute el siguiente cmdlet de PowerShell:

Get-SmbShare | Select Name, FolderEnumerationMode

Unrestricted = ABE deshabilitado.
AccessBase = ABE habilitado.

Puede habilitar ABE en Administrador del servidor. Vaya a Recursoscompartidos de servicios > de archivos y almacenamiento, haga clic con el botón derecho en el recurso compartido, seleccione Propiedades, vaya a Configuración y, a continuación, seleccione Habilitar enumeración basada en acceso.

Captura de pantalla que muestra la opción Habilitar enumeración basada en acceso en Configuración de Administrador del servidor.

Además, puede reducir ABELevel a un nivel inferior (1 o 2) para mejorar el rendimiento.

Para comprobar el rendimiento del disco cuando la enumeración es lenta, abra la carpeta localmente a través de una consola o una sesión RDP.