Обзор Gentoo Linux

Gentoo-Logo
Я долго не писал, потому-что тема, о которой пойдет речь в этой статье требует много времени. Gentoo довольно известный дистрибутив среди красноглазых пользователей. Почему? Пользуясь Gentoo, вы становитесь повелителем системы, которая как влажная глина готова принять любую форму, которую вы хотите, с любым функционалом, который вам нужен. Нужно только разбираться в ней. Вы собираете из исходников нужный вам софт включая или отключая зависимости от других пакетов с помощью USE флагов и тратите много времени на компиляцию программ. Поэтому gentoo-шники знают, что такое время. Во время обзора мы пропустим описание процедуры установки. Во-первых она много раз описана, а обзор такие системы получают не очень часто, во вторых — это тянет на текст размером на эту статью, в третьих ввиду отсутствия установщика, опыт и порядок установки у каждого может быть свой.

Portage

В первую очередь Gentoo известен тем, что это дистрибутив из исходников. Это даёт некоторые преимущества: вы можете изменять функционал пакета, избегать лишних зависимостей, оптимизировать компилируемый код, при этом жертвуете временем на установку ПО. Работает это так: читаются файлы из директории /etc/portagemake.conf и package.(use/license/accept_keyword), затем portage обращается в директорию /usr/portage, где присутствуют инструкции установки ПО.

/usr/portage — это дерево портежей, там находятся ebuild файлы, где находятся описание пакета и инструкции его сборки.
make.conf содержит настройки для сборки пакетов, например:
CFLAGS — флаги компилятора C
MAKEOPTS — флаги утилиты make
CXXFLAGS — флаги компилятора C++
USE — флаги, изменяющие параметры сборки и зависимости пакетов. В моём случае эта переменная выглядит так:
USE="bindist mmx sse sse2 qt4 qt3support opengl kde dbus policykit networkmanager"
PORTDIR — путь к дереву портажей.
DISTDIR — путь к папке, куда скачиваются исходники.
PKGDIR — путь к папке, куда скачиваются бинарные файлы.
LINGUAS — флаги, указывающие, какие языки должны поддерживаться скомпилированным ПО.
GENTOO_MIRRORS — зеркала.
SYNC — зеркала для синхронизации.

В make.conf могут быть флаги, предназначенные для конкретных пакетов, например:
INPUT_DEVICES — для указания устанавливаемых драйверов устройств ввода.
VIDEO_CARDS — для указания устанавливаемых драйверов видеокарт.

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

А что делать, если нужно поменять USE флаги у конкретного пакета? Для этого есть файл package.use, в котором, в каждой строчке указывается, как должны изменяться USE флаги у конкретного пакета. Выглядит строка так:
app-foo/bar flag1 flag2 -flag3
На этом примере мы у пакета app-foo/bar включили флаги flag1, flag2 и отключили flag3.
Аналогично устроены файлы package.license и package.accept_keyword.

Сколько времени займет установка Gentoo?

Вы потратите на это около суток. Если у вас компьютер гораздо мощнее моего, то полсуток. Опустим то время, которое вы потратите на то, чтобы разобраться с системой и настроить все подряд. В случае с Gentoo тут уместна шутка: «В linux вы можете настроить абсолютно все, и вы будете настраивать абсолютно все». В качестве приблизительного времени затраченного на установку системы можно взять время на пересборку мира и по оптимистическим прикидкам добавить два часа. А сколько времени займёт пересборка мира? На моей машине с Intel Celeron T3000 с двумя ядрами на частоте 1.8 GHz я с помощью утилиты time измерил время двух пересборок времени. Во время пересборки я не пользовался компьютером и завершил работу X-сервера и дисплейного менеджера, чтобы на время сборки не влияли процессы из окружающей среды. Пересборка мира происходила в чистой консоли.
Система пересобиралась с миром в таком составе(без зависимостей):
app-admin/sudo
app-benchmarks/sysbench
kde-base/kde-l10n
kde-base/kdebase-meta
kde-base/kdegraphics-meta
kde-base/kdemultimedia-meta
kde-misc/plasma-nm
net-misc/dhcpcd
net-misc/networkmanager
sys-boot/grub
sys-fs/ntfs3g
sys-kernel/genkernel
sys-kernel/gentoo-sources
www-client/firefox
www-plugins/adobe-flash
x11-base/xorg-drivers
x11-base/xorg-server

