Compartir a través de


Guía de escenarios: Solución de problemas de rendimiento en Windows

En esta guía de escenario se explica cómo usar Monitor de rendimiento para recopilar datos y cómo usar los datos para restringir el cuello de botella que hace que el equipo sea lento. Presenta enfoques generales e intenta explicar los conceptos de solución de problemas.

Uso de Monitor de rendimiento para registrar datos de rendimiento

Cada versión completa de Windows incluye una herramienta de bandeja de entrada denominada Monitor de rendimiento. Puede usar esta herramienta para realizar un seguimiento de la información relacionada con el rendimiento sobre varios aspectos del sistema Windows mediante contadores de rendimiento integrados en Windows, que nos proporcionan más información sobre el uso de la unidad de procesamiento central (CPU) o el uso de memoria.

Cada contador se construye de la misma manera sencilla:
[Performance counter object]\<Instance>\<Counter Name>

Por ejemplo:
[Processor Information]\<CPU 0\>\% Processor Time

Para almacenar los datos de rendimiento proporcionados por los contadores, puede usar los conjuntos de recopiladores de datos en Monitor de rendimiento. Vea la siguiente captura de pantalla:

Captura de pantalla de conjuntos de recopiladores de datos y Monitor de rendimiento.

Para crear esos conjuntos de recopiladores de datos, puede usar las interfaces gráficas de usuario (GUI) o el logman.exe comando .

Para crear un conjunto de recopiladores de datos, ejecute el siguiente comando en una ventana del símbolo del sistema con privilegios elevados:

logman.exe create counter PerfLog-15Sec-Contoso -o "c:\perflogs\Contoso_PerfLog-15sec.blg" -f bincirc -v mmddhhmm -max 800 -c "Hyper-V Dynamic Memory Balancer (*)\*" "Hyper-V Hypervisor Virtual Processor(*)\*" "Hyper-V Hypervisor Logical Processor(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\Cache\*" "\Network Interface(*)\*" "\Paging File(*)\*" "\PhysicalDisk(*)\*" "\Processor(*)\*" "\Processor Information(*)\*" "\Processor Performance(*)\*" "\Process(*)\*" "\Process V2(*)\*" "\Redirector\*" "\Server\*" "\System\*" "\Server Work Queues(*)\*" "\Terminal Services\*" -si 00:00:15

Para iniciar el contador, ejecute el siguiente comando en una ventana del símbolo del sistema con privilegios elevados:

logman.exe start PerfLog-15Sec-Contoso

Este comando genera un monitor similar a "flight box recorder" en el sistema. El monitor registra los datos de rendimiento cada 15 segundos (consulte -si 00:00:15 el intervalo). Cada vez que se inicia el conjunto de recopiladores, el impacto en el sistema debe ser inferior al 1 %, y no usará más de 800 megabytes (MB) de espacio en el disco duro local. Si reinicia el equipo, debe ejecutar el comando para volver a iniciar el monitor.

Para detener el contador, ejecute el siguiente comando en una ventana del símbolo del sistema con privilegios elevados:

logman.exe stop PerfLog-15Sec-Contoso

El conjunto de recopiladores de datos también sigue el principio de [Performance counter object]\<Instance>\<Counter Name>. El objeto counter se denomina "Memory", ya que este objeto no tiene una instancia. La razón es que hay una memoria en Windows, pero puede haber más de un disco duro o CPU.

Ahora tiene un conjunto de recopiladores de datos que registra los datos cada 15 segundos. Se eligen 15 segundos debido a una limitación de la herramienta utilizada para analizar los datos: Monitor de rendimiento.

Un máximo de 1000 puntos de datos se puede mostrar dentro de un gráfico. Si el recopilador de datos está configurado para registrar datos cada segundo, el gráfico solo puede mostrar los datos en 16 minutos y 40 segundos. Si hay más datos en el registro, comienza a "resumir y combinar" esos puntos de datos. La captura se denomina captura de alta densidad.

