Me gustaría saber si la salida de un Linux basado en Red-Hat podría ser interpretada de manera diferente por un Linux basado en Debian.
Para hacer la pregunta aún más específica, lo que busco es comprender cómo se interpreta el "promedio de carga" de la primera línea del top
comando en un sistema Red-Hat y cómo verificar esto mediante el código oficial de la documentación.
[Hay muchas maneras de abordar este tema, todas las cuales son respuestas aceptables a la pregunta]
Un enfoque potencial sería encontrar dónde se documenta oficialmente esta información.
Otro, sería encontrar la versión del código que top
se construye en la distribución específica y la versión en la que estoy trabajando.
El resultado del comando que obtengo es:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
En este caso, ¿cómo puedo interpretar el valor promedio de carga ?
He logrado localizar que la carga promedio es aproximadamente el último minuto, de una fuente de documentación y que debe ser interpretada después de ser multiplicada por 100, por otra fuente de documentación.
Entonces, la pregunta es:
¿está cargado 0.02% o 2%?
Fuentes de documentación y versiones:
1) El primero protagoniza con
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Fuente: man top
en mi distribución RedHat,
Ubuntu también tiene la versión con "tareas" que no explica el promedio de carga en:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) El segundo comienza con
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Fuente:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Este comienza con:
TOP(1)
NAME
top - display and update information about the top cpu processes
Fuente: http://www.unixtop.org/man.shtml
El primero , se puede ver en man top
in RHEL
o in online ubuntu documentation
y no tiene ninguna explicación para el formato de salida (ni sobre el promedio de carga en el que estoy interesado) .
El segundo , contiene una breve explicación, señalando que el promedio de carga tiene que ver con el último minuto, ¡pero nada sobre la interpretación de su valor!
Cito directamente de la segunda fuente:
2a. Promedios de TIEMPO DE CARGA y TIEMPO
Esta parte consta de una sola línea que contiene:
nombre del programa o ventana, según el tiempo de visualización
y el tiempo actual del modo de visualización desde el último arranque,
número total de usuarios
promedio de carga del sistema en los últimos 1, 5 y 15 minutos
Entonces, si esta explicación es correcta, es suficiente para entender que el promedio de carga es de aproximadamente el último minuto.
Pero no explica el formato del número.
En la tercera explicación, dice que:
Al especificar números para promedios de carga, deben multiplicarse por 100.
Esta explicación sugiere que 0.02 significa 2% y no 0.02%. ¿Pero es esto correcto? Además, ¿es correcto para todas las distribuciones de Linux y las implementaciones potencialmente diferentes de top
?
Para encontrar la respuesta a esta pregunta, intenté revisar el código buscándolo en línea. ¡Pero encontré, al menos, dos versiones diferentes de top
relacionadas con RHEL por ahí! el builtin-top.c
y el refactorizado top.c
. Ambos con derechos de autor de Red-Hat como dice el aviso al comienzo del código y, por lo tanto, parece lógico que RHEL use uno de estos.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
So, before delving into that much code, I wanted an opinion about where to focus to form an accurate understanding on how cpu load is interpreted?
From information given in the answers below, in addition to some personal search, I have found that:
1 - The top
that I am using is contained in the package procps-3.2.8. Which can be verified by using top -v
.
2 - In the version of procps-3.2.8
that I have downloaded from the official website it seems that the tool uptime
get its information from the procfs
file /proc/loadavg
directly (not utilizing the linux function getloadavg()
).
3 - Now for the top
command it also does not use the function getloadavg()
. I managed to verify that the top
does indeed the same things as the uptime
herramienta para mostrar los promedios de carga. Realmente llama a la uptime
función de la herramienta, que obtiene su información del procfs
archivo /proc/loadavg
.
Entonces, ¡todo apunta al /proc/loadavg
archivo! Por lo tanto, para comprender con precisión lo load average
producido por top
, uno debe leer el código del núcleo para ver cómo loadavg
se escribe el archivo .
También hay un excelente artículo señalado en una de las respuestas que proporciona una explicación en términos simples de los tres valores de loadavg
.
Entonces, a pesar de que todas las respuestas han sido igualmente útiles y útiles, voy a marcar la que señaló el artículo
http://www.linuxjournal.com//article/9001 como "la" respuesta a mi pregunta. ¡Gracias a todos por su contribución!
Además de la pregunta Comprensión del promedio superior y de carga , he encontrado un enlace al código fuente del núcleo que apunta al lugar donde loadavg
se calcula. Como parece que hay un gran comentario que explica la forma en que funciona, ¡también está esta parte del código C
!
El enlace al código es http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Nuevamente, no estoy tratando de involucrarme en ninguna forma de plagio, solo estoy agregando esto para completarlo. Por lo tanto, estoy repitiendo que el enlace al código del núcleo se encontró a partir de una de las respuestas en Comprender el promedio superior y de carga ...
top -v
)