Wie Sie periodische Systemaktivitäten nachverfolgen, die die Echtzeitleistung beeinträchtigen

418
Dmitry Vyal

Ich verwende Jack2 mit Pianoteq-5 auf zwei Core-Notebooks mit 64-Bit-Ubuntu-14.04. Solche Konfigurationen sind aufgrund der geringen Latenzanforderungen sehr anfällig für die Echtzeitleistung. Zuerst hörte ich konstante Klicks, die im Grunde verschwunden waren, als ich die Datei /etc/security/limits.conf anpasste, um die RR-Fähigkeit zur Audiogruppe zu aktivieren.

Jetzt haben sowohl Jack als auch Pianoteq Threads mit der Scheduling-Klasse SCHED_FIFO. Ich kann Jack mit Puffer der Größe 128 Samples ausführen und es läuft die meiste Zeit reibungslos. Ich sage "am meisten", weil alle paar Minuten etwas das Paradies zerstört. Ich höre eine ganze Reihe schrecklicher Risse. Ich vermute, es ist das Ergebnis einiger Aktivitäten mit hoher Priorität, die im Hintergrund beginnen. Aber wie kann man feststellen, wer schuld ist?

0
Sieht aus, als habe ich endlich den Hauptschuldigen gefunden. Das war der Knetwork Manager, der eine periodische WLAN-Entdeckung auslöste oder so ähnlich. Ich habe nicht weiter nachgedacht, aber das Ausschalten des WLANs hilft enorm. Dmitry Vyal vor 9 Jahren 0

1 Antwort auf die Frage

1
ben

Hier ist eine Möglichkeit, dies zu tun. Erzeugt VIELE Dateien, aber ich kann mir keine andere Möglichkeit vorstellen.

Wenn Sie nicht wissen, wann der Server ausgelastet ist, müssen Sie sysstat verwenden, um Ihre historischen Ressourcendaten zu erfassen.

Erster Weg: Verwenden Sie sysstat und sammeln Sie alle 5 Minuten Statistiken (ca. 8 MB pro Tag). Ihr Cron-Eintrag würde ungefähr wie 5 * * * * / usr / lib / sa / sa1
oder 5 * * * * / usr / lib64 / sa / sa1 aussehen

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

Sie würden den Befehl "sar" verwenden, um durch historische Daten zu blicken, um zu sehen, wann Ihr Server ausgelastet ist.

Jetzt, da Sie historische Daten auf Ihrem Server haben, müssen Sie auch die Prozessausgabe erfassen, damit Sie sehen können, was gerade läuft. Sie können dafür "ps" oder "top" verwenden

So können Sie alle 5 Minuten auch die Ausgabe von top und ps auxww erfassen, um alle laufenden Prozesse zu sehen. Ich würde zwei Subverben "toparchive" und "psarchive" erstellen und diese dann als meine Cron-Jobs einsetzen.

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 viele Dateien sein, alternativ können Sie ein Skript erstellen, so dass Sie zusätzliche Unterverzeichnisse mit einem Datumsstempel haben, wie / root / toparchive / 20140701 /)

Sehen Sie sich jedoch im Allgemeinen Ihr sysstat an, 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 festzustellen, was Ihren Speicherplatz beansprucht

Wenn der Prozess Speicher beansprucht, können Sie zusätzlich "pmap" und "pgrep" verwenden, um die aktuellen Prozesse und die tatsächliche Speicherauslastung anzuzeigen.

Nun, da es eine Workstation ist und ich dieses Verhalten fast jede Minute beobachte, würde wahrscheinlich eine normale Uhr ausreichen. Danke für eine Idee! Dmitry Vyal vor 9 Jahren 0
Die Verwendung von Top wäre der erste Teil und Sie können eine gute Vorstellung davon bekommen, welche Ressourcen am meisten verwendet werden. Sie können sar immer noch verwenden, um zu sehen, ob der Engpass CPU, Arbeitsspeicher, E / A usw. ist. Wenn Ihr Server durch irgendetwas beschädigt wird, sehen Sie diesen Prozess am Anfang von "top";) Gut Glück! ben vor 9 Jahren 0