Esto podría provocar una situación en la que el gráfico no muestra números precisos. Puede detectarlo examinando el gráfico y comparándolo con los valores Mínimo o Máximo .

En este ejemplo, examine el contador % de tiempo de inactividad de la instancia _Total para el procesador de objetos de contador. En función del valor mínimo, el gráfico debe alcanzar la línea azul (en 32%), pero no es true. Como el número y el gráfico no coinciden, debe comprobar cuántos ejemplos hay en el período mostrado (22 minutos y 01 segundos). Al mantener el mouse sobre, se muestra el número de ejemplos que hay en este punto de datos. Como puede ver, hay 10 ejemplos y, por lo tanto, la herramienta se ve obligada a resumirlas y combinarlas como se trata de una captura con un intervalo de un segundo.

Captura de pantalla del Monitor de rendimiento valor mínimo.

Simplificar Windows

Ahora que tiene el registro del contador de rendimiento, vamos a intentar simplificar Windows de una manera que ayude al análisis. Para ello, divida el sistema en sus componentes lógicos: memoria, almacenamiento, CPU y red.

Captura de pantalla de los componentes lógicos del sistema.

Además de asignar algunos objetos de monitor de rendimiento al recurso físico, es importante recordar que Windows se divide en dos áreas principales: Kernel y Modo de usuario .

Kernel hace referencia al sistema operativo (SO) y a los controladores (esto también incluye el controlador de filtro antivirus). El kernel se representa en Windows mediante una construcción lógica denominada Proceso del sistema, que siempre tiene el identificador 4de proceso . Por motivos de seguridad, esta área está fuertemente protegida. Incluso con herramientas de bandeja de entrada como Monitor de rendimiento, solo se puede obtener una pequeña información de ella. Por ejemplo, puede ver cuánto grupo no paginado está usando, pero no hay información sobre quién lo está usando.

El modo de usuario es donde se ejecutan todas las aplicaciones (aplicaciones modernas, servicios y ejecutables). Con Monitor de rendimiento, puede obtener información sobre cada proceso.

Presentación de los 18 contadores más importantes

Para simplificar, en las secciones siguientes se presentan los 18 contadores más importantes y sus umbrales, desglosados por los recursos físicos a los que están relacionados.

Almacenamiento

Contadores principales Healthy Advertencia Crítica
\LogicalDisk(*)\Avg. Disk sec/Read < 15 ms > 25 ms > 50 ms
\LogicalDisk(*)\Avg. Disk sec/Write < 15 ms > 25 ms > 50 ms
\PhysicalDisk(*)\Avg. Disk sec/Read < 15 ms > 25 ms > 50 ms
\PhysicalDisk(*)\Avg. Disk sec/Write < 15 ms > 25 ms > 50 ms

Nota:

Se pueden tolerar picos cortos. Debe investigar períodos de latencia más largos (más de un minuto o más).

Estos contadores representan la latencia. La latencia se define mediante el tiempo que dedica a obtener la información. Desde la perspectiva del rendimiento del disco, debe examinar más detenidamente la configuración. Para un disco duro normal, en lugar de un disco duro de estado sólido (SSD), el disco normalmente tiene una velocidad de rotación de 5.400 revoluciónes por minuto (RPM). Esto significa que el disco gira el husillo (donde la información se almacena como bloques) 5400 veces por minuto. Debe poder calcular el tiempo necesario para leer cualquier bloque del disco:

Un bloque / (RPM / 60) = latencia para un bloque

Un bloque / 5400 RPM / 60 = 0,011111 s = 11 ms

Por lo tanto, en teoría, el disco debe poder leer cualquier bloque dentro de 11 ms. Si hay una latencia de ~100 ms, el disco debe poder leer el bloque al menos ocho veces, por lo que ¿por qué hay un retraso? ¿El disco está sobrecargado y, si es así, quién lo está usando?

Para identificar quién lo usa, ahora puede comprobar el objeto Contador de procesos.

