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 la CPU debido a problemas de rendimiento de almacenamiento

Los problemas de rendimiento del almacenamiento pueden provocar un uso elevado de la CPU en 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 de srv2.sys.

En la mayoría de los casos, observará el problema del uso elevado de la CPU en el proceso del sistema. Antes de continuar, use el Explorador de procesos para asegurarse de que srv2.sys o 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 alguna forma de puesta en 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 invierte en las capas de hardware más el tiempo dedicado a la cola de Microsoft Port Driver (Storport.sys para SCSI). Si los procesos en ejecución generan una cola de StorPort grande, aumenta la latencia medida. Esto se debe a que la E/S debe esperar antes de que se envíe a las capas de hardware.

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

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

La instancia de "_Total" es una media 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. 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. Después, la E/S recorre toda la pila hasta llegar al subsistema hardware "Disco". Después, la respuesta vuelve a subir. Durante este proceso, cada capa realiza su función y después pasa la E/S a la capa siguiente.

Diagrama que muestra el flujo de la pila de almacenamiento.

Perfmon no crea ningún dato 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" de la pila de almacenamiento.

Cuando medimos los contadores que se mencionan en la sección anterior, estamos midiendo todo el tiempo que invierte la solicitud por debajo del nivel de "Administrador de particiones". Cuando el administrador de particiones envía la solicitud de E/S por la pila, le ponemos la marca de tiempo. Cuando regrese, volvemos a ponerle la marca de tiempo y calculamos la diferencia de tiempo. La diferencia de tiempo es la latencia.

Al hacerlo, estamos teniendo en cuenta el tiempo dedicado 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 el controlador Raid y FC HBA.
  • Subsistema de disco: incluye todo lo que está por debajo del Controlador de minipuerto de dispositivo. Puede ser tan simple 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 está causado por este componente, puede ponerse en contacto con el proveedor de hardware para obtener más información sobre la solución de problemas.

Cola de discos

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 pueda aceptar la E/S de nuevo. 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 de disco físico Perfmon. A medida que las colas aumentan y la E/S debe esperar más tiempo, la latencia medida también crece.

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

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

También tenemos en cuenta el tiempo que el disco duro dedica activamente a mantener la E/S y el tiempo de desplazamiento que se tarda en que la solicitud vuelva al nivel "Administrador de particiones" para que se marque como completada.

Por último, tenemos que 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 que se la entreguemos al Controlador de minipuerto de dispositivo suministrado por el fabricante.

Si el controlador de minipuerto de dispositivo no puede aceptar más E/S porque su cola o las colas de hardware situadas por debajo están saturadas, empezaremos a acumular E/S en la cola de Controlador de puerto. El tamaño de la cola del Controlador de puertos de Microsoft está limitado solo por la memoria disponible del sistema (RAM), y puede crecer mucho. Esto provoca una latencia medida grande.

CPU elevada 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 abe habilitado, 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 Servicios de archivo y almacenamiento>Recursos compartidos, haga clic con el botón derecho en el recurso compartido, seleccione Propiedades, vaya a Configuración y después seleccione Habilitar enumeración basada en acceso.

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

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

Puede comprobar el rendimiento del disco cuando la enumeración sea lenta abriendo la carpeta localmente a través de una consola o una sesión de RDP.