Wir haben eine regelmäßige Aufgabe, die du
Zusammenfassungen einer Reihe von Unterverzeichnissen durchführt, die schlimmsten Straftäter heraussucht und anhand der Ergebnisse ermittelt, ob es Dinge gibt, die schnell zunehmen, um potenzielle Probleme zu erkennen. Wir verwenden diff
Schnappschüsse, um sie zu vergleichen.
Es gibt ein Verzeichnis der obersten Ebene mit einigen hundert Unterverzeichnissen, von denen jedes Zehntausende von Dateien (oder mehr) enthalten kann.
Ein " du -s
" in diesem Zusammenhang kann sehr IO-aggressiv sein und dazu führen, dass unser Server seinen Cache nicht mehr unterstützt und dann massive IO-Spikes auftreten, die eine sehr unerwünschte Nebenwirkung sind.
Welche Strategie kann verwendet werden, um dieselben Daten ohne die unerwünschten Nebenwirkungen zu erhalten?
quelle
Antworten:
Schauen Sie sich an
ionice
. Vonman ionice
:Um
du
mit der "Leerlauf" -E / A-Klasse zu arbeiten, die die niedrigste verfügbare Priorität hat, können Sie Folgendes tun:Dies sollte verhindern
du
, dass die E / A anderer Prozesse gestört werden. Möglicherweise möchten Sie das Programm auch erneut starten, um die CPU-Priorität zu verringern.Sie können auch bei der Initialisierung beides tun:
quelle
renice
statt aufrufennice
. Suchen Sie sichdu
sowohl mit ionice und schön, können Sie die Kette beide Programme:nice -n19 ionice -c3 du
.nice
Dies wirkt sich auch auf die Priorität des E / A-Schedulers aus, nicht nur auf die CPU.nice
wirkt sich dies nur auf die Prozessorqualität aus (was sich indirekt auf die E / A auswirken kann, aber nicht auf die Priorität des E / A-Schedulers auswirken sollte). Wo sehen Sie dieses Verhalten? Ist es irgendwo dokumentiert?nice
Blick darauf geworfen und nur Seite 263 gefunden, die explizite Details dazu enthält , und es geht nur um CPU-Basiszeitquanten. Hast du eine Ahnung, wo es in dem Buch war? Ich würde interessiert sein , um eine maßgebliche Quelle zu lesen , dass die Staaten es, sie nicht in die Rede istman nice
,man 2 nice
,man 2 setpriority
,info nice
oderinfo 'nice invocation'
, soweit ich kann sagen, was da einige dieser Sprung in ziemlich viel Detail , wie die seltsamnice
Aufruf funktioniert und was es macht.Wenn Sie in einem einzigen Verzeichnis Unmengen von Dateien haben, kann dies für E / A-Spitzen verantwortlich sein, da viele Dateisysteme große Dateibäume in einem einzigen Verzeichnis nicht gut verarbeiten. Eine Aufteilung in mehrere Unterverzeichnisse kann hier Abhilfe schaffen. Wenn Sie mehr als 10.000 Dateien in einem Verzeichnis haben und dies Probleme verursacht, sollten Sie es wahrscheinlich aufteilen.
Was die Nachverfolgung der Datenträgernutzung angeht, können Sie zunächst einen Blick darauf werfen
df
. Wenn der Nutzungswert dort nicht schnell angestiegen ist, haben es auch die Subdirs nicht getan, und Sie können den gesamten Vorgang überspringendu
.Eine andere Alternative kann ein Festplattenquotensystem sein, das die Nutzung kontinuierlich verfolgt, sofern Ihr Dateisystem dies unterstützt.
quelle
df
würde nicht ganz funktionieren - das Problem ist, dass wir Bereinigungsskripte haben, so dass wir möglicherweise keine Änderung sehen, aber eine frühe Warnung für einen automatischen Job verpasst haben, der aggressiv Speicherplatz beansprucht. Wir verwenden zabbix, um die Gesamtbelegung der Festplatte zu überwachen, aber es ist ziemlich wichtig, die einzelnen Verzeichnisse zu kennen, in denen die Dinge ein bisschen verrückt werden.Außerdem
ionice
können Sie versuchen, die Datenträgerzugriffe effizienter zu gestalten. Dies kann durch Ausführen versucht werdenzuerst (vielleicht auch durch
ionice
). Es funktioniert nicht, wenn zu viele Dateien vorhanden sind. Wie viele zu viele sind, hängt von der Größe des freien Arbeitsspeichers ab.quelle