我每天产生约200 GB的日志数据,分布在约150个不同的日志文件中。
我有一个脚本将文件移动到临时位置,并在临时目录上执行tar-bz2。
将200 GB的日志压缩到大约12-15 GB后,我得到了很好的结果。
问题是压缩文件需要花费很多时间。该cron的工作上午2:30每天运行,并继续运行,直到5:00-6:00 PM。
有没有办法提高压缩速度并更快地完成工作?有任何想法吗?
不用担心其他所有过程,压缩发生的位置在NAS上,我可以在专用VM上运行将NAS挂载,然后从那里运行压缩脚本。
这是top的输出,以供参考:
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
文件?
top
输出显示单线程bzip2
进程正在用尽一个内核,但是您正在四核系统上运行它(一个进程使用100%CPU-> 25.1%
用户空间CPU时间,其中74%处于空闲状态)。因此,只需进行较小的更改,您就可以以4倍的速度运行,除非其他因素成为瓶颈。阅读吉尔斯仔细回答。考虑在与容纳数据的磁盘相同的框中使用CPU进行压缩。(您甚至可以将一些文件压缩在一个盒子上,而另一些文件则压缩在另一个盒子上,然后再存档,因此两个CPU都可以使用。)