LFCS: Monitorear el uso de recursos de los procesos de Linux y establecer límites de proceso por usuario-Parte 14

LFCS: Monitorear el uso de recursos de los procesos de Linux y establecer límites de proceso por usuario-Parte 14

Debido a las modificaciones recientes en los objetivos del examen de certificación LFCS que entraron en vigencia a partir del 2 de febrero de 2016. estamos agregando los artículos necesarios a la serie LFCS publicada aquí. Para prepararse para este examen, le recomendamos encarecidamente que también revise la serie LFCE.

 Monitoreo de procesos de Linux y límites de proceso establecidos por usuario  Monitoreo de procesos de Linux y establecimiento de límites de proceso por usuario Monitoreo de procesos de Linux y establecimiento de límites de proceso por usuario-Parte 14

Todo administrador de sistema de Linux necesita saber para verificar la integridad y disponibilidad del hardware, los recursos y los procesos clave. Además, establecer límites de recursos por usuario también debe ser parte de su conjunto de habilidades.

En este artículo exploraremos algunas formas de asegurar que el sistema tanto el hardware como el software se está comportando correctamente para evitar problemas potenciales que pueden causar tiempo de inactividad inesperado en la producción y pérdida de dinero.

Estadísticas de los procesadores de informes de Linux

Con mpstat. puede ver las actividades de cada procesador individualmente o el sistema como un todo, tanto como una instantánea única o dinámicamente.

Para utilizar esta herramienta, necesitará instalar sysstat.

# yum update && yum install sysstat [En sistemas basados ​​en CentOS. # aptitutde update && aptitude install sysstat [En sistemas basados ​​en Ubuntu. # zypper update && zypper install sysstat [ En sistemas openSUSE. freestar.config.enabled_slots.push

Lea más sobre sysstat. y sus utilidades en Aprenda Sysstat y sus utilidades mpstat, pidstat, iostat y sar en Linux

Una vez que haya instalado mpstat. utilícelo para generar informes de estadísticas de procesadores.

Para mostrar 3. informes globales de utilización de CPU (-u) para todas las CPU (como lo indica-P ALL) en un Intervalo de 2 segundos, haga:

# mpstat-P ALL-u 2 3 Salida de muestra Linux 3.19.0-32-generic (tecmint.com) Miércoles 30 de marzo de 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU% usr% nice% sys % iowait% irq% soft% steal% guest% gnice% idle 11:41:09 IST all 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11: 41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11 : 41: 09 IST CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% inactivo 11:41:11 IST todo 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 IST 0 10,50 0,00 1,00 0,00 0,00 0,00 0,00 0,00 0,00 88,50 11:41:11 IST 1 14,36 0,00 1,49 2,48 0,00 0,00 0,00 0,00 0,00 81,68 11:41:11 IST 2 2,00 0,50 1,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 96,50 11:41:11 IST 3 19,40 0,00 1,00 0,00 0,00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% idle 11:41:13 IST all 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11 : 41: 13 IST 0 2,97 0,00 1,49 0,00 0,00 0,00 0,00 0,00 0,00 95,54 11:41:13 IST 1 10,78 0,00 1,47 0,00 0,00 0,00 0,00 0,00 0,00 87,75 11:41:13 IST 2 2,00 0,00 1,00 0,00 0,00 0,00 0,00 0,00 0,00 0,00 97,00 11:41:13 IST 3 6,93 0,00 0,50 0,00 0,00 0,00 0,00 0,00 0,00 92,57 Promedio: CPU% usr% nice% sys% iowait% irq% soft % robo% invitado% gnice% inactivo Promedio: todos 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Promedio: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Promedio: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 0.00 88.78 Promedio: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 Promedio: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59

Para ver las mismas estadísticas para una CPU. específica ( CPU 0. en el siguiente ejemplo), utilice:

# mpstat-P 0-u 2 3 Salida de muestra Linux 3.19.0-32-generic (tecmint.com) Miércoles 30 de marzo de 2016 _x86_64_ (4 CPU) 11:42 : 08 IST CPU% usr% nice% sys% iowait% irq% soft% steal% guest% gnice% inactivo 11:42:10 IST 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 IST 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 Promedio: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23

