Переключатель 7-zip -v не сможет правильно использовать процессор?

541
user102648

Я использовал этот сценарий в течение многих лет, тогда как в 7z были проблемы с двумя ядрами, и я только что предложил себе блестящий i7:

"C:\Program Files\7-Zip\7z.exe" u -m5=lzma2 -mmt=8 %1.7z %1 

Преимущество этого состоит в использовании 8 ядер, компрессии lzma2 и установке частоты процессора (как правило, в состоянии ускоренного шага) на макс + турбо. Потрясающая скорость и удобство (в Windows SendTo).

Мне недавно напомнили, что файлы размером более 4 ГБ трудно восстановить после случайного удаления (NTFS). Я только что стер резервную копию тома по ошибке ...

Извлеченный урок, я решил изменить свой сценарий, чтобы охватить архив по 2 ГБ томам

"C:\Program Files\7-Zip\7z.exe" a -m5=lzma2 -mmt=8 %1.7z %1 -v2g 

Потеря удобства обновления в процессе.

Что меня беспокоило, и это тема моего вопроса, так это то, что я не мог слышать, как вентиляторы процессора и корпуса, как они привыкли, в то время как xeon westmere становились все жарче. Я думал, что у меня проблема с оборудованием ... При проверке оказалось, что не только процессор был занят примерно на 50% (на всех ядрах), но и не вышел из сокращенного состояния, в котором он находился (12x из 22). Это усугубляет: используется только 25% доступной вычислительной мощности вместо 100% без учета объема. По моим оценкам, время архивирования было увеличено в 10 раз, а не в 4 раза.

Баг или фича? Я что-то пропустил? Это Windows 8.1 / 64, 4-ядерный Westmere Xeon с 24 ГБ оперативной памяти. 7Z 9,20 / 64.

Я использую этот скрипт довольно часто, иногда для нескольких папок архивов:

for %%i in (%*) do call "....\archive.cmd" %%i 

Довольно удобно в Windows, без нее жизнь будет сложнее :)

У кого-нибудь есть идея это исправить? Я немного погуглил без удачи ...

Спасибо за любой вклад. Хорошего дня.

0

1 ответ на вопрос

2
Doctor Bits

7-zip is probably spending more time on I/O than compressing data. My suggestion is to use -mx9 (Ultra mode) and -md30 (1 GB dictionary size).

The default dictionary size is 16MB. In ultra mode, the default dictionary size is 64MB. Z-zip uses 10.5 time the size of the dictionary for memory buffers (-md30 raises the total memory use to around 11GB). Of course, large dictionary size means that the computer extracting the archive has to allocate that large dictionary also. You could also try -d28.


Increasing the number of threads or using the -v switch reduces compression (according to the command line documentation). Setting -v4095m should still allow recovery of lost files?

The -slp (Set Large Page mode) option might speed compression. Review the description and cautions at http://sevenzip.sourceforge.jp/chm/cmdline/switches/large_pages.htm


In general, with that much memory you do not need a paging file (except for saving crash dumps). If you have a large paging file, Windows will try to move most of the program's memory to the paging file and page in parts of the program's memory as needed. That will also slow the program considerably.