Время пересборки мира с флагом -O2: 16 часов 54 минуты 30 секунд.
Время пересборки мира с флагом -O2: 17 часов 36 минут 47.7 секунд.
Итого, по самым оптимистическим прогнозам на моей машине у вас на это уйдет около 19 часов.

Сравнительные тесты производительности

Возможно, вы хотите поставить Gentoo ради увеличения производительности. В этом случае не стоит ждать чуда, Gentoo следует ставить для того, чтобы в нем поиграться, а не ради объективного прироста скорости. Для того, чтобы оценить производительность Gentoo, я воспользовался синтетическим тестом sysbench, доступным, как в Gentoo, так и в Archlinux. В тестировании участвуют Archlinux и Gentoo в двух эпостасиях, один собран с флагом -O2, другой с флагом -O3. Оба собраны под мою архитектуру процессора. В Archlinux, по умолчанию, пакеты собраны с флагом оптимизации -O2. Надо сказать, что -O3 нигде не используют, потому что это дает нестабильный код и в системе могут возникать из-за этого косяки.
Обе системы тестировались по одинаковому сценарию:
sysbench --num-threads=3 --test=cpu --max-requests=100000 run
sysbench --num-threads=3 --test=memory run
sysbench --num-threads=3 --test=threads --max-requests=1000000 run
sysbench --num-threads=3 --test=mutex run

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

Archlinux
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000

Test execution summary:
total time: 70.6054s
total number of events: 100000
total time taken by event execution: 211.6264
per-request statistics:
min: 1.40ms
avg: 2.12ms
max: 18.09ms
approx. 95 percentile: 8.08ms

Threads fairness:
events (avg/stddev): 33333.3333/199.64
execution time (avg/stddev): 70.5421/0.01

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing memory operations speed test
Memory block size: 1K

Memory transfer size: 102400M

Memory operations type: write
Memory scope type: global
Threads started!
Done.

Operations performed: 104857600 (320179.60 ops/sec)

102400.00 MB transferred (312.68 MB/sec)

Test execution summary:
total time: 327.4962s
total number of events: 104857600
total time taken by event execution: 736.6757
per-request statistics:
min: 0.00ms
avg: 0.01ms
max: 20.04ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 34952533.3333/392593.85
execution time (avg/stddev): 245.5586/0.10

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing thread subsystem performance test
Thread yields per test: 1000 Locks used: 8
Threads started!
Done.

Test execution summary:
total time: 309.9045s
total number of events: 1000000
total time taken by event execution: 928.5172
per-request statistics:
min: 0.49ms
avg: 0.93ms
max: 7.81ms
approx. 95 percentile: 1.62ms

Threads fairness:
events (avg/stddev): 333333.3333/8782.25
execution time (avg/stddev): 309.5057/0.01

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing mutex performance test
Threads started!
Done.

Test execution summary:
total time: 0.0328s
total number of events: 3
total time taken by event execution: 0.0843
per-request statistics:
min: 25.38ms
avg: 28.11ms
max: 30.21ms
approx. 95 percentile: 10000000.00ms

Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.0281/0.00

Gentoo -O2
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000

Test execution summary:
total time: 71.6212s
total number of events: 100000
total time taken by event execution: 214.7179
per-request statistics:
min: 1.43ms
avg: 2.15ms
max: 31.44ms
approx. 95 percentile: 11.43ms

Threads fairness:
events (avg/stddev): 33333.3333/305.08
execution time (avg/stddev): 71.5726/0.01

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing memory operations speed test
Memory block size: 1K

