Täglich werden ca. 200 GB Protokolldaten generiert, die auf ca. 150 verschiedene Protokolldateien verteilt sind.
Ich habe ein Skript, das die Dateien an einen temporären Speicherort verschiebt und ein tar-bz2 im temporären Verzeichnis ausführt.
Ich erhalte gute Ergebnisse, da 200 GB-Protokolle auf ca. 12-15 GB komprimiert werden.
Das Problem ist, dass es ewig dauert, die Dateien zu komprimieren. Der Cron- Job wird täglich um 2.30 Uhr ausgeführt und läuft bis 17.00-18.00 Uhr.
Gibt es eine Möglichkeit, die Geschwindigkeit der Komprimierung zu verbessern und den Auftrag schneller abzuschließen? Irgendwelche Ideen?
Machen Sie sich keine Gedanken über andere Prozesse und alles, der Ort, an dem die Komprimierung stattfindet, befindet sich auf einem NAS , und ich kann den NAS auf einer dedizierten VM mounten und das Komprimierungsskript von dort ausführen.
Hier ist die Ausgabe von top als Referenz:
top - 15:53:50 up 1093 days, 6:36, 1 user, load average: 1.00, 1.05, 1.07
Tasks: 101 total, 3 running, 98 sleeping, 0 stopped, 0 zombie
Cpu(s): 25.1%us, 0.7%sy, 0.0%ni, 74.1%id, 0.0%wa, 0.0%hi, 0.1%si, 0.1%st
Mem: 8388608k total, 8334844k used, 53764k free, 9800k buffers
Swap: 12550136k total, 488k used, 12549648k free, 4936168k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7086 appmon 18 0 13256 7880 440 R 96.7 0.1 791:16.83 bzip2
7085 appmon 18 0 19452 1148 856 S 0.0 0.0 1:45.41 tar cjvf /nwk_storelogs/compressed_logs/compressed_logs_2016_30_04.tar.bz2 /nwk_storelogs/temp/ASPEN-GC-32459:nkp-aspn-1014.log /nwk_stor
30756 appmon 15 0 85952 1944 1000 S 0.0 0.0 0:00.00 sshd: appmon@pts/0
30757 appmon 15 0 64884 1816 1032 S 0.0 0.0 0:00.01 -tcsh
tar.bz2
Datei schreiben ?
top
Ausgabe zeigt, dass Ihr Single-Thread- bzip2
Prozess einen Kern maximal nutzt, dass Sie ihn jedoch auf einem Quad-Core-System ausführen (Ein Prozess mit 100% CPU -> 25.1%
CPU-Zeit auf Benutzerbasis, 74% Leerlauf). Mit geringfügigen Änderungen können Sie also 4x so schnell fahren, es sei denn, etwas anderes wird zum Engpass. Lesen Sie die Antwort von Gilles sorgfältig durch. Verwenden Sie die CPU in der gleichen Box wie die Datenträger, auf denen sich die Daten für die Komprimierung befinden. (Sie können sogar einige Ihrer Dateien auf einer Box komprimieren, andere auf der anderen, und anschließend archivieren, damit beide CPUs verwendet werden.)