Скорость и использование памяти yum и ZYpp
Вот на носу выход openSUSE 11.0. В этой версии был сильно оптимизирован zypper – средство управления пакетами openSUSE. Эта программа всегда вызивала нарекания пользователей и, даже я, который уже наверно года 4-5 с openSUSE, не пользуюсь им почти никогда. Основная проблема – скорость. Когда начинаешь что-то им делать – это ужас. То он кеш грузит, то он решил от фонаря обновить репозитории, когда ставишь пакет с необновляемой репы. Очень сложно с ним мирится и боротся.
Но когда я попробывал 11, то сразу бросилась в глаза скорость работы. Теперь всё происходило мгновенно! Вот и видео подтверждение:
И это чистейшая правда. Вот и тест провели, а я попробую перевести.
Michael Zucchi жалуется на использование памяти yum и винит в этом python.
Yum таки не вкусняшка. Включивши питон, я так и не сумел запустить yum. Ух ты 120 MB на виртуальной машине, чтобы установить несколько пакетов. Неплохо, учитывая 128 MB на основной машине. Гавняно.
Хм, я должен попробовать xubuntu – или это будет таким же дрянным и вздутым и загубленым питоном poo?
Поскольку все наши усилия были направлены на то, чтобы сделать ZYpp быстрее, путём обьединения и интеграции Michael Schroeder’s вместе Michael Matz, который смног сделал в solv файлах и для хранения данных,то мне никогда не хотелось сделать “быстрое сравнение” о использовании памяти или скорости. Так давайте уже взглянем.
Вот мои репозитарии:
Software configuration management (openSUSE_10.3)
10.3 - Main Repository (NON-OSS)
10.3 - Packman
openSUSE-10.3-Updates
Virtualization:VirtualBox
home:dgollub
KDE:KDE3
Mozilla based projects (openSUSE_10.3)
ZYPP SVN Builds (openSUSE_10.3)
ZYPP SVN Builds (openSUSE_10.3)
home:prusnak
10.3 - VideoLan
openSUSE.org tools (openSUSE_10.3)
SUSE Feature Tracking Tool (openSUSE_10.3)
psmt's Home Project (openSUSE_10.3)
openSUSE:10.3
Duncan Mac-Vicar SUSE rpms (openSUSE_10.3)
Latest YaST svn snapshots (openSUSE_10.3)
building/openSUSE_10.3
Во всех этих репозитариях приблизительно 41 тис. пакетов.
Что я сделал, так это создал символическую ссылку для каталопа пакетов yum, чтобы они использовали одни репозитарии.
# rm -rf /etc/yum.repos.d/
# ln -s /etc/zypp/repos.d /etc/yum.repos.d
*NOTE:* I tested with yum 3.2.4. I know 3.2.14 is available, but that is what I had installed when doing the test. After doing this tests I upgraded to 3.2.14 but it did not accept my .repo file because the character “:” in repo names. However the changelog of yum since 3.2.4 shows: If using latest yum would invalidate this numbers (not as in 1 second, but as in an order of magnitude), let me know and I will repeat them when I make them work with my repo files. (не переводил, зачеркнули же. Говорится о версиях, и чего не на новых… )
Update 14.05.2008 : Я добавил yum 3.2.14. Тем не менее его производительность даже хуже, но не использование памяти.
Update 15.05.2008 : добавлены цифры дял smart 0.52
libzypp – тот который лежит в factory уже несколько дней: 4.21.1.
yum и ZYpp ведут себя по-разному, yum скачивает и парсит файлы filelists.xml и other.xml, а мы их игнорируем. Так что, я пропустил часть загрузки мета данных и засёк время построения кэша.
# yum clean dbcache
...
19 sqlite files removed
# time yum makecache
...
Metadata Cache Created
real 9m41.036s
user 2m34.766s
sys 0m11.545s
Почти 10 минут. В это время включен разбор двух больших файлов, которые мы прогнорировали. Я запустил его ещё раз, нажавши Ctrl+C, когда yum закончил обрабатывать первичные данные, как это делает zypp.
# time yum makecache ... Exiting on user cancel real 4m6.730s user 0m34.058s sys 0m3.080s
И очередь ZYpp:
# time zypper ref -B ... All repositories have been refreshed. real 0m18.472s user 0m16.029s sys 0m2.024s
Таким образом Yum требует технически в 13 раз больше времени чем ZYpp (если рассматривать одинакувую работу), но пользователь ждёт в 30 раз больше.
Теперь установка пакетов. Это означает время от вопроса “Продолжить (да/нет)” до приглашения оболочки.
# time yum install fate ... Is this ok [y/N]: n Exiting on user Command Complete! real 0m19.143s user 0m14.057s sys 0m1.920s
А ZYpp
# time zypper in fate ... Continue? [YES/no]: n real 0m9.796s user 0m8.509s sys 0m0.624s
На этом этапе ZYpp всего в два раза быстрее Yum. Всего
Что же нас ждёть, когда захочется обновить пакеты?
# time yum upgrade ... real 0m45.152s user 0m36.894s sys 0m7.476s
(Замечание: yum даже не нашёл ничего для обновления).
# time zypper update ... Continue? [YES/no]: n real 0m8.988s user 0m7.820s sys 0m0.596s
yum нужно в 4 раза больше времени чем ZYpp, чтобы определить работу для обновления.
Update 14.05.2008 : сравнивал update с upgrade, я исправил это в диаграме. Тем не менее, у меня небыло данных для update в старом yum.
Теперь, сколько памяти каждому с них требуется? Для этого я просто проверил установку одного пакета используя valgrind massif, профайлера кучи (heap profiler).
- Использование памяти Yum
- Использование памяти ZYpp
- Update 14.05.2008 : диаграмма использования памяти yum 3.2.14
- Update 15.05.2008 : диаграмма использования памяти smart 0.52
Ви можете сделать вывод, что ZYpp потребляет чуть больше 20M, в то время как yum использует больше 180M памяти, тоесть в 9 раз больше. Обновлено 14.05.2008 : yum 3.2.14 использует приблизительно 160 в худший момент времени.
Мне было бы интерестно поссмотреть и на использование процессора, но это уже позже. Что вы думаете об этом?
Я думаю об этом, что правильно пишется “позже”
Igron спасибо, ошибки я люблю делать )