[LINUX] Überprüfen Sie die Komprimierungsrate und -zeit von PIXZ, die in der Praxis verwendet werden

Hintergrund

Wie komprimieren Sie Ihre Datensicherung? In diesem Eintrag möchte ich ein kurzes Überprüfungsergebnis für das XZ-Komprimierungsformat zusammenfassen, das für sein hohes Komprimierungsverhältnis bekannt ist.

Der Grund für diese Überprüfung war, dass wir nach einer Möglichkeit suchten, Daten in AWS S3 zu sichern. Ich mache eine doppelte Sicherung mit einem Datenserver, der Projektinformationen enthält, die sich auf das Geschäft beziehen Als Katastrophenschutzmaßnahme habe ich beschlossen, ein Backup auf einem Remote-Server zu erstellen. Die Kosten fallen jedoch abhängig von der Datenmenge und der Kommunikationsmenge an. Daher haben wir eine Überprüfung durchgeführt, um diese Kosten zu senken.

Als ich im Internet recherchierte, fand ich einige Artikel, die das Komprimierungsverhältnis und die für die Komprimierung erforderliche Zeit überprüften. Ich hatte den Eindruck, dass die Datentypen voreingenommen waren und viele von ihnen der logischen Überprüfung nahe kamen.

Daher möchte ich überprüfen, wie viel Effekt mit Datentypen erzielt werden kann, die im Geschäftsleben üblich sind.

Zweck der Überprüfung

Validierungsdaten

/tmp/compress-test
├ design:    1.8GB
├ logs:      8.8GB
└ wordpress: 50MB

Zuerst habe ich die Testdaten im Verzeichnis vorbereitet. Die Konstruktionsdaten umfassen Daten wie PDF, AI, PSD, XD und PNG. Um die Struktur praktischer zu gestalten, wagen wir es, mehrere Typen einzuschließen. Es sollen Daten von Designern und Regisseuren sein.

Für die Protokolldaten haben wir 8,8 GB Protokolldateien vorbereitet, die täglich auf dem WEB-Server ausgegeben werden. Dies ist auch ein häufiges Muster im Serverbetrieb.

Schließlich sind es die Daten, die den Quellcode enthalten. Wir haben das Wordpress-Paket im Standardzustand vorbereitet.

Überprüfungsmethode

Dieses Mal werden wir mit der Multithread-Version von XZ überprüfen, damit es näher an der Praxis ist. Da XZ eine hohe Komprimierungsrate aufweist, ist die Komprimierungszeit extrem lang. Es war also unpraktisch, Hunderte von GB mit einem einzigen Thread zu komprimieren Wir werden dies mit Multithread überprüfen, aber dies hängt natürlich von der Leistung der Maschine ab.

Verifizierungsmaschine

# iMac (Retina 5K, 27-inch, Late 2015)
CPU Core i7-6700K 4 Kerne 8 Gewinde(4.0〜4.2GHz)
RAM 32GB DDR3 1867MHz
SSD WD Black SN750 (Read/2700 MB für beide Write/s)

Da die CPU 4 Kerne und 8 Threads hat, werden bei dieser Überprüfung 8 Threads verwendet. Die Lese- / Schreibgeschwindigkeit wirkt sich auf die E / A aus. Sie müssen also berücksichtigen, dass es sich um eine SSD handelt. Da der Speicher DDR3 ist, muss auch berücksichtigt werden, dass er dem aktuellen DDR4 unterlegen ist.

Überprüfungsumgebung

Installieren Sie PIXZ

$ brew install pixz

Überprüfungsbefehl

#Kompression
$ tar -C Übergeordneter Verzeichnispfad, der komprimiert werden soll-cf -Zu komprimierender Verzeichnisname| pixz -9 >Pfad der Ausgabedatei

#Einsatz
$ pixz -d -i Pfad der Zieldatei ausgeben| tar zxf -

Wenn Sie im Befehl tar einen absoluten Pfad angeben, enthält die komprimierte Datei den absoluten Pfad, sodass die Option "-C" als Gegenmaßnahme verwendet wird.

