PDF de programación - Monitoreo de CPU y memoria

Imágen de pdf Monitoreo de CPU y memoria

Monitoreo de CPU y memoriagráfica de visualizaciones

Publicado el 2 de Enero del 2021
993 visualizaciones desde el 2 de Enero del 2021
581,2 KB
42 paginas
Creado hace 13a (21/03/2011)
Monitoreo de CPU y memoria

Diseño y Evaluación de Configuraciones

Curso 2010-11

Miguel Telleria de Esteban

telleriam AT unican.es

Computadores y Tiempo Real

http://www.ctr.unican.es

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Contenido

● Conceptos

● Notas sobre el planificador de Linux y la gestión de memoria

● Herramientas de monitorización

● Gnome-system-monitor
● Top y htop
● Ps



/usr/bin/time

● Traceado de ejecución con ftrace

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 2 de 42

Conceptos sobre CPU y memoria

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Procesos y threads

● En GNU/Linux la interfaz POSIX thread está ofertada por la

librería NPTL integrada en la librería general GLIBC
● Anteriormente (2004-05) se usaba linuxthreads
● La interfaz es 100% user-space.

– Pero el kernel se ha adaptado a ella (syscalls clone y vfork).

● A efectos de planificación un pthread y un proceso son vistos

iguales por el kernel
● Cada uno tiene su PID. pthread_self() no tiene efecto en el kernel
● Cada uno tiene su prioridad y política de planificación
● Cada uno tiene su máscara de afinidad de CPU
● El kernel mantiene estadísticas y relojes de ejecución independientes

● La diferencia está en el uso de la memoria

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 4 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Planificación de CPU en Linux

● Desde la versión 2.6.23 el kernel Linux redefinió el planificador

● Se pasa del antiguo O(1) a CFS: Complete Fairness Scheduler

● Características:

● Es jerárquico llevado por clases de procesos

– Primera prioridad: Clase real-time: Políticas SCHED_FIFO y SCHED_RR
– Clase normal (por defecto): Políticas SCHED_OTHER, SCHED_BATCH y

SCHED_IDLE

● En la clase normal Intenta dar a cada LWP un tiempo de CPU equitativo

pero proporcional a su nivel de nice

● Además realiza periódicamente un reparto de carga entre los diferentes

cores

● Mas info: documentation/scheduler en las fuentes del kernel

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 5 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Parámetros de planificación de CPU en Linux

● Policy: Política de planificación

● SCHED_OTHER o SCHED_NORMAL: Por defecto, round-robin con timeslice

variable

● SCHED_RR: POSIX Real-Time: Round robin con timeslice fija
● SCHED_FIFO: POSIX Real Time: prioridades fijas
Las políticas SCHED_FIFO y SCHED_RR tienen prioridad sobre
SCHED_NORMAL.

● Nice: Avaricia del proceso

● Sólo se usa en SCHED_NORMAL, se ignora para real time
● Oscila entre: (-20 valor más prioritario y 19), por defecto 0
rt-priority: Nivel de preempción
● Se usa en SCHED_RR y SCHED_FIFO, ignorada en SCHED_NORMAL



● Máscara de afinidad

● Define en que CPU(s) un proceso admite ser ejecutado

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 6 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Parámetros de planificación de CPU en Linux (2)
● Normalmente por prioridad se suele entender el valor de nice

● Puede ser de 0 a 39 (top) o de -20 a 19 (gnome-system-monitor)

● Existen 2 herramientas que distinguen entre nice y rt-priority



/proc/<pid>/sched
– 0 – 99: Prioridad realtime, task bajo SCHED_RR o SCHED_FIFO
– 100-139: Valor de nice, task bajo SCHED_OTHER

● Comando chrt -p <pid>

– Si es de SCHED_OTHER: devuelve el nice: rango de -20 a 19
– Si es SCHED_RR o SCHED_FIFO devuelve la rt-priority: rango de 0 a 99

● La afinidad se representa mediante una máscara binaria

● CPU 0: 1 CPU 1: 2 CPU 3: 4 CPU 4: 8
● Valor 3: CPU's 0 y 1
● Se obtiene con taskset -p <pid>

...

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 7 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Información de CPU sobre threads

● Las diferentes herramientas que vamos a ver indican la siguiente información

Identificador del LWP en el kernel y herramientas
Identificador del LWP- padre en el kernel

sobre cada LWP
● Pid
● Ppid
● State Estado del LWP (ver más adelante)
● Prioridad o nice: Diferentes representaciones de lo mismo
● WCHAN: Naturaleza de la última espera (WCHAN: Waiting Channel)
● Procesador: Última CPU en la que se le vio correr

● Métricas

