Eu tenho cerca de 200 GB de dados de log gerados diariamente, distribuídos entre cerca de 150 arquivos de log diferentes.
Eu tenho um script que move os arquivos para um local temporário e faz um tar-bz2 no diretório temporário.
Eu obtenho bons resultados, pois os logs de 200 GB são compactados para cerca de 12 a 15 GB.
O problema é que leva uma eternidade para compactar os arquivos. O cron trabalho é executado às 2:30 da manhã diário e continua a correr até 5: 00-6: 00.
Existe uma maneira de melhorar a velocidade da compactação e concluir o trabalho mais rapidamente? Alguma ideia?
Não se preocupe com outros processos e tudo, o local onde a compactação ocorre é em um NAS , e eu posso executar montar o NAS em uma VM dedicada e executar o script de compactação a partir daí.
Aqui está a saída do top para referência:
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
arquivo?
top
saída mostra que seu bzip2
processo single-threaded está maximizando um núcleo, mas que você está executando em um sistema quad-core (um processo usando 100% da CPU -> 25.1%
tempo da CPU no espaço do usuário, 74% ocioso). Portanto, com pequenas alterações, você pode ir 4x mais rápido, a menos que outra coisa se torne um gargalo. Leia a resposta de Gilles com atenção. Considere usar a CPU na mesma caixa que os discos que contêm os dados para fazer a compactação. (Você pode até comprimir alguns de seus arquivos em uma caixa, outros por outro, e arquivar depois, para que ambos os CPUs são utilizados.)