La salida de los comandos anteriores muestra estos columnas:

  1. CPU: número de procesador como un entero, o la palabra todos como un promedio para todos los procesadores.
  2. % usr: porcentaje de utilización de la CPU mientras se ejecutan aplicaciones de nivel de usuario.
  3. % nice: Igual que% usr, pero con buena prioridad.
  4. % sys: Porcentaje de utilización de CPU que se produjo al ejecutar aplicaciones del kernel. Esto no incluye el tiempo dedicado a lidiar con interrupciones o manejar hardware.
  5. % iowait: Porcentaje de tiempo en que la CPU dada (o toda) estuvo inactiva, durante el cual se programó una operación de E/S con uso intensivo de recursos en esa CPU. Puede encontrar una explicación más detallada (con ejemplos) aquí.
  6. % irq: Porcentaje de tiempo dedicado al servicio de interrupciones de hardware.
  7. % soft: Igual que% irq, pero con interrupciones de software .
  8. % de robo: porcentaje de tiempo dedicado a la espera involuntaria (robo o tiempo robado) cuando una máquina virtual, como invitada, está “ganando” la atención del hipervisor mientras compite por la (s) CPU (s). Este valor debe mantenerse lo más pequeño posible. Un valor alto en este campo significa que la máquina virtual se está deteniendo, o pronto lo estará.
  9. % invitado: porcentaje de tiempo dedicado a ejecutar un procesador virtual.
  10. % inactivo: porcentaje de tiempo cuando las CPU no estaban ejecutando ninguna tarea. Si observa un valor bajo en esta columna, eso es una indicación de que el sistema se está colocando bajo una carga pesada. En ese caso, necesitará echar un vistazo más de cerca a la lista de procesos, como veremos en un minuto, para determinar qué lo está causando.

Para colocar el procesador debajo una carga algo alta, ejecute los siguientes comandos y luego ejecute mpstat (como se indica) en una terminal separada:

# dd if =/dev/zero of = test.iso bs = 1G count = 1 # mpstat-u-P 0 2 3 # ping-f localhost # Interrumpa con Ctrl + C después de que mpstat finalice # mpstat-u-P 0 2 3

Finalmente, compare con la salida de mpstat. en “normal” circunstancias:

 Informar sobre procesadores Linux relacionados Estadísticas Informar procesadores Linux Estadísticas relacionadas Informar sobre procesadores Linux relacionados Estadísticas

Como puede ver en la imagen de arriba, CPU 0. estuvo bajo una carga pesada durante los dos primeros ejemplos, como lo indica la columna% inactivo.

En el En la siguiente sección analizaremos cómo identificar estos procesos que consumen muchos recursos, cómo obtener más información sobre ellos y cómo tomar las medidas adecuadas.

Reporting Linux Pro cesses

Para listar procesos ordenándolos por uso de CPU, usaremos el conocido comando ps con-eo (para seleccionar todos los procesos con formato definido por el usuario) y–sort (para especificar una clasificación personalizada order) opciones, así:

# ps-eo pid, ppid, cmd,% cpu,% mem–sort =-% cpu

El comando anterior solo mostrará el PID, PPID, el comando asociado con el proceso y el porcentaje de uso de CPU y RAM ordenados por el porcentaje de uso de CPU en orden descendente. Cuando se ejecuta durante la creación del archivo .iso. aquí están las primeras líneas del resultado:

 Buscar procesos Linux por uso de CPU Buscar procesos Linux por uso de CPU Buscar procesos Linux por uso de CPU

Una vez que hayamos identificado un proceso de interés (como el que tiene PID = 2822), puede navegar a/proc/PID (/proc/2822 en este caso) y hacer una lista de directorios.

Este directorio es donde se guardan varios archivos y subdirectorios con información detallada sobre este proceso en particular mientras se está ejecutando .