Überprüfung durchführen

Entwurfsdaten

report_design.png Liegt es schließlich daran, dass es verschiedene Datenformate enthält? Es hat ungefähr 2 Minuten gedauert, ist aber für 1,8 GB langsam. Die Dateigröße beträgt jetzt 34%, sodass die Komprimierungsrate 66% beträgt. Im Vergleich zur Komprimierung war die Dekomprimierung schneller als erwartet und ich war überrascht.

Logdaten

report_logs.png Es handelt sich um Protokolldaten mit nur Textdaten, die jedoch 8 Minuten dauern. Beim Vergleich der Konstruktionsdaten scheint dies proportional zu sein. Protokolldaten scheinen etwas schneller zu sein. Die komprimierten Daten sind ungefähr 5% groß und das Komprimierungsverhältnis beträgt 95%! Und die Dekomprimierung ist schnell für die Kapazität!

Quellcodedaten

report_wordpress.png Schließlich sind es Wordpress-Quelldaten. Da die Kapazität gering ist, ist sie in ca. 18 Sekunden fertig. Die Größe nach der Komprimierung beträgt ungefähr 18%, was einem Komprimierungsverhältnis von 82% entspricht. Wie erwartet liegt die Ursache meiner Meinung nach darin, dass im Gegensatz zu den Protokolldaten einige Bilddaten enthalten waren.

Prüfergebnis

Datentyp Datenkapazität Komprimierungszeit Kapazität nach Komprimierung Kompressionsrate Auftauzeit
Entwurfsdaten 1.8GB 2 Minuten 19 Sekunden 624MB 66% 6.2 Sekunden
Logdaten 8.8GB 8 Minuten 11 Sekunden 480MB 95% 15.6 Sekunden
Quellcode 50MB 18.7 Sekunden 9.1MB 82% 1.7 Sekunden

Da diese Überprüfung nur ein "Standard" ist, berechnen wir in MB-Einheiten und lassen den Dezimalpunkt für die Zeit weg. Bitte beachten Sie, dass dies kein striktes Überprüfungsergebnis ist.

Impressionen

Anhand der obigen Ergebnisse konnte ich verstehen, dass sich die Komprimierungsrate und die Zeit je nach Datentyp ändern. Eine Frage bleibt offen. Dieses Mal habe ich eine Archivdatei mit tar erstellt und sie dann komprimiert Ist das Komprimierungsverhältnis zum Zeitpunkt der Archivierung nicht von Teer abhängig? Das ist.

In diesem Fall ändert sich die Komprimierung in XZ nicht mit dem Datentyp, sondern nur mit dem Komprimierungsverhältnis von tar. Es besteht auch die Möglichkeit, dass. Ich denke, wir müssen das noch überprüfen. Wenn jemand damit vertraut ist, lassen Sie es mich bitte wissen.

Laden Sie die Maschine

Ich habe die Komprimierung in 8 Threads ausgeführt und die CPU-Auslastung während der Komprimierung betrug 600-800%. Da alle Kerne nahezu 100% waren In Anbetracht der geschäftlichen Nutzung ist es wichtig, die Anzahl der zuzuweisenden Threads zu begrenzen.

Wenn Sie bei Verwendung mit einem VPS-Server lange Zeit mit einer hohen CPU-Auslastungsrate weiterarbeiten, können Einschränkungen der CPU-Auslastung auftreten.

In EC2 besteht die Möglichkeit, dass die CPU-Credits zu Beginn der T-Instanz aufgebraucht werden. Daher ist es meiner Meinung nach besser, eine Komprimierungsmethode in Betracht zu ziehen, die die CPU nicht belastet.

Kompressionsrate und Zeit

Die Entwurfsdaten betrugen 66%, die Protokolldaten 95% und der Quellcode 82%, was für das Komprimierungsverhältnis sehr zufriedenstellende Ergebnisse waren. Insbesondere können Konstruktionsdaten häufig keine Kapazität sparen, selbst wenn sie komprimiert sind, sodass sie anscheinend verwendet werden können.