Memory transfer size: 102400M

Memory operations type: write
Memory scope type: global
Threads started!
Done.

Operations performed: 104857600 (319716.03 ops/sec)

102400.00 MB transferred (312.22 MB/sec)

Test execution summary:
total time: 327.9710s
total number of events: 104857600
total time taken by event execution: 738.3507
per-request statistics:
min: 0.00ms
avg: 0.01ms
max: 30.02ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 34952533.3333/51842.16
execution time (avg/stddev): 246.1169/0.26

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing thread subsystem performance test
Thread yields per test: 1000 Locks used: 8
Threads started!
Done.

Test execution summary:
total time: 245.3740s
total number of events: 1000000
total time taken by event execution: 734.9378
per-request statistics:
min: 0.41ms
avg: 0.73ms
max: 20.89ms
approx. 95 percentile: 1.20ms

Threads fairness:
events (avg/stddev): 333333.3333/3919.56
execution time (avg/stddev): 244.9793/0.00

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing mutex performance test
Threads started!
Done.

Test execution summary:
total time: 0.0349s
total number of events: 3
total time taken by event execution: 0.0931
per-request statistics:
min: 27.87ms
avg: 31.05ms
max: 34.65ms
approx. 95 percentile: 10000000.00ms

Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.0310/0.00

Gentoo -O3
sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing CPU performance benchmark

Threads started!
Done.

Maximum prime number checked in CPU test: 10000

Test execution summary:
total time: 70.9476s
total number of events: 100000
total time taken by event execution: 212.6414
per-request statistics:
min: 1.42ms
avg: 2.13ms
max: 31.43ms
approx. 95 percentile: 11.42ms

Threads fairness:
events (avg/stddev): 33333.3333/357.73
execution time (avg/stddev): 70.8805/0.01

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing memory operations speed test
Memory block size: 1K

Memory transfer size: 102400M

Memory operations type: write
Memory scope type: global
Threads started!
Done.

Operations performed: 104857600 (320861.15 ops/sec)

102400.00 MB transferred (313.34 MB/sec)

Test execution summary:
total time: 326.8005s
total number of events: 104857600
total time taken by event execution: 733.6188
per-request statistics:
min: 0.00ms
avg: 0.01ms
max: 30.02ms
approx. 95 percentile: 0.00ms

Threads fairness:
events (avg/stddev): 34952533.3333/159953.84
execution time (avg/stddev): 244.5396/0.32

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing thread subsystem performance test
Thread yields per test: 1000 Locks used: 8
Threads started!
Done.

Test execution summary:
total time: 248.2071s
total number of events: 1000000
total time taken by event execution: 743.4171
per-request statistics:
min: 0.41ms
avg: 0.74ms
max: 18.89ms
approx. 95 percentile: 1.24ms

Threads fairness:
events (avg/stddev): 333333.3333/31662.96
execution time (avg/stddev): 247.8057/0.03

sysbench 0.4.12: multi-threaded system evaluation benchmark

Running the test with following options:
Number of threads: 3

Doing mutex performance test
Threads started!
Done.

Test execution summary:
total time: 0.0295s
total number of events: 3
total time taken by event execution: 0.0690
per-request statistics:
min: 21.19ms
avg: 23.01ms
max: 25.39ms
approx. 95 percentile: 10000000.00ms

Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.0230/0.00

Для репрезентативности приведём сравнительные тесты в таблице:

Системы Archlinux Gentoo -O2 Gentoo -O3
Время на CPU тесте 70.6054s 71.6212s 70.9476s
Время на тесте памяти 327.4962s 327.9710s 326.8005s
Время на тесте многопоточности 309.9045s 245.3740s 248.2071s
Среднее время запроса на mutex тесте 28.11ms 31.05ms 23.01ms
Время, затраченное на пересборку мира _ 1014m30.079s 1056m47.770s

