Ho circa 200 GB di dati di registro generati ogni giorno, distribuiti tra circa 150 diversi file di registro.
Ho uno script che sposta i file in una posizione temporanea e fa un tar-bz2 nella directory temporanea.
Ottengo buoni risultati poiché i registri da 200 GB vengono compressi a circa 12-15 GB.
Il problema è che ci vuole un'eternità per comprimere i file. Il cron job viene eseguito ogni giorno alle 2:30 e continua fino alle 17: 00-18: 00 PM.
C'è un modo per migliorare la velocità della compressione e completare il lavoro più velocemente? Qualche idea?
Non preoccuparti di altri processi e tutto il resto, la posizione in cui avviene la compressione è su un NAS , e posso eseguire il mount del NAS su una VM dedicata ed eseguire lo script di compressione da lì.
Ecco l'output di top per riferimento:
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
file?
top
output mostra che il bzip2
processo a thread singolo sta esaurendo al massimo un core, ma che lo stai eseguendo su un sistema quad-core (un processo che utilizza CPU al 100% -> 25.1%
tempo CPU spazio utente, 74% inattivo). Quindi, con piccole modifiche, puoi andare 4 volte più veloce, a meno che qualcos'altro diventi il collo di bottiglia. Leggi la risposta di Gilles con attenzione. Prendi in considerazione l'utilizzo della CPU nella stessa casella dei dischi che contengono i dati per eseguire la compressione. (Potresti persino comprimere alcuni dei tuoi file su una scatola, altri sull'altra e archiviarli dopo, quindi vengono utilizzate entrambe le CPU.)