it-swarm-es.com

Picos desagradables de CPU que no están conectados a ningún proceso visible

Problema realmente extraño aquí. Intermitentemente sigo obteniendo picos de CPU realmente desagradables, donde la CPU llega al 80-90% ocupado en todos los núcleos durante aproximadamente 5 minutos. Cuando miro conky, en htop o en el monitor del sistema, y ​​clasifico por% CPU, no puedo ver ningún proceso que explique este uso de CPU.

Las únicas cosas que he cambiado desde que comenzó esto son:

  • Me mudé a la versión del kernel 2.6.35 (compilada en casa, desde 2.6.24-1)
  • Instalé el controlador Nvidia 256.44 (en lugar de 256.34)

Ahora, estoy dispuesto a degradar cualquiera de los dos para encontrar el problema, pero preferiría hacer esto lo más científicamente posible y descubrir qué está causando la explosión de la CPU antes de degradarlo.

Editar: mi problema preciso parece una regresión de nvidia en su último controlador. Otras personas están obteniendo picos similares .

7
Oli

Puede ser un hilo del kernel, estos están ocultos por defecto en la mayoría de los monitores de rendimiento. En htop puedes ocultar/mostrar hilos de kernel con "K" (shift + k).

1
JanC

"la CPU llega al 80-90% ocupado en todos los núcleos durante aproximadamente 5 minutos"

Ese uso posiblemente le permitiría identificar al culpable mediante el uso de pidstat disponible en el paquete sysstat.

Simplemente ejecute pidstat -u | sort -nr -k 7,7 | head -10 y el proceso que usó más CPU debería ser la línea superior.

3
Li Lo

Intentaría encontrar la causa del problema con algunos scripts de Shell:

#!/bin/sh
MAXLOAD=100
CURRLOAD=`uptime | sed '[email protected]*load average: \([^,]*\).*@\[email protected]' | sed '[email protected]\?.0\[email protected]@'`

if [ $CURRLOAD -gt $MAXLOAD ]; then                                             
  ps -eo tid,pcpu,comm | sort -n -k 2 | tail -n 5 | \
    mail -s "High load" -e [email protected]
fi

El script tiene dos variables MAXLOAD y CURRLOAD. La primera debe ser una carga alta multiplicada por 100. Entonces, si encuentra un pico y ve que la carga del sistema sube a 2 o 3, entonces debe establecer MAXLOAD en algún valor alrededor de 200. $CURRLOAD toma la salida de uptime, busca la carga y elimina el punto y los ceros a la izquierda.

Si la carga en algún momento es alta, imprime los cinco procesos con la mayor utilización de la CPU y los envía a [email protected].

Este script debería ayudarlo a encontrar la razón de un pico y, si lo sabe, tal vez pueda resolver su problema.

2
qbi

Hay algunos errores recientemente corregidos que pueden corregir este problema. Si está ejecutando Ubuntu, le sugiero que se quede con el kernel de Ubuntu para recoger los parches a través de actualizaciones regulares. Recomiendo instalar Lucid para el soporte y la estabilidad. Puede utilizar Maverick si hay características que conoce que no están en Lucid y que necesita.

1
Brad Figg

Para obtener resultados desde arriba que puede guardar: top -b -n1

Pegue esto en un cronjob y puede mirar la lista de procesos minuciosamente incluso después de que el problema desapareció. Ejemplo de entrada crontab:

* * * * * top -b -n1 > /tmp/top_output_$(date +%Y-%m-%d_%H:%M:%S)

Esto lo guardará en un archivo por minuto en/tmp

1

Creo que este es un problema del núcleo. Volvería a una versión probada oficialmente.