Por ejemplo:

  1. /proc/2822/io contiene estadísticas de IO para el proceso (número de caracteres y bytes leídos y escritos, entre otros, durante las operaciones de IO).
  2. /proc/2822/attr/current muestra los atributos de seguridad actuales de SELinux del proceso.
  3. /proc/2822/cgroup describe los grupos de control (cgroups para abreviar) a los que pertenece el proceso si la configuración del kernel CONFIG_CGROUPS está habilitada la opción, que puede verificar con:

# cat/boot/config-$ (uname-r) | grep-i cgroups

Si la opción está habilitada, debería ver:

CONFIG_CGROUPS = y

Usando cgroups puede administrar la cantidad de uso de recursos permitido por proceso como se explica en los Capítulos 1 al 4 de la guía de administración de recursos de Red Hat Enterprise Linux 7, en el capítulo 9 de la guía de análisis y ajuste del sistema openSUSE, y en la sección Grupos de control de la documentación del servidor Ubuntu 14.04.

El archivo/proc/2822/fd es un directorio que contiene un enlace simbólico para cada descriptor de archivo que ha abierto el proceso. La siguiente imagen muestra esta información para el proceso que se inició en tty1 (la primera terminal) para crear la imagen .iso.

 Buscar información de proceso de Linux Encuentra Linux Información de proceso Buscar información de proceso de Linux

La imagen de arriba muestra que stdin. (descriptor de archivo 0. , stdout. (descriptor de archivo 1. y stderr. (descriptor de archivo 2. se asignan a /dev/zero. /root/test.iso. y /dev/t ty1. respectivamente.

Se puede encontrar más información sobre/proc en el documento “El sistema de archivos/proc” guardado y mantenido por Kernel.org, y en el Manual del programador de Linux.

Establecimiento de límites de recursos por usuario en Linux

Si no tiene cuidado y permite que cualquier usuario ejecute un número ilimitado de procesos, es posible que eventualmente experimente un cierre inesperado del sistema o quede bloqueado cuando el sistema entra en un estado inutilizable. Para evitar que esto suceda, debe establecer un límite en la cantidad de procesos que los usuarios pueden iniciar.

Para hacer esto, edite /etc/security/limits.conf. y agregue el la siguiente línea en la parte inferior del archivo para establecer el límite:

* hard nproc 10

El primer campo se puede usar para indicar un usuario, un grupo o todos ellos (*), mientras que el segundo campo impone un límite estricto en el número de procesos (nproc) a 10. Para aplicar los cambios, basta con cerrar la sesión y volver a entrar.

Por lo tanto, veamos qué sucede si un determinado usuario que no sea root (ya sea legítimo o no) intenta iniciar una bomba de bifurcación de shell. Si no hubiéramos implementado límites, esto inicialmente lanzaría dos instancias de una función y luego duplicaría cada una de ellas en un ciclo interminable. Por lo tanto, eventualmente haría que su sistema se rastreara.

Sin embargo, con la restricción anterior en su lugar, la bomba de bifurcación no tiene éxito, pero el usuario seguirá bloqueado hasta que el administrador del sistema elimine el proceso asociado con él:

 Ejecutar Shell Fork Bomb  Ejecutar Shell Fork Bomb Ejecutar Shell Fork Bomb

SUGERENCIA :. Otras posibles restricciones hechas posibles por ulimit. están documentadas en el archivo limits.conf.

Otras herramientas de administración de procesos de Linux

Además de las herramientas discutidas anteriormente, un administrador del sistema Es posible que rator también necesite:

a). Modificar la prioridad de ejecución (uso de recursos del sistema) de un proceso usando renice. Esto significa que el kernel asignará más o menos recursos del sistema al proceso según la prioridad asignada (un número comúnmente conocido como “ bondad. en un rango de-20 a 19).

Cuanto menor sea el valor, mayor será la prioridad de ejecución. Los usuarios regulares (que no sean root) solo pueden modificar la bondad de los procesos que poseen a un valor más alto (lo que significa una prioridad de ejecución más baja), mientras que root puede modificar este valor para cualquier proceso y puede aumentarlo o disminuirlo.