Contadores de procesos relacionados con las operaciones de disco:

  • \Proceso(*)\Operaciones de lectura de E/S por segundo (tiempos de lectura de disco específicos del proceso)
  • \Process(*)\Operaciones de escritura de E/S/s (tiempos de escritura de disco específicos del proceso)

Puede usar esos contadores e intentar correlacionar la latencia o el uso del disco con el uso del proceso.

Pasemos al siguiente componente físico.

Memoria

Contadores de memoria virtual y memoria física Healthy Advertencia Crítica
\Memory\Pool Paged Bytes | Pool Nonpaged Bytes 0–50% 60–80% 80–100%
\Memory\Available MBytes > 10 % o al menos 4 gigabytes (GB) libres < 10% < 1 % o menos de 500 MB
\Memory\% Committed Bytes en uso 0–50% 60–80% 80–100%

En esta sección se describen los siguientes contadores:

  • Bytes paginados de grupo
  • Bytes no paginados del grupo

Estos contadores representan los recursos del kernel compartidos por todo el sistema. Aunque los procesos pueden reclamar grupos paginados y no paginados, esto se realiza principalmente por los controladores; por lo tanto, los datos no son visibles para Monitor de rendimiento. Aunque el grupo paginado se puede paginar en el archivo de página, el grupo no paginado no puede. Recuerde que esos recursos de kernel dependen del tamaño de memoria (memoria de acceso aleatorio (RAM) que tiene en el sistema. El límite del grupo no paginado es el 75 % de la RAM y afectan directamente a los MBytes disponibles. MBytes disponible es la cantidad de RAM disponible para todos los programas, incluido el kernel.

Para comprender el impacto del proceso en el uso de RAM, puede usar el contador siguiente:

Contador de procesos Comentario
\Process(*)\Working Set Intente relacionarse con MBytes disponibles para identificar el consumidor superior de la RAM. El conjunto de trabajo se define como la cantidad de RAM (no el archivo de página) que un proceso usa en cualquier momento.

Recuerde que Memory\% Committed Bytes In Use representa la memoria virtual que tiene en Windows. Esta es la combinación del archivo de página y la RAM, que se pueden ver en el Administrador de tareas en la pestaña Rendimiento después de seleccionar Memoria:

Captura de pantalla de la memoria mostrada en el Administrador de tareas.

Este sistema tiene 128 GB de RAM y un archivo de página de 128 GB, por lo que la memoria confirmada es de 256 GB. También puede echar un vistazo al grupo paginado y a la memoria del grupo no paginado.

Al investigar problemas de memoria, recuerde que ambas áreas (kernel y usuario) comparten realmente el mismo recurso físico. Por lo tanto, si el equipo tiene poca memoria, intente averiguar quién lo está usando.

Pasemos al siguiente recurso físico.

CPU

Al solucionar problemas de rendimiento de LA CPU, debe dividir el sistema operativo en el modo kernel y usuario de nuevo. Sin embargo, la división es más fácil de entender. El modo de usuario se representa mediante cualquier aplicación o servicio, incluidas las aplicaciones que se ejecutan en modo usuario, que consume ciclos de CPU y no implica hardware distinto de la CPU. Si necesita acceder al hardware, esto da como resultado el modo kernel, ya que la herramienta debe comunicarse con los controladores para acceder a GPU, almacenamiento o red.

A continuación, encontrará algunos ejemplos:

  • SQL Server que realiza un cálculo = Modo de usuario
  • ESCRITURA de archivos de registro de SQL Server en el disco = modo kernel
  • Servidor de archivos que accede a recursos compartidos de red = modo kernel

A continuación, echemos un vistazo a los contadores principales:

Contadores principales Healthy Advertencia Crítica
\Información del procesador(*)\% Tiempo de usuario (modo de usuario) < 50% 50–80% > 80%
\Información del procesador(*)\% Tiempo con privilegios (modo kernel) < 30% 30–50% > 50%
\Información del procesador(*)\% tiempo de inactividad >20% >10% <10%

De nuevo, los picos cortos son aceptables, pero si lo ve durante más de un minuto, empiece a investigar.

Cada vez que se usa una CPU, la CPU consume % de tiempo de usuario (modo de usuario) o % de tiempo con privilegios (modo kernel). Si encuentra una situación elevada de CPU (= porcentaje bajo de tiempo de inactividad), debe averiguar quién la usa examinando los siguientes contadores secundarios:

Contadores secundarios Comentario
\Proceso(*)\% Tiempo de usuario Recuerde que es posible que tenga más de un proceso activo.
*\Process()\% Privileged Time** Recuerde que solo hay información limitada sobre el proceso del sistema. Normalmente, el proceso del sistema es el controlador superior para % de tiempo con privilegios, ya que el proceso hospeda unidades dentro de esta construcción lógica. Sin embargo, no se limita a esto.

100% proceso\% tiempo de usuario = una CPU. Si tiene 16 CPU, el uso máximo que puede alcanzar un proceso es del 1600 %. Vea la siguiente captura de pantalla:

Captura de pantalla de un gráfico de Monitor de procesos para cuatro CPU.

En este ejemplo, ha usado una herramienta para simular el uso de CPU (% de tiempo de usuario). Ha limitado la herramienta para ejecutarse en solo cuatro CPU (CPU 12, 13, 14 y 15). Una vez que hay cuatro subprocesos activos, queda claro cómo todas las CPU alcanzan el 100 % mientras la propia aplicación (esfuerzo de CPU) alcanza el 400 %. En este ejemplo se muestra la relación entre el uso de CPU de Esfuerzo de CPU y la carga de CPU en las CPU a las que se ha limitado la aplicación. Establecer este tipo de relación ayuda a comprender completamente los procesos subyacentes.

Esto nos lleva al último objeto físico.

Red

Dado que Monitor de rendimiento es una herramienta local, solo puede obtener información básica de la red. Sin embargo, los siguientes contadores siguen siendo útiles:

Contadores principales Healthy Advertencia Crítica
\Interfaz de red(*)\Bytes Totales/seg. < 50% 50–80% > 80%
\Interfaz de red(*)\Bytes enviados por segundo * * *
\Interfaz de red(*)\Bytes recibidos/s * * *

Nota:

Más información para las celdas marcadas con símbolos de estrella (*): la carga de trabajo de \Interfaz de red(*)\Bytes enviados/s y \Interfaz de red(*)\Bytes recibidos/s debe depender del rol del servidor. Por ejemplo, el número de bytes enviados por segundo suele ser mayor que el número de bytes recibidos por segundo en un servidor de streaming. Por el contrario, el número de bytes recibidos por segundo suele ser mayor que los bytes enviados por segundo en un servidor de copia de seguridad que realiza una copia de seguridad.

Los valores están relacionados con la velocidad de la tarjeta de red y debe realizar el cálculo. Al hacerlo, recuerde que la velocidad de red se mide en bits y 8 bits = 1 byte. Por lo tanto, si tiene una tarjeta de red de 1 GB, el rendimiento puede alcanzar 125 MB/s.

Aunque el contador Bytes Total/s le ayuda a comprender el uso general de la tarjeta de red, los otros dos contadores pueden ayudarle a saber si recibe o envía más datos. Si tiene esta información, puede compararla con el comportamiento esperado. Si desea investigar la red, se necesita un conjunto de herramientas diferente, ya que necesita seguimientos de un extremo a otro de ambos lados para comprender completamente el comportamiento de la red.

Conclusión

Esta guía de escenario concluye con el desglose y los componentes físicos de un sistema Windows. Cuando se enfrenta a un cuello de botella en cualquier componente físico, el sistema tiene problemas. Y la aplicación también se ve afectada.

Esperamos que esta guía de escenario pueda ayudarle a comprender los Monitor de rendimiento básicos y a preparar el sistema para una captura de "caja negra", como una grabadora de vuelos. Si necesita más ayuda para analizar los datos, póngase en contacto con nosotros abriendo una incidencia de soporte técnico.