Las computadoras son sistemas integrados que solo funcionan tan rápido como su componente de hardware más lento. Si un componente es menos capaz que los demás, si se atrasa y no puede seguir el ritmo, puede retrasar todo el sistema. Eso es un cuello de botella de rendimiento . Eliminar un cuello de botella grave puede hacer que su sistema funcione.
Este artículo explica cómo identificar cuellos de botella de hardware en sistemas Linux. Las técnicas se aplican tanto a las computadoras personales como a los servidores. Mi énfasis está en las PC; no cubriré los cuellos de botella específicos del servidor en áreas como la administración de LAN o los sistemas de bases de datos. Esos a menudo involucran herramientas especializadas.
Tampoco hablaré mucho sobre soluciones. Ese es un tema demasiado grande para este artículo. En su lugar, escribiré un artículo de seguimiento con ajustes de rendimiento.
Usaré solo herramientas de interfaz gráfica de usuario (GUI) de código abierto para hacer el trabajo. La mayoría de los artículos sobre cuellos de botella en Linux son bastante complicados. Usan comandos especializados y profundizan en detalles arcanos.
Las herramientas GUI que ofrece el código abierto simplifican la identificación de muchos cuellos de botella. Mi objetivo es brindarle un enfoque rápido y fácil que pueda usar en cualquier lugar.
Por donde empezar
Una computadora consta de seis recursos de hardware clave:
- Procesadores
- Memoria
- Almacenamiento
- Puertos USB
- Conexión a Internet
- Procesador de gráficos
Si algún recurso tiene un rendimiento deficiente, puede crear un cuello de botella en el rendimiento. Para identificar un cuello de botella, debe monitorear estos seis recursos.
El código abierto ofrece una gran cantidad de herramientas para hacer el trabajo. Usaré el Monitor del sistema GNOME. Su salida es fácil de entender y puede encontrarla en la mayoría de los repositorios.
Inícielo y haga clic en Recursos pestaña. Puede identificar muchos problemas de rendimiento de inmediato.
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Los Recursos El panel muestra tres secciones:Historial de CPU , Memoria e historial de intercambio y Historial de red . Un vistazo rápido le dice de inmediato si sus procesadores están saturados, si su computadora no tiene memoria o si está utilizando todo su ancho de banda de Internet.
Exploraré estos problemas a continuación. Por ahora, verifique primero el Monitor del sistema cuando su computadora se ralentice. Te da pistas al instante sobre los problemas de rendimiento más comunes.
Ahora exploremos cómo identificar cuellos de botella en áreas específicas.
Cómo identificar los cuellos de botella del procesador
Para detectar un cuello de botella, primero debe saber qué hardware tiene. El código abierto ofrece varias herramientas para este propósito. Me gusta HardInfo porque sus pantallas son fáciles de leer y es muy popular.
Inicie HardInfo. Su Computadora -> Resumen El panel identifica su CPU y le informa sobre sus núcleos, subprocesos y velocidades. También identifica su placa base y otros componentes de la computadora.
HardInfo revela que esta computadora tiene un chip de CPU físico. Ese chip contiene dos procesadores o núcleos. Cada núcleo admite dos subprocesos o procesadores lógicos. Eso es un total de cuatro procesadores lógicos, exactamente lo que mostró la sección Historial de CPU de System Monitor en la Fig. 1.
Un cuello de botella del procesador ocurre cuando los procesadores no pueden responder a las solicitudes de su tiempo. Ya están ocupados.
Puede identificar esto cuando System Monitor muestra una utilización del procesador lógico superior al 80 % o al 90 % durante un período prolongado. Este es un ejemplo en el que tres de los cuatro procesadores lógicos están saturados al 100 % de utilización. Eso es un cuello de botella porque no deja mucha CPU para ningún otro trabajo.
¿Qué aplicación está causando el problema?
Debe averiguar qué programa (s) está consumiendo toda esa CPU. Haga clic en Procesos de System Monitor. pestaña. Luego haga clic en % CPU encabezado para ordenar los procesos según la cantidad de CPU que consumen. Verá qué aplicaciones están ralentizando su sistema.
Los tres procesos principales consumen cada uno el 24 % del total recurso de la CPU. Dado que hay cuatro procesadores lógicos, esto significa que cada uno consume un procesador completo. Eso es tal como muestra la Fig. 3.
Los Procesos panel identifica un programa llamado analytical_AI como el culpable. Puede hacer clic con el botón derecho en él en el panel para ver más detalles sobre su consumo de recursos, incluido el uso de memoria, los archivos que tiene abiertos, sus detalles de entrada/salida y más.
Si su inicio de sesión tiene privilegios de administrador, puede administrar el proceso. Puede cambiar su prioridad y detenerlo, continuarlo, finalizarlo o eliminarlo. Por lo tanto, podría resolver inmediatamente su cuello de botella aquí.
¿Cómo se solucionan los cuellos de botella en el procesamiento? Más allá de administrar el proceso infractor en tiempo real, podría evitar que ocurra el cuello de botella. Por ejemplo, puede sustituir al infractor por otra aplicación, solucionarlo, cambiar su comportamiento cuando usa esa aplicación, programar la aplicación para que no esté disponible, abordar un problema de memoria subyacente, ajustar el rendimiento de la aplicación o el software de su sistema, o actualizar tu equipo Eso es demasiado para cubrir aquí, así que exploraré esas opciones en mi próximo artículo.
Cuellos de botella comunes del procesador
Encontrará varios cuellos de botella comunes al monitorear sus CPU con System Monitor.
A veces, un procesador lógico tiene un cuello de botella mientras que todos los demás tienen una utilización baja. Esto significa que tiene una aplicación que no está codificada de manera lo suficientemente inteligente como para aprovechar más de un procesador lógico, y está maximizando el que está usando. Esa aplicación tardará más en finalizar que si usara más procesadores. Por otro lado, al menos deja sus otros procesadores libres para otros trabajos y no toma el control de su computadora.
También puede ver un procesador lógico atascado para siempre con una utilización del 100 %. O está muy ocupado o un proceso está colgado. La forma de saber si está bloqueado es si el proceso nunca realiza ninguna actividad en el disco (como el Monitor de sistema Procesos se mostrará el panel).
Finalmente, puede notar que cuando todos sus procesadores tienen un cuello de botella, su memoria también se utiliza por completo. Las condiciones de falta de memoria a veces provocan cuellos de botella en el procesador. En este caso, desea resolver el problema de memoria subyacente, no el problema sintomático de la CPU.
Cómo identificar cuellos de botella de memoria
Dada la gran cantidad de memoria en las PC modernas, los cuellos de botella de memoria son mucho menos comunes que antes. Sin embargo, aún puede encontrarlos si ejecuta programas que consumen mucha memoria, especialmente si tiene una computadora que no contiene mucha memoria de acceso aleatorio (RAM).
Linux usa la memoria tanto para los programas como para almacenar en caché los datos del disco. Este último acelera el acceso a los datos del disco. Linux puede reclamar esa memoria en cualquier momento que la necesite para el uso del programa.
Los recursos de System Monitor El panel muestra su memoria total y cuánto de ella se utiliza. En los Procesos panel, puede ver el uso de memoria de los procesos individuales.
Esta es la parte de System Monitor Resources panel que rastrea el uso de memoria agregada:
A la derecha de Memoria, verá Intercambiar. Este es el espacio en disco que utiliza Linux cuando se queda sin memoria. Escribe memoria en el disco para continuar con las operaciones, utilizando efectivamente el intercambio como una extensión más lenta de su RAM.
Los dos problemas de rendimiento de la memoria que deberá tener en cuenta son:
- Parece que la memoria está muy utilizada y ve una actividad frecuente o en aumento en el espacio de intercambio.
- Tanto la memoria como el intercambio se utilizan en gran medida.
La situación 1 significa un rendimiento más lento porque el intercambio siempre es más lento que la memoria. Si lo considera un problema de rendimiento depende de muchos factores (por ejemplo, qué tan activo es su espacio de intercambio, su velocidad, sus expectativas, etc.). Mi opinión es que cualquier cosa más que el intercambio de tokens es inaceptable para una computadora personal moderna.
La situación 2 es donde tanto la memoria como el intercambio están en gran parte en uso. Este es un cuello de botella de memoria. La computadora deja de responder. Incluso podría caer en un estado de golpeteo , donde logra poco más que la gestión de la memoria.
La Fig. 6 muestra una computadora antigua con solo 2 GB de RAM. Cuando el uso de la memoria superó el 80 %, el sistema comenzó a escribir para intercambiar. La capacidad de respuesta disminuyó. Esta captura de pantalla muestra más del 90 % del uso de la memoria y la computadora no se puede usar.
La respuesta definitiva a los problemas de memoria es usar menos o comprar más. Discutiré las soluciones en mi artículo de seguimiento.
Cómo identificar cuellos de botella de almacenamiento
El almacenamiento actual viene en varias variedades de discos duros mecánicos y de estado sólido. Las interfaces de dispositivos incluyen PCIe, SATA, Thunderbolt y USB. Independientemente del tipo de almacenamiento que tenga, utilice el mismo procedimiento para identificar cuellos de botella en el disco.
Comience con el Monitor del sistema. Sus Procesos El panel muestra las tasas de entrada/salida para procesos individuales. Para que pueda identificar rápidamente qué procesos están realizando la mayor cantidad de E/S de disco.
Pero la herramienta no muestra la tasa de transferencia de datos agregada por disco. Debe ver la carga total en un disco específico para determinar si ese disco es un cuello de botella de almacenamiento.
Para hacerlo, use el comando encima. Está disponible en la mayoría de los repositorios de Linux.
Simplemente escribe atop
en el indicador de la línea de comandos. El siguiente resultado muestra que el dispositivo sdb
está busy 101%
. Claramente, ha alcanzado su límite de rendimiento y está restringiendo la rapidez con la que su sistema puede realizar su trabajo.
Observe que una de las CPU está esperando en el disco para hacer su trabajo el 85 % del tiempo (cpu001 w 85%
). Esto es típico cuando un dispositivo de almacenamiento se convierte en un cuello de botella. De hecho, muchos analizan primero las esperas de E/S de la CPU para detectar cuellos de botella de almacenamiento.
Entonces, para identificar fácilmente un cuello de botella de almacenamiento, use el atop
dominio. Luego use los Procesos panel en System Monitor para identificar los procesos individuales que están causando el cuello de botella.
Cómo identificar cuellos de botella en puertos USB
Algunas personas usan sus puertos USB todo el día. Sin embargo, nunca verifican si esos puertos se están utilizando de manera óptima. Ya sea que conecte un disco externo, una tarjeta de memoria u otra cosa, querrá verificar que está obteniendo el máximo rendimiento de sus dispositivos conectados por USB.
Este gráfico muestra por qué. Las tasas potenciales de transferencia de datos USB varían enormemente .
Dispositivos USB de HardInfo La pestaña muestra los estándares USB que admite su computadora. La mayoría de las computadoras ofrecen más de una velocidad. ¿Cómo se puede saber la velocidad de un puerto específico? Los proveedores los codifican por colores, como se muestra en el gráfico. O puede buscar en la documentación de su computadora.
Para ver las velocidades reales que está obteniendo, pruebe usando el programa GNOME Disks de código abierto. Simplemente inicie GNOME Disks, seleccione su Benchmark Disk función y ejecutar un punto de referencia. Eso le indica la velocidad real máxima que obtendrá para un puerto con el dispositivo específico conectado.
Puede obtener diferentes velocidades de transferencia para un puerto, según el dispositivo que conecte. Las velocidades de datos dependen de la combinación particular de puerto y dispositivo.
Por ejemplo, un dispositivo que podría volar a una velocidad de 3.1 usará un puerto 2.0, a una velocidad de 2.0, si lo conectas a eso. (¡Y no le dirá que está funcionando a una velocidad más lenta!) Por el contrario, si conecta un dispositivo USB 2.0 en un puerto 3.1, funcionará, pero a la velocidad 2.0. Entonces, para obtener un USB rápido, debe asegurarse de que tanto el puerto como el dispositivo lo admitan. GNOME Disks le brinda los medios para verificar esto.
Para identificar un cuello de botella de procesamiento USB, utilice el mismo procedimiento que utilizó para los discos duros y de estado sólido. Ejecute el atop
Comando para detectar un cuello de botella de almacenamiento USB. Luego, use System Monitor para obtener detalles sobre los procesos infractores.
Cómo identificar cuellos de botella en el ancho de banda de Internet
El monitor del sistema Recursos El panel te dice en tiempo real qué velocidad de conexión a Internet estás experimentando (ver Fig. 1).
Existen excelentes herramientas de Python para probar su velocidad máxima de Internet, pero también puede probarlas en sitios web como Speedtest, Fast.com y Speakeasy. Para obtener los mejores resultados, cierre todo y ejecute solo la prueba de velocidad; apaga tu VPN; ejecutar pruebas en diferentes momentos del día; y compare los resultados de varios sitios de prueba.
Luego compare sus resultados con las velocidades de carga y descarga que su proveedor afirma que está obteniendo. De esa manera, puede confirmar que obtiene las velocidades por las que está pagando.
Si tiene un enrutador separado, pruebe con y sin él. Eso puede decirle si su enrutador es un cuello de botella. Si usa WiFi, pruebe con y sin él (conectando directamente su computadora portátil al módem). A menudo he visto a personas quejarse de su proveedor de Internet cuando lo que en realidad tienen es un cuello de botella WiFi que podrían solucionar ellos mismos.
Si algún programa está consumiendo toda su conexión a Internet, querrá saber cuál. Encuéntralo usando los nethogs
dominio. Está disponible en la mayoría de los repositorios.
El otro día, mi monitor de sistema de repente mostró que mi acceso a Internet se estaba disparando. Acabo de escribir nethogs
en la línea de comandos e instantáneamente identificó al consumidor de ancho de banda como una actualización del antivirus Clamav.
Cómo identificar cuellos de botella en el procesamiento de gráficos
Si conecta su monitor a la placa base en la parte posterior de su computadora de escritorio, está utilizando gráficos integrados . Si lo conecta a una tarjeta en la parte posterior, tiene un subsistema de gráficos dedicado. La mayoría lo llama una tarjeta de video o tarjeta gráfica. Para las computadoras de escritorio, las tarjetas complementarias suelen ser más potentes y más costosas que los gráficos de la placa base. Las computadoras portátiles siempre usan gráficos integrados.
Dispositivos PCI de HardInfo El panel le informa sobre su unidad de procesamiento de gráficos (GPU). También muestra la cantidad de memoria de video dedicada que tiene (busque la memoria marcada como "precargable").
Las CPU y las GPU funcionan muy de cerca. Para simplificar, la CPU prepara los fotogramas para que los renderice la GPU y, a continuación, la GPU renderiza los fotogramas.
Un cuello de botella en la GPU ocurre cuando sus CPU están esperando en una GPU que está 100% ocupada.
Para identificar esto, debe monitorear las tasas de utilización de CPU y GPU. Los monitores de código abierto como Conky y Glances hacen esto si sus extensiones funcionan con su conjunto de chips de gráficos.
Echa un vistazo a este ejemplo de Conky. Puede ver que este sistema tiene una gran cantidad de CPU disponible. La GPU solo está ocupada en un 25 %. Imagínese si ese número de GPU estuviera cerca del 100%. Entonces sabría que las CPU estaban esperando a la GPU y tendría un cuello de botella en la GPU.
En algunos sistemas, necesitará una herramienta específica del proveedor para monitorear su GPU. Todos se pueden descargar desde GitHub y se describen en este artículo sobre monitoreo de GPU y herramientas de línea de comandos de diagnóstico.
Resumen
Las computadoras consisten en una colección de recursos de hardware integrados. Si alguno de ellos queda muy por detrás de los demás en su carga de trabajo, se crea un cuello de botella en el rendimiento. Eso puede frenar todo su sistema. Debe poder identificar y corregir los cuellos de botella para lograr un rendimiento óptimo.
No hace mucho tiempo, la identificación de cuellos de botella requería una gran experiencia. Los monitores de rendimiento de GUI de código abierto de hoy lo hacen bastante simple.
En mi próximo artículo, discutiré formas específicas de mejorar el rendimiento de su PC con Linux. Mientras tanto, comparta sus propias experiencias en los comentarios.