매일 생성되는 약 200GB의 로그 데이터가 있으며 약 150 개의 서로 다른 로그 파일로 분산됩니다.
파일을 임시 위치로 옮기고 임시 디렉토리에서 tar-bz2를 수행하는 스크립트가 있습니다.
200GB 로그가 약 12-15GB로 압축되어 좋은 결과를 얻습니다.
문제는 파일을 압축하는 데 시간이 오래 걸린다는 것입니다. 크론 작업은 매일 오전 2:30 실행하고 5까지 계속 실행 : 00-6 : 00 오후.
압축 속도를 높이고 작업을 더 빨리 완료 할 수있는 방법이 있습니까? 어떤 아이디어?
다른 프로세스 모두에 대해 걱정하지 마십시오, 압축이 일어나는 위치는에 NAS , 그리고 전용의 NAS 마운트 실행할 수있는 VM을 하고 거기에서 압축 스크립트를 실행합니다.
다음은 참조를위한 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
프로세스가 하나 개의 코어에서 긁고있다,하지만 당신은 (하나 개의 프로세스가 CPU를 100 % 사용하여 -> 쿼드 코어 시스템을 실행하고 있음을 25.1%
사용자 공간 CPU 시간, 74 %의 유휴). 따라서 약간의 변경만으로도 병목 현상이 발생하지 않는 한 4 배 빠르게 진행할 수 있습니다. Gilles의 답변을주의 깊게 읽으십시오. 압축을 수행하기 위해 데이터를 보유한 디스크와 동일한 상자에서 CPU를 사용하는 것이 좋습니다. (일부 상자에서 파일을 압축하고 다른 상자에서 다른 파일을 압축 한 후 보관하여 두 CPU를 모두 사용할 수도 있습니다.)