Тестирование Linux’ов. Осень 2003. Тур 1. Gentoo против Red Hat

Автор: Алексей Федорчук
2003 г

Учера, у США… нет, не бойтесь, не увбили там Мартына ЛУтера КингА. И даже товарища Кирова там не увбили. И вообще, убивали там не кого, а только чего — конкретно, собственное время. И убивали его в целях сугубо благородных — то есть, можно сказать, приносили в жертву, — в жертву ответу на извечный вопрос: кто на свете всех быстрее, всех стабильней и милее.

То есть: глобальное супермегатестирование дистрибутивов Linux (а в дальнейшем и прочих Open-*nix’ов), о необходимости которого так долго говорили большевики и меньшевики, анархисты и анархо-синдикалисты, государственники и почвенники, славянофилы и нигилисты, — короче говоря, линуксоиды всех стран, национальностей и концессий, — наконец-то, свершилось. Вернее, не столько свершилось, сколько — нАчалось. В любом случае, можно констатировать: процесс пошёл… Будем надеяться, что дальше можно ожидать ситуации, когда «процесс сам по себе идёт». Но об этом — под занавес нашего репортажа.

Генеральной идеей первого тура было: сравнить «умолчальное» быстродействие коренных представителей двух струй современного майнстрейма в Линукс-дистрибутивостроении: Red Hat как представителя пакетной линии, и Gentoo — от сборной Source Based. В дальнейшем предполагалось привлечь к ответу ещё одну пару — Mandrake от монстроизируемых максималистов и CRUX (или его клон Archlinux) — от течения здоровых минималистов.

Решено было нАчать с Gentoo — поскольку процесс его установки обещал быть более длительным. Здесь уместно сказать, на чем тестирование осуществлялось. По это дело была выделена такая машина:

  • материнская плата MSI 6561 на чипсете SiS 745 под сокет A;
  • в сокете находился Athlon XP 1800+ (этот индекс в пересчёте на простые мегагерцы примерно соответствует 1500 Mhz);
  • 768 Мбайт памяти — два модуля в 512 и 256 Мбайт, соответственно (вытаскивать оные, для уточнения родословной, по правде говоря, было лень);
  • видеокарта на GeForce2 MX о 32 Мбайт памяти, генетика её точно установлена не была;
  • винчестер IBM/Hitachi на 80 Мбайт, 7200 обормотов в минуту в виде мастера на первом IDE-канале;
  • сетевая карта от Intel (точное название не записал — да и вряд ли это принципиально);
  • прочие компоненты (типа CD — слейва на втором канале, мыши, клавы, встроенного звука, к теме нынешнего занятия прямого отношения не имеющие.

Диск был разбит в соответствие с рекомендациями разработчиков — эмулируя процесс установки малоопытным юзером, держащимся документации, яко воинского устава (хотя, положа руку на сердце, кто рискнёт сказать, будто-бы, будучи малоопытным юзером, в документацию вообще заглядывал?). Так что на винте были учреждены: корневой раздел (//dev/hda3) на 80 Гбайт, загрузочный (/boot/dev/hda1) — на 84 Мбайт, и раздел подкачки (swap/dev/hda2). Файловые системы — ext3fs как для /, так и для /boot (не говорите мне, что в последнем случае это бессмысленно — так уж исторически склалось).

Уже на первой стадии тестирования подстерегали тяготы и лишения. Так. упорно не желала настраиваться сеть. Были шероховатости и при настройке Иксов — впрочем, в конце концов, преодолённые. Однако времени на это ушло больше, чем планировалось в соответствие с генеральной линией партии…

Тем не менее, и из этих непредвиденных осложнений можно было сделать первый вывод о тестировании. А именно — из пакетов нужно ставить пакетные же дистрибутивы, тогда как Source Based самим Господом заповедовано собирать из исходников…

В программу тестирования вошли:

  • традиционный тест линуксоидов сборка ядра (конкретно — канонической vanilla с kernel.org, версии 2.4.21, штатно входящей как в Gentoo, так и в Red Hat (тогдашних версий — напомню, дело происходило в октябре 2003 г.); конфигурация ядра — по умолчанию, после ответа на несколько вопросов, оказавшихся обязательными;
  • архивирование и компрессия содержимого первого официального инсталляционного диска Gentoo 1.4, предварительно, разумеется, скопированного на винчестер;
  • создание iso-образа из того же материалу, то есть из каталога с файлами первого установочного Gentoo-диска.

Дабы не полагаться на секундомер и прочую органолептику, время начала и конца операции во всех случаях фиксировалось командами date. То есть тест на сборку ядра проводился следующим образом:

$ date > kernel# ; 
make dep && 
make clean bzImage modules modules_install && 
date >> kernel#

Архивирование и компрессия:

$ date > tar# ; 
tar cjpvf cd1.tar.bz2 cd && 
date >> tar#

Создание образа:

date > iso# ; 
mkisofs -R -J -o cd#.iso cd && 
date >> iso#

Пущей уверенности ради каждый тест повторялся по три раза — понятно, что для полноценного определения воспроизводимости этого маловато, но на большее не оставалось времени.

Далее (на те же самые разделы, с пересозданием тех же файловых систем) был установлен Red Hat 9 (с 3-дискового set’а, по возможности в минимальной комплектации), после чего отданы те же команды, что и ранее для Gentoo. А вот результаты — результаты оказались столь неожиданными, что я не буду о них распространяться, а просто приведу таблицу и график.

Gentoo

Red Hat

Тест, час:мuн:cek Дубль 1 Дyбль 2 Дyбль 3 Среднее Дубль 1 Дyбль 2 Дyбль 3 Среднее
Ядро 00:07:30 00:07:29 00:07:32 00:07:30 00:06:25 00:06:20 00:06:27 00:06:24
Tar.bz2 00:12:41 00:12:18 00:12:18 00:12:26 00:11:16 00:11:18 00:11:16 00:11:17
Mkiso 00:03:00 00:02:59 00:03:00 00:03:00 00:00:18 00:00:18 00:00:18 00:00:18

Пара слов о методике. Таблица была составлена в OpenOffice.org 1.1.0. Значения в ней получены как разность вывода команды date после и до исполнения соответствующей команды, среднее также подсчитано автоматически (при формате ячеек, заданных как time). Так что наблюдаемые эффекты нельзя списать на мои ошибки в арифметике. График также построен в OpenOffice и экспортирован в GIF.

В принципе, цифры и диаграмма говорят сам за себя. Для тех же, кто не верит своим глазам, дам краткий комментарий. Red Hat, не смотря на свое пакетное происхождение и отсутствие какой-либо оптимизации под наличный процессор (напомню — Athlon XP) демонстрирует небольшое, но уверенное преимущество перед пакетным же Gentoo в тестах на сборку ядра и архивирование/компрессию. Которое становится просто подавляющим в тесте на создание iso-образа…

Объяснений этому факту у меня нет. Единственное, что приходит в голову — кривизна конкретной версии (или конкретной сборки) mkisofs в Gentoo.