У меня ежедневно генерируется около 200 ГБ данных журнала, которые распределяются по 150 различным файлам журнала.
У меня есть скрипт, который перемещает файлы во временную папку и делает tar-bz2 во временной директории.
Я получаю хорошие результаты, поскольку журналы объемом 200 ГБ сжимаются примерно до 12-15 ГБ.
Проблема в том, что для сжатия файлов требуется вечность. Хрон задание выполняется в 2:30 утра ежедневно , и продолжает работать до 5: 00-6: 00 PM.
Есть ли способ улучшить скорость сжатия и завершить работу быстрее? Есть идеи?
Не беспокойтесь о других процессах и обо всем, место, где происходит сжатие, находится на NAS , и я могу запустить монтирование 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% ЦП -> 25.1%
время ЦП в пользовательском пространстве, 74% бездействия). Таким образом, с небольшими изменениями вы можете идти в 4 раза быстрее, если что-то еще не станет узким местом. Внимательно прочитайте ответ Жиля. Рассмотрите возможность использования ЦП в той же коробке, что и диски, на которых хранятся данные, для сжатия. (Вы можете даже сжать некоторые из ваших файлов в одном блоке, другие - в другом, а затем архивировать, чтобы оба процессора использовались.)