Böse CPU-Spitzen, die nicht mit sichtbaren Prozessen verbunden sind

7

Wirklich seltsames Problem hier. Ich bekomme immer wieder sehr unangenehme CPU-Spitzen, bei denen die CPU etwa 5 Minuten lang zu 80-90% über alle Kerne ausgelastet ist. Wenn ich mir conky in htop oder system monitor ansehe und nach% CPU sortiere, sehe ich keinen Prozess, der für so viel CPU-Auslastung verantwortlich ist.

Die einzigen Dinge, die ich seitdem geändert habe, sind:

  • Ich bin zu Kernel Version 2.6.35 gewechselt (Home Compiled, von 2.6.24-1)
  • Ich habe den Nvidia-Treiber 256.44 installiert (von 256.34)

Jetzt bin ich bereit, eines von beiden herunterzustufen, um das Problem zu finden, aber ich würde es vorziehen, dies so wissenschaftlich wie möglich zu tun und herauszufinden, was die CPU-Explosion verursacht, bevor ich ein Downgrade durchführe.

Bearbeiten: Mein genaues Problem sieht aus wie eine NVIDIA-Regression in ihrem neuesten Treiber. Andere Leute bekommen ähnliche Spitzen .

Oli
quelle
1
htop verhält sich auf meinem System seltsam in dem Sinne, dass ich im Systemmonitor-Applet eine hohe CPU-Auslastung sehe, aber htop zeigte nicht den Prozess an, der so viel CPU verwendete (ich hatte Benutzer- und Kernel-Threads aktiviert). top verhielt sich normal und zeigte meinen außer Kontrolle geratenen Prozess. Ich würde gerne herausfinden, warum sich htop anders verhält als top.
Li Lo
Ich denke, Conky verwendet Top direkt, daher denke ich nicht, dass dies mir helfen wird , aber danke, dass Sie es erwähnt haben, da es jemand anderem helfen könnte.
Oli
Es scheint mir nicht, dass der verknüpfte nVidia-Thread mit diesem Problem korreliert. Die Leute dort melden CPU-Spitzen von X, aber Ihre ist die System-CPU-Zeit (nicht mit einem anderen Prozess verbunden). Aus Ihrer Beschreibung (10.10, 2.6.35, Core i7) geht hervor, dass Ihr Timer-Interrupt wie in diesem Bericht beschrieben einfriert: bugs.launchpad.net/ubuntu/+source/linux/+bug/665796
Juliano
@ Juliano Es mag dieser Fehler gewesen sein, aber ich weiß nur, dass es kein Problem mehr ist. Und das Upgrade von NVIDIA-Treibern war das einzige, was ich getan habe, um das Problem zu beheben.
Oli
@Oli Welche nVidia-Treiberversion verwenden Sie gerade?
Juliano

Antworten:

1

Es kann sich um einen Kernel-Thread handeln, der in den meisten Leistungsmonitoren standardmäßig ausgeblendet ist. In htop können Sie Kernel-Threads mit "K" (Shift + k) ausblenden / einblenden.

JanC
quelle
Nein, kein Glück da.
Oli
3

"Die CPU ist ungefähr 5 Minuten lang zu 80-90% über alle Kerne ausgelastet."

Diese Verwendung würde es Ihnen möglicherweise ermöglichen, den Schuldigen mithilfe von pidstat zu lokalisieren, das im sysstat-Paket verfügbar ist.

Einfach ausführen pidstat -u | sort -nr -k 7,7 | head -10und der Prozess, der die meiste CPU verwendet hat, sollte die oberste Zeile sein.

Li Lo
quelle
Netter Tipp zu Pidstat. Zum ersten Mal darauf gestoßen.
Harperville
2

Ich würde versuchen, die Ursache für das Problem mit einem Shell-Skript zu finden:

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

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

Das Skript hat zwei Variablen MAXLOADund CURRLOAD. Die erste sollte eine hohe Last multipliziert mit 100 sein. Wenn Sie also auf eine Spitze stoßen und sehen, dass die Systemlast auf 2 oder 3 steigt, sollten Sie MAXLOADeinen Wert um 200 einstellen. Nimmt $CURRLOADdie Ausgabe von uptime, sucht nach der Last und Entfernt den Punkt sowie führende Nullen.

Wenn die Last irgendwann zu hoch ist, werden die fünf Prozesse mit der höchsten CPU-Auslastung ausgedruckt und an gesendet [email protected].

Dieses Skript soll Ihnen helfen, den Grund für eine Spitze zu finden, und wenn Sie es wissen, können Sie Ihr Problem möglicherweise beheben.

qbi
quelle
1

So erhalten Sie eine Ausgabe von oben, die Sie speichern können: top -b -n1

Wenn Sie dies in einen Cronjob stecken, können Sie sich die minutiöse Prozessliste ansehen, auch nachdem das Problem behoben wurde. Beispiel für einen Crontab-Eintrag:

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

Dadurch wird es in einer Datei pro Minute in / tmp gespeichert

Dennis Kaarsemaker
quelle
1

Es gibt einige kürzlich behobene Fehler, die dieses Problem beheben könnten. Wenn Sie Ubuntu ausführen, würde ich empfehlen, beim Ubuntu-Kernel zu bleiben, um die Patches durch regelmäßige Updates zu erhalten. Ich würde empfehlen, Lucid für die Unterstützung und Stabilität zu installieren. Sie können sich für Maverick entscheiden, wenn Ihnen Funktionen bekannt sind, die nicht in Lucid enthalten sind und die Sie benötigen.

Brad Figg
quelle
0

Ich denke, das ist ein Kernel-Problem. Ich würde zu einer offiziell getesteten Version zurückkehren.

Thorbjørn Ravn Andersen
quelle
Ziemlich sicher, dass es nvidia ist, da andere Benutzer ihrer neuesten Treiber ähnliche Probleme melden. Siehe meine Bearbeitung am Ende der Frage.
Oli
Zeit, das dann herunterzustufen :)
Thorbjørn Ravn Andersen