Система: 2 процессора по 4 ядра.
Нужно сжать в пределах 80 файлов, используя gzip. Что нужно сделать чтобы были задействованы одновременно все ядра процессора? На данный момент при использовании команды gzip * используется одновременно только одно ядро, остальные не задействованы.
проверь для начала насколько утилизируется это самое ядро. узкое место диски никто не отменял. только-что попробывал один большой файл на ссд с флагом -9 - нагрузка на ядро 45%, - уперлось в ввод-вывод. тобишь бессмысленно параллелить. я бы даже сказал во вред.
> Система: 2 процессора по 4 ядра.можно использовать p7zip
причем p7zip и lzma2 сжатие -- тогда все процы будут загружены
> Система: 2 процессора по 4 ядра.
> Нужно сжать в пределах 80 файлов, используя gzip. Что нужно сделать чтобы
> были задействованы одновременно все ядра процессора? На данный момент при использовании
> команды gzip * используется одновременно только одно ядро, остальные не задействованы.https://www.gnu.org/software/parallel/man.html#example__proc...
EXAMPLE: Processing a big file using more cores
To process a big file or some output you can use --pipe to split up the data into blocks and pipe the blocks into the processing program.
If the program is gzip -9 you can do:
cat bigfile | parallel --pipe --recend '' -k gzip -9 >bigfile.gz
а есть еще не gzip, а pigz, этот архиватор имеет вот такую интересную опцию:-p --processes n
Allow up to n processes (default is the number of online proces-
sors)
андрюха, погугли мне рецепт мяса в горшочке. смотрю ты любишь за других гуглом пользоваться.
пока не утилизируется ядро на 100 процентов - распараллеливать не то что бессмысленно - вредено.
> Система: 2 процессора по 4 ядра.
> Нужно сжать в пределах 80 файлов, используя gzip. Что нужно сделать чтобы
> были задействованы одновременно все ядра процессора? На данный момент при использовании
> команды gzip * используется одновременно только одно ядро, остальные не задействованы.find /path_to/files_nees_gzip -type f [-name '*.txt'] | xargs -n 1 -p 8 gzip
# find
# -name '*.txt' - опционально, чтобы отобрать нужные файлы# xargs
# -n 1 - передавать команде gzip по одному аргументу
# -p 8 - использовать 8 (или указать сколько Вам надо) экземпляров gzip# для сложных случаев, с непредсказуемым именами файлов/каталогов (т.е. созданными "обычными пользователями") можно использовать вариант
find /path_to/files_nees_gzip -type f [-name '*.txt'] -print0 | xargs -0 -n1 -p 8 gzip
> Система: 2 процессора по 4 ядра.
> Нужно сжать в пределах 80 файлов, используя gzip. Что нужно сделать чтобы
> были задействованы одновременно все ядра процессора? На данный момент при использовании
> команды gzip * используется одновременно только одно ядро, остальные не задействованы.На основании инфы в этой ветке и гугла получилось вот что:
tar -C 2015-04-24\ WindowsBackup -cf - . | parallel --pipe --recend '' -k gzip > \!.tar.gz
Грузит все ядра.
>> Система: 2 процессора по 4 ядра.
>> Нужно сжать в пределах 80 файлов, используя gzip. Что нужно сделать чтобы
>> были задействованы одновременно все ядра процессора? На данный момент при использовании
>> команды gzip * используется одновременно только одно ядро, остальные не задействованы.
> На основании инфы в этой ветке и гугла получилось вот что:
> tar -C 2015-04-24\ WindowsBackup -cf - . | parallel --pipe --recend ''
> -k gzip > \!.tar.gz
> Грузит все ядра.zip <1 file> & zip <2 file> & zip <3 file> & .....
и так все 80 файлов...
:)