Столкнулся с тем, что при резервном копировании определенных каталогов с последующим их сжатием архиватором 7Zip, нагрузка на CPU в системе под 100%. Если запуск скрипта приходится на рабочее время это создает проблему, так ресурсы система захвачены одним процессом, а все остальное может оказать недоступны или частично доступным

Почитал по части использования архиватора 7Zip и в моем куске кода, как например:

set arhivator="%ProgramFiles%\7-Zip\"

if exist "%arhivator%\7z.exe" goto n:

:n

pushd "%arhivator%"

7z a  -t7z -mhe %bupd%\%COMPUTERNAME%\%datef%_v1.7z %bupd%\%COMPUTERNAME%\%datef%\

rmdir /S /Q "%bupd%\%COMPUTERNAME%\%datef%\"

popd

По умолчанию 7-Zip:

  • Задействует все ядра
  • У меня включена максимальная компрессия
  • Дает 100% загрузку CPU

С учетом документации мне видится несколько вариантов решения моей проблемы:

Вариант №1: Ограничить потоки

На заметку: добавить параметр "-mnt" (multi-threading)

7z a -t7z -mhe -mmt=2 %bupd%\%COMPUTERNAME%\%datef%_v1.7z %bupd%\%COMPUTERNAME%\%datef%\

Примеры:

  • -mmt=1 → 1 ядро (минимальная нагрузка)
  • -mmt=2 → умеренно
  • -mmt=4 → быстрее, но больше CPU

Вариант №2: Снизить уровень сжатия

На заметку: Параметр -mx=3 (у меня сейчас максимум)

Вариант №3: Задать приоритет процесса

start "" /log /wait 7z a -t7z -mhe -mx=3 -mmt=2 %bupd%\%COMPUTERNAME%\%datef%_v1.7z %bupd%\%COMPUTERNAME%\%datef%\

Вариант №4: Ограничить ядра

start "" /low /affinity 3 /wain 7z и т.д

Подведу итог что мне удалось подчерпнуть из документации:

  • «-mmt» — ограничивает ядра
  • «-mx» — снижает нагрузку
  • /low — не мешает системе (при использовании утилиты start)

В общем я возьму на заметку текущее разобранное, но мне важно максимальное сжатие бекапируемого, а потому запускать скрипты буду в самое ночное время дабы не создавать нагрузку на сервисы систем.

Вот даже с учетом обнаруженного я подчерпнул для себя что-то новое и, следовательно, буду впредь подготовлен, а иначе как учиться если не сталкиваешься с трудностями.

На этом пока все, с уважением автор блога ekzorchik.

От ekzorchik