Вы, вероятно, обнаружите, что zip
тратит большую часть своего времени на ожидание ввода / вывода (чтение файлов и запись сжатых версий), поэтому он не использует столько ресурсов процессора, сколько вы ожидаете. Придание процессу дополнительного приоритета через nice
не влияет на это, так как задача не может использовать больше процессорного времени, если ей не передаются данные со скоростью, которая потребовала бы этого.
Под Linux вы можете видеть эту ситуацию как высокий% времени как время ожидания ввода-вывода в выводе от top
и аналогичных утилит, то же самое может быть верно для OSX.
Причины времени ожидания ввода-вывода могут включать:
- обработка множества маленьких файлов (много движений головы, чтение файлов и связанных структур каталогов)
- фрагментация файла
- конкурировать с другими действиями на соответствующих дисках (пользователи, копирующие / перемещающие / получающие доступ к файлам, запланированные AV-сканирования, ...), пока выполняется резервное копирование
- чтение файлов по сети (современный ЦП может архивировать данные гораздо быстрее, чем когда-либо может передать их канал со скоростью 100 Мбит / с, а задержка в сети усугубит эффект многих маленьких файлов) или передача сжатых данных по сети (если только ваши данные сжимаются необычно, применяется то же условие «zip быстрее, чем ваша сеть на современных процессорах», так как оно будет считывать данные с локальных дисков и обрабатывать данные быстрее, чем может затем отправить результат по сети)
- конкуренция в сети (если сервер, с которым вы разговариваете, имеет 100-мегабитную ссылку, а другие используют его, это может быть проблемой, в меньшей степени, если у него, конечно, более быстрая ссылка)
- медленные диски или медленные интерфейсы (если какой-либо из этих дисков подключен через USB2, он будет иметь тенденцию передавать не более 25 Мбайт / с, иногда медленнее, в зависимости от используемого USB-адаптера и конкуренции с шиной USB с другими быстрыми устройствами, где современный внутренний диск будет вдвое больше, если не больше для массовых переводов)
Если вы хотите использовать "резервные" циклы ЦП и не можете сделать это за счет сокращения задержек ввода-вывода, вы можете вместо этого попробовать использовать 7zip - это использует гораздо больше процессорного времени на блок данных, но обеспечивает лучшее сжатие, чем zip by Во многих случаях это тоже достаточно для уменьшения размера ваших резервных копий. Будет ли это быстрее (потому что 7zip приводит к отправке меньшего количества данных по сети) или медленнее (потому что дополнительная вычислительная сложность означает, что ваш ЦП может стать узким местом, а не дисками / файловыми системами / сетью), зависит от точной спецификации вашей машины.
Редактировать:
Еще одна вещь, некоторые инструменты сообщают, что процесс использует каждое ядро, а некоторые - процессор (а некоторые в любом случае в зависимости от настроек), а zip обычно является многопоточным процессом. Так что если у вас четырехъядерный процессор, то 5%, скорее всего, будут "5% от ЦП", или примерно 20% от одного ядра (хотя он может быть отскакивающим между ядрами, если он однопоточный, он не будет работать на более чем один в любой момент).