Parallelverarbeitung
pgBadger bietet zwei einander ergänzende Modi für die Parallelverarbeitung. Wählen Sie den Modus anhand der Struktur Ihrer Eingabedaten und nicht allein nach der Anzahl der CPUs.
| Option | Parallelitätseinheit | Geeignet für | Wichtigste Einschränkung |
|---|---|---|---|
-j N / --jobs N | Abschnitte einer Protokolldatei | eine große Protokolldatei mit wahlfreiem Zugriff | An Abschnittsgrenzen kann eine geringe Anzahl von Abfragen doppelt gezählt oder ausgelassen werden |
-J N / --Jobs N | vollständige Protokolldateien | viele unabhängige Protokolle | nützlich nur, wenn genügend Dateien vorhanden sind, um die Worker auszulasten |
Eine große Datei mit -j aufteilen
Der Algorithmus des Originalprojekts teilt jede Datei in N Bytebereiche auf, startet für jeden Bereich einen eigenen Parser, schreibt temporäre Binärstatistiken und führt diese anschließend zum endgültigen Bericht zusammen.
Da Protokolleinträge und mehrzeilige Anweisungen nicht genau an Byte-Offsets ausgerichtet sind, können an den Abschnittsgrenzen bis zu etwa N Abfragen pro Datei abgeschnitten, ausgelassen oder — häufiger — doppelt gezählt werden. Verwenden Sie diesen Modus für aggregierte Analysen sehr großer Dateien, nicht für Abläufe, die eine forensisch exakte Zählung jedes Protokolleintrags erfordern.
Mehrere Dateien mit -J verarbeiten
Jeder Worker verarbeitet eine vollständige Datei, sodass dieser Modus Ungenauigkeiten an Abschnittsgrenzen vermeidet. Besonders nützlich ist er bei Hunderten kleiner Dateien und ausreichender CPU- sowie I/O-Kapazität. Die Dokumentation des Originalprojekts sieht -J auch für unabhängige komprimierte Dateien vor; das Aufteilen einer einzelnen Datei mit -j erfordert dagegen unkomprimierte Eingabedaten mit wahlfreiem Zugriff.
Benchmark des Originalprojekts
Das Handbuch des Originalprojekts nennt diese Messwerte für einen Host mit 8 CPUs. Betrachten Sie sie als Vergleich der beiden Algorithmen und nicht als Prognose für aktuelle Hardware.
Eine Datei mit 9.5 GB:
| Option | 1 CPU | 2 CPU | 4 CPU | 8 CPU |
|---|---|---|---|---|
-j | 1h41m18 | 50m25 | 25m39 | 15m58 |
-J | 1h41m18 | 54m28 | 41m16 | 34m45 |
Zweihundert Dateien à 10 MB, insgesamt 2 GB:
| Option | 1 CPU | 2 CPU | 4 CPU | 8 CPU |
|---|---|---|---|---|
-j | 20m15 | 9m56 | 5m20 | 4m20 |
-J | 20m15 | 9m49 | 5m00 | 2m40 |
In der Praxis empfiehlt sich -j für wenige große Dateien und -J für viele kleine Dateien. Sie können beide Modi kombinieren, sofern Eingabe und Plattform dies unterstützen. Messen Sie jedoch die Leistung dieser Kombination: Die Protokollanalyse kann eher durch den Durchsatz des Speichersystems als durch die CPU-Leistung begrenzt werden.
Einschränkungen und temporäre Dateien
-jist für komprimierte oder CSV-Eingabedaten nicht verfügbar und setzt das Forken von Prozessen voraus; daher steht dieser Modus unter Windows nicht zur Verfügung.- Bei entfernten Eingaben unterstützt das Originalprojekt keine Verarbeitung von CSV-Dateien.
- Die parallele Analyse erstellt im ausgewählten temporären Verzeichnis Dateien mit Namen wie
tmp_pgbadgerXXXX.bin(standardmäßig im temporären Systemverzeichnis). - Löschen Sie diese Dateien nicht, während pgBadger läuft. Verwenden Sie
--tempdir, um sie auf einem Speichermedium mit ausreichender Kapazität abzulegen. - Beginnen Sie mit einer moderaten Anzahl von Workern und überwachen Sie CPU-Auslastung, Lesedurchsatz, Verbrauch an temporärem Speicherplatz und Laufzeit.