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:
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 .
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).
"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.
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.
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.
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
Creo que este es un problema del núcleo. Volvería a una versión probada oficialmente.