Das Kompressionsverhältnis ist gut, aber es dauert zu lange ... Es ist ein Eindruck, dass diesmal 8 Threads verwendet werden. In einer Umgebung, in der die verfügbaren Ressourcen begrenzt sind, mag es etwas schwierig sein, aber es scheint, dass es verschiedene Verwendungszwecke für den persönlichen Gebrauch gibt.

Die Auftauzeit ist für ihre Kapazität relativ schnell, so dass es in der Lage zu sein scheint, mit mäßiger Dringlichkeit umzugehen.

Es war eine weniger strenge Überprüfung, aber ich hoffe, es wird für diejenigen hilfreich sein, die eine Richtlinie kennen wollen.

Recommended Posts

Überprüfen Sie die Komprimierungsrate und -zeit von PIXZ, die in der Praxis verwendet werden
Erläuterung und Implementierung des in Slack, HipChat und IRC verwendeten XMPP-Protokolls
Prognostizieren Sie den Stromverbrauch in 2 Tagen und veröffentlichen Sie ihn in CSV
Lesen Sie die Ausgabe von subprocess.Popen in Echtzeit
Korrigieren Sie die Argumente der in map verwendeten Funktion
Wird ab der Einführung von Node.js in der WSL-Umgebung verwendet
Ich habe die Berechnungszeit von "X in Liste" (lineare Suche / dichotome Suche) und "X in Menge" untersucht.
Überprüfen Sie die Verarbeitungszeit und die Anzahl der Aufrufe für jeden Prozess mit Python (cProfile).
Die Geschichte der Schaffung eines "Geist- und Zeit-Chatrooms" exklusiv für Ingenieure im Unternehmen
Implementieren Sie das mathematische Modell "SIR-Modell" von Infektionskrankheiten in OpenModelica (das die Sterblichkeitsrate und die Reinfektionsrate widerspiegelt).
Ich habe versucht, die Zeit und die Zeit der C-Sprache zu veranschaulichen
[Python] Zeigt die verstrichene Zeit in Stunden, Minuten und Sekunden an (00:00:00)
Holen Sie sich das aktuelle Datum und die aktuelle Uhrzeit in Python unter Berücksichtigung des Zeitunterschieds
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Die Geschichte, zum ersten Mal seit 5 Jahren wieder an die Front zurückzukehren und Python Django umzugestalten
Bestimmen Sie das Datums- und Uhrzeitformat mit Python und konvertieren Sie es in Unixtime
Ich habe die Berechnungszeit des in Python geschriebenen gleitenden Durchschnitts verglichen
Verschrotten Sie den Zeitplan von Hinatazaka 46 und spiegeln Sie ihn in Google Kalender wider
Wahrscheinlichkeit der höchsten und niedrigsten Jungtierpreise in Atsumori
Benachrichtigen Sie den Inhalt der Aufgabe vor und nach der Ausführung der Aufgabe mit Fabric
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Durchsuchen Sie .loc und .iloc gleichzeitig in pandas DataFrame
Holen Sie sich den Titel und das Lieferdatum von Yahoo! News in Python
Die Geschichte von Python und die Geschichte von NaN
Verarbeiten Sie das Ergebnis von% time,% timeit
Die Geschichte des "Lochs" in der Akte
Diagramm der Geschichte der Anzahl der Ebenen des tiefen Lernens und der Änderung der Genauigkeit
Ein leicht verständlicher Vergleich der grundlegenden Grammatik von Python und Go
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
Abrufen und Konvertieren der aktuellen Zeit in der lokalen Systemzeitzone mit Python
Öffnen Sie eine Excel-Datei in Python und färben Sie die Karte von Japan
[Einführung in Python] Eine ausführliche Erklärung der in Python verwendeten Zeichenkettentypen!
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Über die Hauptaufgaben der Bildverarbeitung (Computer Vision) und die verwendete Architektur