● Porcentaje de uso de la CPU
● Tiempo de ejecución en user-mode
● Tiempo de ejecución en kernel-mode
● Tiempo de bloqueo en espera
● Número de cambios de contexto
● Numero de operaciones I/O

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 8 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Estados de un LWP en el tiempo

● En un instante dado un thread puede estar:

● R Running
● S Sleep: Suspendido en un wait() o sleep(). Se le puede interrumpir
● D Uninterruptible sleep (tipicamente disk IO). Sólo se le interrumpe con kill -9
● T Traceado en debug
● Z Zombie, difunto:



A la espera de que el padre les espere (o muera y sean esperados por init)

● Además puede tener las siguientes añadidos (ej ps):

● < Valor nice negativo, (avaricioso)
● N Valor nice positivo, (generoso)
● L Mantiene páginas en memoria bloqueadas



Tiene pthreads asociados
Lider de sesión: Proceso que controla el terminal

l
● s
● + Pertenece al foreground-process-group

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 9 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Naturaleza de la espera de un LWP



Sacado de: http://askubuntu.com/questions/19442/what-is-the-waiting-channel-of-a-process

Valor de WCHAN
0
poll_*

futex_wait_queue_me
__sckb_recv_datagram
sk_wait_data
do_exit
do_wait

pipe_wait,
unix_stream_data_wait
hrtimer_nanosleep

Situación
El LWP no está esperando
I/O bloqueante o no (similar al select()): ratón,
teclado, network sockets
Esperando en un lock para memoria compartida.
Recibiendo por un network socket

En terminación, el proceso es zombie
El LWP está listo para ejecutar pero aún no tiene la
CPU
Esperando datos de otro proceso

Durmiendo a la espera de un timer

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 10 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

CPU ocupada sin ningún LWP de usuario

● Existen situaciones en el que el kernel tiene la CPU ocupada

sin ejecutar ningún código o servicio de usuario.
● Atendiendo a una interrupción hardware (ej. timer)
● Atendiendo a una interrupción software (ej page-fault + swap)
● Ejecutando tareas de mantenimiento:

– Actualizando páginas sucias de la page-cache al disco
– Balanceando la carga de los multicores

● Realizando cambios de contexto
● No realizando nada (idle)

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 11 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Distribución de la memoria física en Linux

● Memoria para el kernel mismo (buffers):

● El fichero vmlinuz se carga permanentemente en memoria
● Los módulos se cargan bajo demanda (pero no se suelen descargar)
● Diferentes estructuras (inodos, descriptores de procesos, descriptores de página) se manejan

con el slab allocator y se liberan cuando no se usan

● Stacks de threads del kernel

● Memoria para los procesos de usuario (used)

● Código ejecutable compartido
● Stack básico
● Ampliaciones del stack
● Heap

● Caché de disco (page_cache)

● Todo el I/O de disco pasa por memoria antes
● Ciertas partes de los ficheros se comparten con mmap()

● Linux intenta consumir el máximo de memoria disponible

● Para aumentar el tamaño de la cache de disco y mejorar el rendimiento

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 12 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Memoria swap

● La swap es memoria de procesos mapeada en el disco
● Se usa en 2 contextos:

● Caso 1: Cuando no podemos dar servicio a la demanda de memoria
● Caso 2: Cuando un proceso se queda inactivo durante mucho tiempo

● Antes de llegar al caso 1 se buscan otros recursos:

● La cache de inodos
● La cache de disco (page_cache)

– Si es necesario se fuerza una actualización de las páginas sucias.

● Otras estructuras de datos no usadas en mucho tiempo.

● Si se quiere evitar llegar al caso 2:

● Se puede dar un valo bajo a sysctl.kernel.swapiness
● Se puede desactivar la swap

● Existe un recurso más fuerte: El Out-Of-Memory killer

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 13 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Ejemplo (comando free)

3 Mar 2011

Miguel Telleria de Esteban telleriam AT unican.es)

Página 14 de 42

Computadores y Tiempo Real
Universidad de Cantabria

Diseño y Evaluación de Configuraciones

Monitoreo de CPU y memoria

Memoria asociada a un proceso

● Los procesos definen zonas de memoria

● Puede estar mapeada a un fichero o ser anónima
● Tiene asociados permisos de ejecución, lectura y/o escritura
● Puede estar compartida o no con otros procesos

pmap 3070

08048000 3152K r-x-- /usr/bin/claws-mail
0835c000 160K rw--- /usr/bin/claws-mail
08384000 80K rw--- [ anon ]
0a372000 42372K rw--- [ anon ]
aad3e000 8620K r-
  • Links de descarga
http://lwp-l.com/pdf18622

Comentarios de: Monitoreo de CPU y memoria (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad