Escenario: De repente, mi computadora se siente lenta. El mouse se mueve pero las ventanas tardan años en abrirse, etc. uptime
dice que la carga es de 7.69 y sube.
¿Cuál es la forma más rápida de averiguar qué procesos son la causa de la carga?
Ahora, "top" y herramientas similares no son la respuesta porque muestran el uso de CPU o memoria, pero no ambas al mismo tiempo. Lo que necesito es el comando único que podría escribir mientras sucede, algo que resolverá cualquiera de
El sistema está tratando de intercambiar 8 GB de RAM al disco porque el proceso X ...
o
el proceso X busca por todo el disco
o
el proceso X usa 400% de CPU "
Entonces, lo que estoy buscando es iostat, htop / atop y herramientas similares que se ejecutan en una con una salida como esta:
1235 cp - Disk trashing
87 chrome - Uses 2 GB of RAM
137 nfs_bench - Uses 95% of the network bandwidth
No quiero una herramienta que me dé algunos números que pueda analizar, sino una herramienta que me diga exactamente qué proceso causa la carga actual. Suponga que el usuario frente al teclado apenas sabe cómo escribir "proceso", pero el usuario se abruma rápidamente cuando se trata de "tamaño residente", "memoria virtual" o "ciclo de vida del proceso".
Mi argumento es el siguiente: un usuario nota un problema. Puede haber miles de razones ... bueno, casi :-) El usuario quiere saber la fuente del problema.
Las soluciones actuales me dan muchos números, y necesito saber qué significan estos números. Lo que estoy buscando es una meta herramienta. El 99% de los datos es irrelevante para el problema. Entonces, lo que la herramienta debería hacer es buscar procesos que acaparen algunos recursos y enumerar solo aquellos junto con "este proceso necesita mucha CPU, esto produce muchas IRQ, este proceso asigna mucha RAM (y aún está creciendo)".
Esta será una lista relativamente corta. Será mucho más simple para alguien nuevo en esto localizar al culpable de esta lista que de la salida de, digamos, lo htop
que me da alrededor de 5000 números pero requiere que yo mismo doble los procesos de subprocesos múltiples (tengo 50 líneas que dicen VIRT 2750M
pero solo 16 GB de RAM: la máquina debería intercambiarse a sí misma pero, por supuesto, esta es una interpretación errónea de los datos que pueden suceder rápidamente).
fuente
top
significa la producción )Respuestas:
Tengo que sonreír ante las respuestas porque cada una te dijo que ejecutaras la herramienta X. El único problema es que si lo que estás viendo es intermitente, no habrá forma de correlacionar nada. Una herramienta como sar puede ayudar si la ejecuta a una frecuencia suficientemente alta, pero afirmaría que collectl es aún mejor.
Al igual que sar , lo ejecutas como un demonio instalando el RPM y haciendo
/etc/init.d/collectl start
.Ahora, cuando vea algo lento,
collectl -p /var/log/collectl/filename --top
reproducirá los datos y le mostrará los principales procesos. También podrías haber corridocollectl --top
y verlos en tiempo real. Por cierto, cualquier cosa que puedas hacer en tiempo real también puedes reproducirla.En cuanto a la carga de la CPU, ¿qué pasa si se sobrecarga con interrupciones?
collectl -sC
no solo mostrará las cargas en CPU individuales (o se usará-sc
para una carga promedio), sino que mostrará cómo están gastando su tiempo. Incluya-j
(-scj
) y verá el número de interrupciones / CPU. Use mayúsculas-J
y verá los TIPOS de cada interrupción / CPU.Por supuesto, si realmente le gusta vmstat, siempre puede reproducir datos de colección
--vmstat
y mostrará datos históricos en formato vmstat.Hay muchos más conmutadores de los que tengo tiempo para enumerar, pero puede consultarlos en SourceForge o simplemente buscarlos en Google.
fuente
"top" funciona razonablemente bien, siempre que observe los números correctos. Veamos:
Ahora, si el sistema es lento porque la CPU está ocupada, se muestra como columnas "us" y "sy" en "Cpu (s):" fila que está cerca del 100% juntas.
Si es lento debido al intercambio, "Mem:" "free" muestra valores muy bajos y "Swap:" "usa" valores altos.
Si es lento debido a E / S en general, entonces "CPU (s):" "wa" indica que el tiempo se gasta en E / S de espera.
Ahora, si sabe que las esperas de E / S son el problema, puede usar los programas "iotop" para saber qué procesos crean la mayoría de las E / S.
fuente
top
, también puede hacerlo una computadora. Esta no es la sonrisa de Mona Lisa, es solo hacer algunos números para encontrar los "malos".Según el uso del 400%, supondré que tiene un procesador de cuatro núcleos. Su promedio de carga es casi el doble de la capacidad y la mitad de los procesos están esperando la CPU.
Primero,
renice
su shell a 0 o -10 para obtener un sistema más receptivo, y luego usehtop
para encontrar los procesos ofensivos y siga con esostrace
en un proceso dado. Otras herramientas que podrían ser útiles son:vmsat
sar
iostat
pmap
fuente
Un mouse lento también podría deberse a una carga de interrupción demasiado alta o a que los controladores USB están muy ocupados (supongo que es un mouse USB).
fuente
vmstat podría ayudarlo en términos generales. Un ejemplo de uso es:
También puede ejecutarlo cada X segundos, solo agregue el número X después del comando.
Editar: En vista del comentario ... Escriba lo siguiente en un archivo y haga que ese archivo sea ejecutable. Le indicará los 3 principales procesos en la máquina.
Si desea saber qué memoria acaparada en lugar de CPU, entonces lea la página de manual superior y cambie el orden de visualización.
fuente