Tengo alrededor de 200 GB de datos de registro generados diariamente, distribuidos entre aproximadamente 150 archivos de registro diferentes.
Tengo un script que mueve los archivos a una ubicación temporal y hace un tar-bz2 en el directorio temporal.
Obtengo buenos resultados ya que los registros de 200 GB se comprimen a aproximadamente 12-15 GB.
El problema es que lleva una eternidad comprimir los archivos. El trabajo cron se ejecuta diariamente a las 2:30 a.m. y continúa hasta las 5: 00-6: 00 p.m.
¿Hay alguna manera de mejorar la velocidad de la compresión y completar el trabajo más rápido? ¿Algunas ideas?
No se preocupe por otros procesos y todo, la ubicación donde ocurre la compresión es en un NAS , y puedo ejecutar montar el NAS en una VM dedicada y ejecutar el script de compresión desde allí.
Aquí está la salida de top para referencia:
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
archivo?
top
resultado muestra que su bzip2
proceso de subproceso único está maximizando un núcleo, pero que lo está ejecutando en un sistema de cuatro núcleos (un proceso que utiliza 100% de CPU -> 25.1%
tiempo de CPU de espacio de usuario, 74% inactivo). Entonces, con cambios menores, puede ir 4 veces más rápido, a menos que otra cosa se convierta en el cuello de botella. Lee la respuesta de Gilles cuidadosamente. Considere usar la CPU en el mismo cuadro que los discos que contienen los datos para realizar la compresión. (Incluso puede comprimir algunos de sus archivos en un cuadro, otros en el otro, y archivarlos después, de modo que se utilicen ambas CPU.)