Во первых, обратим внимание, что на тестах процессора и памяти, код, оптимизированный для этого процессора не дал значительных успехов. Во вторых, очень заметно преимущество Gentoo перед Arch в тесте многопоточности. Этот синтетический тест показывает прирост производительности в 26%, это означает, что в реальных многопоточных приложениях вы можете получить не более четверти производительности. В четвертых, вам нужно потратить всего 17 часов, на то чтобы скомпилировать систему с такой производительностью. Что больше вы потратите своего и машинного времени на пересборки мира, или сэкономите машинное время на решение задачи после сборки системы — решайте сами.

Особенности Gentoo

Если вы решили поставить эту систему на свой компьютер, привыкайте к некоторым особенностям системы. Вам следует ждать, что:

  • GRUB2 по умолчанию не умеет грузиться откуда-либо, кроме ext2 разделов и не поддерживает графический режим в меню.
  • Собранное по умолчанию ядро имеет очень урезанную конфигурацию и может кое-что не иметь, но достаточно, чтобы загрузиться на большинстве компьютеров, поэтому вам придется баловаться с перекомпиляцией ядра. В моем случае, из коробки не работают два сетевых адаптера и framebuffer.
  • genkernel сам не перенесет конфигурацию, при переходе на более новую версию ядра.
  • Собранный по умолчанию RAM диск загрузит все подряд драйвера жестких дисков, что увеличит время загрузки, размер потребляемой ОЗУ и размер самого RAM диска.
  • Стабильная версия Firefox по умолчанию имеет логотип Aurora, в связи с тем, что логотип Firefox имеет правообладателей.
  • Установите USE флаг natspec для пакета unzip, если не хотите проблем с кодировками в zip архивах.
  • Вам придется потратить много времени на установку и обновление пакетов и системы.
  • Широкие возможности настройки USE флагов и accept_keywords дают широкие возможности, для того, чтобы устраивать коллизии зависимостей. Помимо этого вам нужно подтверждать лицензии, отличные от свободных. Ввиду этого будьте готовы доказывать portage, что вам нужно установить пакет. Обычно это можно решить командами "emerge --autounmask-write foo;etc-update". А лучше, вам следует самим залезть в конфиги portage.
  • Система очень не автоматизированна. Если вам нужно что-то автоматизировать, сделайте это сами.

Не то, чтобы я сильно придирался, просто я хотел бы предупредить, что если вам компьютер нужен не для того, чтобы играться с ОС, а для того, чтобы работать, Gentoo, скорее всего, — это не ваш выбор. Если вы вдохновившись этой статьей поставите Gentoo и будите плеваться, я вас предупредил. Но взамен этих неудобств он дает некоторые плюшки:

  • Из коробки настроена цветная консоль.
  • Есть официальная утилита, для того, чтобы играться с перекомпиляцией ведра.
  • Техническая минималистичность и настраиваемость системы.
  • Возможность оптимизировать машинный код для программ с открытым исходным кодом.
  • Официально доступны два демона инициализации: OpenRC и systemd. Из коробки стоит OpenRC.
  • Выбор профилей позволяет выбрать примерную конфигурацию системы, коих может быть много, избавляя от необходимости самому выставлять кучу USE флагов.
  • В системе присутствует только то, что нужно вам.

Итоги

Итак. Поставив Gentoo вы получаете систему, которая несоизмеримо долго компилируется, её сложно поддерживать и легко случайно сломать, систему, благодаря которой вы узнаете что такое время и набьете себе шишек на лбу об подводные грабли. В замен вы получаете возможность отключать не нужные зависимости и небольшой прирост в скорости. Вопрос: нужна вам такая система? Да, нужна. Это замечательный полигон, для тренировки ваших способностей работы с linux системой. Это хороший опыт поломок и ремонтов ОС и незаменимый инструмент для выпрямления рук. Но и наконец, потому что Gentoo — это круто.

