LINUX.ORG.RU

Прошу помощи в решении проблемы с распаковкой RAR5 архивов для Linux

 , ,


0

2

Пожалуйста, сообщения, что rar не нужен, оставьте при себе. Этот форум называется Development.

Описание проблемы.

Как известно, сейчас все новые процессоры поддерживают динамическое изменение частоты в зависимости от нагрузки.

Архиватор rar5/unrar5 во время распаковки использует пул из 32 pthread потоков, но, как оказалось, существует проблема с их синхронизацией, и из-за этого распаковка архивов rar5 работает, например, на моём компьютере в шесть раз медленней, чем в Windows.

Во время распаковки в памяти висят 33 потока, которые создают нагрузку не выше 25%, поэтому cpugovernor даже не пытается повысить частоту ядер процессора, т.е. в случае turbo boost под Windows распаковка идёт на частоте ~3.9GHz, под Linux 1.6GHz.

Если вручную выставить cpugovernor в performance, то распаковка ускоряется, но это делает её всё равно медленней в 2,5 раза - т.е. проблема с синхронизацией не уходит, но становится менее выраженной.

Конечно, разбираться в чужом коде - неблагодарное занятие, но если вы хорошо разбираетесь в pthread и C++, то пользователи rar будут вам благодарны.

Для отладки архив rar5 можно создать следующим образом:

rar a -md256m -ma5 -htb -r arc_name.rar files directories

Работу unrar и саму проблему можно отследить командой:

time ./unrar t arc_name.rar

Исходники unrar можно скачать здесь.

Ответ на: комментарий от nerdogeek

Выше 4 работает как 32, т.е. жутко медленно.

Соберите сами - сборка 3 секунды занимает. Как архив подготовить - я уже написал.

Количество потоков задаётся в unrar/threadpool.hpp

const uint MaxPoolThreads=32;

anonymous
()
Ответ на: комментарий от nerdogeek

А попробовать 6, 8, 12, 16... потоков? Просто интересно когда он упрется в Амдала.

сам попробуй. У тебя же есть xz? Вот и запусти СРАЗУ два. Этого будет достаточно, если конечно у тебя не двухПРОЦЕССОРНАЯ мать (на которой по памяти на процессор приляпано. НЕ многоядерная!)

emulek
()
Ответ на: комментарий от emulek

Я даже не знаю с чего начать...) Ну, вы подумайте еще раз над комментируемым, а потом посмотрите на ваш ответ.

nerdogeek
()
Ответ на: комментарий от nerdogeek

Я даже не знаю с чего начать...) Ну, вы подумайте еще раз над комментируемым, а потом посмотрите на ваш ответ.

ну. Посмотрел на тот пост, на который вы отвечаете, подумал... Не очень понятно, что вы хотели сказать своим ответом. Вот этим: Прошу помощи в решении проблемы с распаковкой RAR5 архивов для Linux (комментарий)

emulek
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.