Estoy obteniendo el siguiente resultado de top
:
Cpu(s): 43.8%us, 32.5%sy, 4.8%ni, 2.0%id, 15.6%wa, 0.2%hi, 1.2%si, 0.0%st
Mem: 16331504k total, 15759412k used, 572092k free, 4575980k buffers
Swap: 4194296k total, 260644k used, 3933652k free, 1588044k cached
la salida de iostat -xk 6
muestra lo siguiente:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 360.20 86.20 153.40 1133.60 2054.40 26.61 1.51 6.27 0.77 18.38
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 22.60 198.80 17.40 31.60 265.60 921.60 48.46 0.18 3.70 1.67 8.20
sdc 16.80 218.20 22.20 23.40 261.60 966.40 53.86 0.21 4.56 1.49 6.78
Según lo anterior, parece que algo debe estar sobrecargado. ¿Pero que?
Preguntas
- Si no es el disco duro o la CPU, ¿entonces qué?
- Parece que el 15,6% del tiempo de la CPU se pasa esperando. ¿Qué podría estar esperando exactamente?
performance
load
user4951
fuente
fuente
Respuestas:
Como punto de aclaración, la carga no está directamente vinculada a la CPU. Este es uno de los conceptos erróneos más comunes sobre la carga. El hecho de que mencione el disco parece reconocer que está al tanto de esto, pero solo quería mencionarlo ya que veo comentarios que indican que algunos creen lo contrario.
La carga se define como el número de procesos que esperan recursos del sistema. Esto es comúnmente CPU, disco o red, pero puede ser cualquier cosa realmente hardware.
Un "proceso" tampoco es necesariamente un proceso completo. Un subproceso se define como un "proceso ligero", y cada subproceso que está esperando aumenta el recuento de carga.
Para averiguar qué procesos son un problema:
Ejecutar
top -H
(-H
habilita mostrar hilos)Los atajos de teclado varían según la versión.
Con la parte superior más nueva (3.3 y posteriores):
Presione fpara mostrar las opciones de campo.
Use las teclas de flecha para ir
S = Process Status
y presione s.Presione qpara volver a la página principal.
Presione Shift+ Rpara invertir la clasificación.
Con la parte superior más antigua (antes de 3.3):
Presione Shift+ opara que aparezcan las opciones de clasificación.
Luego wordenar por estado del proceso.
Luego Enterpara volver a la página principal.
Luego Shift+ Rpara revertir la clasificación.
Luego, en la
S
columna, busque los procesos que tienenD
oR
(ahora deberían estar en la parte superior). Estos serán procesos que contribuyen a la carga del sistema.Si el proceso muestra un
D
, eso significa "suspensión ininterrumpida". Por lo general, esto se produce cuando el proceso está esperando E / S (disco, red, etc.).Si el proceso muestra un
R
, eso significa que solo está haciendo un cálculo normal.Para obtener más información sobre lo que están haciendo esos procesos:
Con la parte superior más nueva (3.3 y posteriores):
Presione fpara mostrar las opciones de campo.
Use las teclas de flecha para ir
WCHAN = Sleeping in Function
y presione dpara habilitarlo.Luego qpara volver a la página principal.
Con la parte superior más antigua (antes de 3.3):
Presione fluego ypara habilitar el
WCHAN
campo.Si su sistema tiene las opciones de kernel necesarias, y el archivo wchan está presente en su sistema (no recuerdo dónde está y cómo se llama) , el
WCHAN
campo debería mostrarle qué función de kernel está ejecutando el proceso actualmente (si el campo solo muestra un-
o un?
sobre todo, no tienes soporte).Un poco de google aquí y deberías estar en camino.
Si no tiene soporte de wchan, siempre puede probar uno
strace
de los procesos para averiguar qué están haciendo, pero esa es la forma difícil.fuente
Los procesos de corta vida útil, como la compilación de trabajos o los procesos fallidos en un bucle, a menudo no son visibles en herramientas de monitoreo como
top
o iostat, etc.En tales casos, el marco de auditoría de Linux ayudará
El culpable, un bucle de falla, por ejemplo
Para usar auditd / auditctl:
robado del registro todos los inicios del proceso
fuente
top
, entonces es probable que no contribuyan al promedio de carga. Para que contribuya al promedio de carga, tiene que estar en estado de espera durante un largo período de tiempo. Estadísticamente, esto significa que va a aparecer entop
. Si no es así, entonces no es un contribuyente significativo.Tuve una situación en la que los montajes NFS se desconectaron y desafortunadamente cometí un error y no utilicé la opción de montaje suave, por lo que muchos procesos se estancaron en mi servidor Linux, incluidas las sesiones de monitoreo, lsof e incluso bash ...
Después de desmontar las monturas rotas, el sistema parecía sobrecargado:
Esto parecía terrible, pero el uso de la CPU era inferior al 15% y no había E / S de disco. Recibí algunos consejos para pasar por ps, pero esto no ayudó, ya que parecía que los procesos están en su mayoría inactivos.
Luego
man ps
guardé mi noche para dormir, y después de la investigación encontré indicadores de ESTADO muy importantes para mirar, ya que más tarde identifiqué que eran procesos atascados .Ejecutar:
y busque procesos que tengan
D
oSL
en la columna STAT. Estos fueron como procesos zombies pero no identificados como Z-zombies.D - medios sobre todo el disco (E / S) la actividad, sino también si se ejecuta
ps -e v
varias veces y tambiéniostat 3
y no ve ninguna actividad, esto indica que se trata de i atascado E / S .SL: esto significa que hay bloqueados en la memoria de ese proceso, por lo tanto, si puede identificar que este proceso no debería comportarse así, es el próximo posible candidato si se mantiene durante un período más largo sin cambios.
Después de la investigación, maté uno por uno, y el promedio de carga de mi sistema se volvió normal.
fuente