So verfolgen Sie periodische Systemaktivitäten, die die Echtzeitleistung beeinträchtigen

So verfolgen Sie periodische Systemaktivitäten, die die Echtzeitleistung beeinträchtigen

Ich verwende Jack2 mit Pianoteq-5 auf einem Zweikern-Laptop mit 64-Bit-Ubuntu-14.04. Solche Konfigurationen reagieren sehr empfindlich auf Echtzeitleistung, da sie niedrige Latenzzeiten erfordern. Zuerst hörte ich ständige Klickgeräusche, die im Grunde verschwanden, als ich /etc/security/limits.conf anpasste, um die RR-Funktion für die Audiogruppe zu aktivieren.

Jetzt haben also sowohl Jack als auch Pianoteq Threads mit der Planungsklasse SCHED_FIFO. Ich kann Jack mit einem Puffer der Größe 128 Samples laufen lassen und es läuft die meiste Zeit reibungslos. Ich sage „die meiste Zeit“, weil ungefähr alle paar Minuten etwas das Paradies zerstört. Ich höre eine ganze Reihe schrecklicher Knackgeräusche. Ich vermute, es ist das Ergebnis einer Aktivität mit hoher Priorität, die im Hintergrund beginnt. Aber wie kann man herausfinden, wer der Schuldige ist?

Antwort1

Hier ist eine Möglichkeit, dies zu tun. Erzeugt eine MENGE Dateien, aber mir fällt keine andere Möglichkeit ein, es zu tun.

Angenommen, Sie sind nicht da, um zu sehen, wann der Server ausgelastet ist, müssen Sie sysstat verwenden, um Ihre historischen Ressourcendaten zu erfassen.

Erste Möglichkeit: Verwenden Sie sysstat und sammeln Sie alle 5 Minuten Statistiken (das nimmt etwa 8 MB pro Tag in Anspruch). Ihr Cron-Eintrag würde etwa so aussehen: 5 * * * * /usr/lib/sa/sa1
oder 5 * * * * /usr/lib64/sa/sa1

sysstat speichert Daten bis zu einem Monat. Sie können die Dateien aber auch jederzeit kopieren und archivieren.

Mit dem Befehl „sar“ können Sie in den historischen Daten nachsehen, wann Ihr Server ausgelastet war.

Da Sie nun historische Daten auf Ihrem Server haben, müssen Sie auch die Prozessausgabe erfassen, damit Sie sehen können, was gerade ausgeführt wird. Sie können hierfür „ps“ oder „top“ verwenden.

Sie können also alle 5 Minuten auch die Ausgabe von top und ps auxww erfassen, sodass Sie alle laufenden Prozesse sehen können. Ich würde zwei Unterverzeichnisse „toparchive“ und „psarchive“ erstellen und diese dann als meine Cron-Jobs festlegen.

5 * * * * top -b -n 1 > /root/toparchive/top.`date +"%Y%m%d_%H%M%S"`

oder

5 * * * * ps auxww > /root/psarchive/ps.`date +"%Y%m%d_%H%M%S"`

(das werden eine Menge Dateien sein, alternativ können Sie es so skripten, dass Sie zusätzliche Unterverzeichnisse mit einem Datumsstempel haben, wie /root/toparchive/20140701/)

Aber grundsätzlich beobachten Sie Ihren Sysstat und Sie können herausfinden, wann Ihr Server ausgelastet ist. Überprüfen Sie dann die entsprechende Top- oder PS-Ausgabe, die Sie erfasst haben, um zu sehen, was Ihren Speicherplatz belegt hat.

Wenn der Prozess viel Speicher beansprucht, können Sie zusätzlich mit „pmap“ und „pgrep“ die aktuellen Prozesse und die tatsächliche Speichernutzung einsehen.

verwandte Informationen