Home > openSuse, Sneak Peeks, перевод > Скорость и использование памяти yum и ZYpp

Скорость и использование памяти 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 в худший момент времени.

Мне было бы интерестно поссмотреть и на использование процессора, но это уже позже. Что вы думаете об этом?

  1. Igron
    June 14th, 2008 at 20:57 | #1

    Я думаю об этом, что правильно пишется “позже” :)

  2. June 15th, 2008 at 01:11 | #2

    Igron спасибо, ошибки я люблю делать )

  1. No trackbacks yet.