158 комментариев к “Обзор Gentoo Linux

  1. Hello! I could have sworn I’ve visited this site before but after looking at some of the posts I realized it’s new to me. Anyways, I’m definitely pleased I stumbled upon it and I’ll be bookmarking it and checking back frequently!

  2. Hello there, I do think your web site might be having browser compatibility issues. Whenever I take a look at your web site in Safari, it looks fine however, when opening in IE, it’s got some overlapping issues. I simply wanted to give you a quick heads up! Apart from that, wonderful website.

  3. Greetings, I do believe your site could possibly be having internet browser compatibility issues. Whenever I look at your site in Safari, it looks fine however, when opening in I.E., it’s got some overlapping issues. I merely wanted to give you a quick heads up! Apart from that, wonderful website!

  4. Good post. I learn something totally new and challenging on blogs I stumbleupon everyday. It will always be interesting to read through content from other authors and practice a little something from other sites.

  5. Good day! I could have sworn I’ve visited this site before but after looking at some of the articles I realized it’s new to me. Anyways, I’m definitely delighted I discovered it and I’ll be book-marking it and checking back often!

  6. I’m impressed, I must say. Rarely do I encounter a blog that’s both equally educative and engaging, and let me tell you, you’ve hit the nail on the head. The issue is something that too few people are speaking intelligently about. I’m very happy that I stumbled across this in my search for something regarding this.

  7. An outstanding share! I’ve just forwarded this onto a coworker who had been doing a little research on this. And he in fact ordered me dinner because I stumbled upon it for him… lol. So allow me to reword this…. Thanks for the meal!! But yeah, thanx for spending time to discuss this issue here on your web site.

  8. Hi, I do believe this is an excellent site. I stumbledupon it 😉 I will come back once again since i have saved as a favorite it. Money and freedom is the best way to change, may you be rich and continue to help others.

  9. Hi! Do you know if they make any plugins to assist with Search Engine Optimization? I’m trying to get my site to rank for some targeted keywords but
    I’m not seeing very good gains. If you know of any
    please share. Many thanks! You can read similar
    blog here: Eco product

  10. Sugar Defender reviews
    For several years, I’ve battled uncertain blood sugar swings that left me feeling drained pipes and sluggish.

    But considering that integrating Sugar my energy
    levels are now steady and constant, and I no more hit a wall in the mid-days.
    I appreciate that it’s a gentle, natural method that doesn’t featured any unpleasant negative effects.
    It’s genuinely transformed my day-to-day live. sugar defender

  11. sugar defender reviews
    Sugarcoating Protector to my day-to-day routine was
    just one of the best decisions I’ve produced my health. I take care regarding what I eat, yet this supplement includes an extra layer of assistance.
    I feel much more steady throughout the day, and my food
    cravings have lowered substantially. It behaves to have something so easy that makes
    such a big distinction!

  12. I blog frequently and I really appreciate your content. The article has truly peaked my interest. I will book mark your website and keep checking for new details about once per week. I opted in for your RSS feed as well.

  13. sugar defender
    Integrating Sugar Defender into my everyday program has actually been a game-changer for my total wellness.
    As someone that currently focuses on healthy eating, this supplement has actually
    offered an included increase of defense.
    in my power levels, and my wish for undesirable treats so uncomplicated can have
    such a profound impact on my daily life.

    sugar defender reviews

  14. sugar defender I’ve battled with blood sugar fluctuations for several years, and it really affected my power levels throughout the day.
    Since beginning Sugar Protector, I really feel more well balanced and alert,
    and I don’t experience those afternoon plunges anymore!
    I like that it’s an all-natural option that functions with no
    extreme adverse effects. It’s genuinely been a
    game-changer for me sugar defender

  15. This is the perfect web site for anyone who would like to understand this topic. You understand so much its almost tough to argue with you (not that I personally would want to…HaHa). You definitely put a brand new spin on a topic that has been written about for many years. Wonderful stuff, just wonderful.

  16. I’m more than happy to find this site. I wanted to thank you for your time just for this fantastic read!! I definitely savored every part of it and i also have you saved to fav to check out new information on your blog.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*