LINUX.ORG.RU
ФорумTalks

Популярно про systemd и Леннарта Поттеринга


4

3

После нескольких обсуждений и многочисленных критических высказываний в адрес systemd, у меня сложилось впечатления, что не все понимают в вопросе, о котором спорят. Как правило, против Поттеринга приводятся несущественные аргументы или эмоции, тогда как все аргументы уже давно им были высказаны безаппеляционно и по-существу (http://0pointer.de/blog/projects/why.html). Остановимся вкратце на killer-фиче «Socket-based Activation».

Традиционно в sysvinit извещение init о готовности сервиса был организован с помощью fork. Возьмем для примера rsyslogd и посмотрим, что происходит при его загрузке.

1)Init запускает bash, bash интерпретирует файл /etc/init.d/rsyslogd

2)Запускается бинарный файл /usr/sbin/rsyslogd

3)rsyslogd инициализирует себя, и в момент готовности к работе он делает fork. С этого момента вся деятельность происходит в дочернем процессе, а родительский немедленно умирает. Это делается для оповещения процесса bash, ожидающего возврата управления.

Если не обращать внимание на чудовищный по накладным расходам пункт 1, то, как видно, остается еще один замедляющий загрузку момент.

Системный вызов fork — один из самых затратных в ядре, поскольку, не смотря на copy-on-write, для дочернего процесса копируется практически все. Использование его всего лишь для оповещения — это как стрельба из пушки по воробьям. Здесь как нельзя лучше подходит выражение «broken by design». Такой способ запуска демонов считается классическим. Unix-way никто не отменял, просто глупо холить и лелеять подобные дурацкие традиции.

В systemd пункт 1 отсутствует полностью, а вместо fork() используется простая и незатратная посылка сообщения через сокет с помощью sendmsg.

Не нужно быть семи пяди во лбу, чтобы осознать преимущества новой системы инициализации. Я думаю, демоны, которые не перейдут на systemd, довольно быстро умрут естественной в этом случае смертью.

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

что именно мы убрали?)

100500 одинаковых самописных велосипедов

Что ты этим хотел сказать?

То, что ты сам не понимаешь о чем говоришь и никого «усложнения» тут нет. Там дополнительного кода на 50 строк максимум.

И это тянут в линукс как универсальное решение.

Это и есть универсальное решение.

И ложь.

Для не умеющих читать — это страничка спонсоров. Не удивлюсь, если они есть и у шлаки.

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

ога ога, на серверах гугла и яндекса стоит, конечно же, слака.

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

она самая

ну дык давай пруфы, раз знаешь...

Ubuntu 12.04 InstallFest в Москве (19 мая, МИЭМ)

ты точно упоролся... причём тут какая-то акция бубунтоидов?

drBatty ★★
()
Ответ на: комментарий от Reset

Это называется не мониторинг, а watchdog. Мониториг, естественно, тоже нужен.

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

А это на кой? Для 99.99% use-case'ов достаточно проверить существование процесса. Сложную логику надо выносить уже в мониторинги.

см выше.

maloi ★★★★★
()
Ответ на: комментарий от Reset

Чего там перепиливать? Собственный образ с нужным набором пакетов с помощью debootstrap делается за 5 минут.

в слаке образ делается дольше? да/нет?

На кой?

очевидно, что-бы платить своим спецам, а не RH или Марку.

Чем оно лучше бунты на сервере?

тем, что Марк х положил на сервера, и там есть только минимальная инсталяция - бубунта без иксов. А для развёртывания сервера этого недостаточно. Жаль, что ты этого не знал. И да, апстарт и systemd для сервера нужен в 9000ю очередь.

С федорой всё ясно, но в чем заключается трах с убунтой, особенно в LTS редакции?

яхз если честно. Ставить на сервер бубунту мне никто не предлагал. А я такой инициативы не проявлял. И не только я, судя по тому, что на серверах, которые мне достались, бубунты не было (а вот RHEL, CentOS, Debian, один раз Gentoo таки были). Может у мну тупо мало опыта...

drBatty ★★
()
Ответ на: комментарий от Reset

100500 одинаковых самописных велосипедов

они все были у тебя в системе?

Там дополнительного кода на 50 строк максимум.

В таком случае - чего ты паришься о велосипедах если 50 строк максимум и которые попадаются редко и очень специфичные? Тебе с них чего? Как разработчику пофиг, 50 строк не стоят даже запарки. Как пользователь - пофиг, что там под капотом.

Это и есть универсальное решение.

Костыль универсальное решение разве что для инвалидов. Здоровым он не нужен. И хорошо что есть дистрибутивы которые это понимают.

Для не умеющих читать — это страничка спонсоров. Не удивлюсь, если они есть и у шлаки.

Если ты умеешь читать - то там в спонсорах написано кто использует генту и в каких целях.

chinarulezzz ★★
()
Ответ на: комментарий от maloi

watchdog без мониторинга - мертвому припарка, подходит лишь для простейших случаев

Ога, но мониторинг в отличие от watchdog'а нельзя сделать универсальным.

Reset ★★★★★
()
Ответ на: комментарий от chinarulezzz

Костыль универсальное решение разве что для инвалидов. Здоровым он не нужен.

В любом софте есть ошибки. «Здоровых» программ не бывает. И мы пошли по 100500 кругу ...

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

Почему Вася сломал? Демон сам сломался, так как в нем была ошибка, которую не нашли в процессе тестирования.

хреново тестировали.

Упавшего демона.

если демон недоделан, то три строчки на bash, для его рестарта, я сам напишу. Если он постоянно падает (раз в месяц - это тоже постоянно).

drBatty ★★
()
Ответ на: комментарий от Reset

В любом софте есть ошибки.

Не повод тащить костыль в инит.

«Здоровых» программ не бывает.

не всем требуется тот костыль о котом мы говорим.

И мы пошли по 100500 кругу ...

о да, двигай детка, двигай по кругу)

chinarulezzz ★★
()
Ответ на: комментарий от Reset

Что вижу, то пою. Если это кому-то не нравится, то я не виноват.

в таком случае, Slackware тоже НЕТ - это всего-лишь пакетная база для дистрибутива десктопа drBatty и его жены.

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

очевидно, что-бы платить своим спецам

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

а не RH или Марку.

Зачем им платить?

тем, что Марк х положил на сервера, и там есть только минимальная инсталяция - бубунта без иксов.

А что еще надо?

А для развёртывания сервера этого недостаточно.

Так чего там нет? Давай перечисляй.

яхз если честно.

Теперь всё понятно. О чем тогда спорим, если ты ничего не знаешь?

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

16:30 — 17:00. Ubuntu и другие Open Source-продукты в компании «Яндекс» (Влад Животнев, Яндекс).

за эти 30 минут пруф предоставили? Но извиняй, я его всё равно не наблюдаю. Может ты опять врёшь?

drBatty ★★
()
Ответ на: комментарий от chinarulezzz

Не повод тащить костыль в инит.

Почему костыль и почему не повод? Я от тебя уже которую страницу этого добиться не могу.

не всем требуется тот костыль о котом мы говорим.

Об этом я сказал выше. 100501 круг ...

Reset ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Точно, слона то и не увидали. Для его запуска в классическом init'е даже есть уродливый костыль :)

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

Так чего там нет? Давай перечисляй.

посмотри брошурку RHEL, и подумай. На кой хрен какие-то дебилы платят десятки и сотни килорублей за эту ерунду. Если можно просто взять БЕСПЛАТНО твою бубунту минимал.

Теперь всё понятно. О чем тогда спорим, если ты ничего не знаешь?

с твоими знаниями тоже всё ясно. Если ты голую систему считаешь идеалом - то про твой «опыт» речи нет.

drBatty ★★
()
Ответ на: комментарий от Reset

Я боюсь не все в курсе того, что такое этот sysvinit. Но то такое

vasily_pupkin ★★★★★
()
Ответ на: комментарий от drBatty

посмотри брошурку RHEL

Я не хочу читать маркетоидную ерунду, давай своми словами перечисли _конкретные_ фичи.

Если ты голую систему считаешь

А каким еще должен абстрактный сервер в вакууме? Остальное доставляется apt-get'ом в зависимости от применений сервера.

идеалом

Твои домыслы. Идеалом я ничего не считаю.

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

Вопросы к inkvizitor68sl, коль он тут засветился.

т.е. ты слил? или стрелки перевёл?

Я никогда не вру.

ты высказываешь утверждения, но не можешь доказать их истинность. Ну типа «вода сухая». Я только не пойму, зачем ты это делаешь?

drBatty ★★
()
Ответ на: комментарий от Reset

Ога, но мониторинг в отличие от watchdog'а нельзя сделать универсальным.

т.е. watchdog в ините - это универсальное ненужно?

maloi ★★★★★
()
Ответ на: комментарий от drBatty

Доказать я могу, но для этого мне придется раскрыться, я не хочу этого делать.

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

Почему костыль и почему не повод?

усложняет инит узкоспециализированной как какая-то помощь/ненужной как костыль функциональностью, которая прекрасно есть в сторонних приложениях, и не нужно преумножать сущностей.

chinarulezzz ★★
()
Ответ на: комментарий от Reset

Я не хочу читать маркетоидную ерунду, давай своми словами перечисли _конкретные_ фичи.

лень. Сам читай. Не забывай, что люди таки ПЛАТЯТ за это, и немало.

А каким еще должен абстрактный сервер в вакууме? Остальное доставляется apt-get'ом в зависимости от применений сервера.

apt-get'ом говоришь? А зависимости от alsa и ttf шрифты нужны на сервере? А на Debian'е они есть. Не сомневаюсь, что в убунте НЕ ТОЛЬКО они. А как конфиги править? Есть удобные конфигурялки как в дебе? А стабильное ядро есть? Его поддерживают?

Ну если ответы «да, всё из Deb'а», то за кой бубунта нужна?

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

лень. Сам читай. Не забывай, что люди таки ПЛАТЯТ за это, и немало.

слив засчитан

А зависимости от alsa и ttf шрифты нужны на сервере?

зависимость чего от чего? у меня на серверах этого нет

А как конфиги править?

Ъ-way — установкой пакета с конфигами

Есть удобные конфигурялки как в дебе?

понятия не имею. а на кой оно и что конфигурит?

А стабильное ядро есть? Его поддерживают?

да да

Ну если ответы «да, всё из Deb'а», то за кой бубунта нужна?

5 лет поддержки против 3х и релизы по графику, а не как бог на душу положит. Для бизнеса это важно.

Reset ★★★★★
()
Ответ на: комментарий от chinarulezzz

Вотчдог для приложений в системде тоже кстати есть. Лично я считаю это перебором, но тем не менее. То о чем тут велось обсуждение - логика перезапуска

vasily_pupkin ★★★★★
()
Ответ на: комментарий от Reset

и давно ты последний раз пользовался getty на сервере? нужен ли он кому-то кроме фриков, сидящих в голой косоли?

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

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

В sysvinit - может и не нужен (тем не менее он там есть, как и кое что другое), ведь все что может sysvinit - перезапустить сервис еще раз. В системе с зависимостями у тебя есть общий способ пользоваться фактом старта-рестарта сервиса как хуком для выполнения ряда действий. Более того, кастомная реализация сервиса мониторига кастомного сервиса может быть не более чем простой программой которая завершает свою работу, а не додумывает за сисадмина, что же нужно сделать еще при фейле.

vasily_pupkin ★★★★★
()
Ответ на: комментарий от maloi

постоянно использую, особенно на kvm виртуалках

Reset ★★★★★
()
Ответ на: комментарий от vasily_pupkin

Вотчдог для приложений в системде тоже кстати есть.

знаю. Там крон свой, qr-коды которые как сбоку прибитый бантик. Нестираемые логи, которые спасут лишь идиота, и являются опять ненужной сущностью, http-сервер... Вообще, мне кажется, идиотизм шагает по планете :)

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

Да, я тебя понимаю. Когда я читаю треды про системде, мне тоже так кажется

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

Дык разобрались. Что там, где действительно нужны зависимости между сервисами - systemd не помощник.

Просто успешный результат запуска сервиса при загрузке - не значит что он заработал. В результате мы можем иметь фейл на запуске другого сервиса, который зависит от первого, который мы ошибочно считаем запустившимся. Рестартовать его бесполезно без рестарта первого, но systemd не имеет понятия о том, что произошло. Нотифаи в общем тоже не помогяют, так как работают глючно. Соответственно, особенно если таких сервисов несколько, отлаживать встающую колом систему на загрузке - очень весело.

Можно, конечно, отказаться совсем от Requires, и перейти на Wants - но это не решение проблемы, а игнорирование ее существования, потому как это потребует создания еще более сложных костылей, чтобы systemd мог сам разруливать по зависимостям как запускать сервисы. Если он будет оставлять зафейлившиеся сервисы и продолжать загрузку, то система как не работала так и не будет работать. И проблем будет еще больше из-за попыток запуска сервисов в невалидном окружении. Поэтому все возможные конфигурации сервисов должны быть тщательно спланированы, вулючая все возможные нештатности при загрузке, дабы гарантировать всегда валидное окружение. Также, должны быть расставлены ручки для рестарта зафейлившихся сервисов в тех ситуациях, когда systemd это по какой-либо причине этого не делает. Embedded предполагает работу без вмешательства извне, поэтому требуется такой набор костылей и подпорок. На десктопе это, конечно, не требуется. Просто под sysvinit система проектировалась бы по-другому, с написанием штатных средств мониторинга, с гарантированным порядком запуска, с вотчдогом. В systemd же рассчитываешь на штатные механизмы, потом в процессе жкспулатации начинаешь понимать, что многие из них тебе никак не могут помочь. Поэтому стройная сначала архитектура начинает быстро разваливаться.

slapin ★★★★★
()

крики о проблемах GNOME 3 и systemd на лоре уже очень давно. у кого-то была даже аватарка с головой Поттеринга. и в конце концов, чёрный пеар выиграл и мне захотелось поставить себе оба эти чуда в перьях и посмотреть что же там плохого...

и что же. я поставил себе на ЭлФэЭСочку и первое и второе, не смотря на то, что на http://www.linuxfromscratch.org systemd люто бешено выпиливают.

я должен сказать (и я это говорил уже сегодня в одном треде об arch), что мне systemd представляется как революционный шаг вперёд, на ряду с Linux-PAM и такими системами как polkit, dbus, gobject-introspection.

и GNOME 3, как система, наиболее интенсивно использующая все эти технологии, является наиболее перспективной. в то время как «несчастный ребёнок» Qt мечится от одного родитетя к другому и уже исчерпал все свои инновационные ресурсы.

AGUtilities ★★★
()
Ответ на: комментарий от Reset

слив засчитан

а зачем мне повторять то, что уже расписано высокооплачиваемыми маркетолагами?

зависимость чего от чего? у меня на серверах этого нет

это зависимости от ia32-libs, которые необходимы для некоторых проприентарных приложений (широко известный пример skype, именно он критичен для хомячков, но в серверном сегменте полно такого г-на, и без скайпа)

Есть в пакетных дистрах и некоторые другие нелепые зависимости, понятные для десктопа, но нелепые на сервере.

Ъ-way — установкой пакета с конфигами

и где ты найдёшь конфиги для ТВОЕГО сервера? бубунта поставит в лучшем случае локалхостовую версию для тестов.

понятия не имею. а на кой оно и что конфигурит?

ты не поверишь - сервисы конфигурит. почтовые, СУБД, http и так далее. Например в Debian & Slackware имеется довольно длинный (в слаке 300 строк без комментариев) скрипт adduser, который помогает создавать новых пользователей. Конечно никто не против того, что-бы админ зубрил Over9000 ключей для useradd и их формат, но есть способ лучше. Тоже самое касается и ВСЕХ остальных действий, которые и должен проделывать админ. Не, я конечно понимаю, что в бубунте есть для этого разнообразные не менее(но и не более!) удобные гуи, вот только проблема в том, что ставить ради этого иксы на _любой_ сервер довольно накладно.

5 лет поддержки против 3х и релизы по графику, а не как бог на душу положит. Для бизнеса это важно.

толку с этого графика, и этих сроков, если твоя LTS12 откровенно сырая и недоделанная. Какой нафиг сервер, ежели это г-но даже к десктопу ещё не готово??

drBatty ★★
()
Ответ на: комментарий от chinarulezzz

Нестираемые логи, которые спасут лишь идиота, и являются опять ненужной сущностью

нестираемые логи - это годно и нужно. Но опять-таки, далеко НЕ всегда. В SysV такой лог прикручивается без особых проблем, если оно надо. Админов-идиотов спасёт гугл, и наверное даже hh. Наверняка там уже есть истории успеха в этой области. Потому потуги Поттеринга тут совершенно непонятны (впрочем как обычно)

qr-коды

это которые с точечками квадратики для ввода в мобилку через говнокамеру что-ли? тогда facepalm

drBatty ★★
()
Ответ на: комментарий от slapin

Поэтому все возможные конфигурации сервисов должны быть тщательно спланированы, вулючая все возможные нештатности при загрузке, дабы гарантировать всегда валидное окружение. Также, должны быть расставлены ручки для рестарта зафейлившихся сервисов в тех ситуациях, когда systemd это по какой-либо причине этого не делает. Embedded предполагает работу без вмешательства извне, поэтому требуется такой набор костылей и подпорок. На десктопе это, конечно, не требуется.

Со всем этим я согласен, кроме последнего пункта. На десктопе системного администратора может и не требуется (если этот администратор обладает скилом читать в полуживой системе бинарный лог конечно), а вот про «обычных юзеров» ты забыл, они НЕ ДОЛЖНЫ обладать НИКАКИМИ скилами сисадмина, потому работа их десктопа ничуть не отличается от работы встроенной техники, такой как телевизор или кофеварка. Сейчас вот рекламируют кофеварку с одной кнопкой, компьютер ничем не хуже и не лучше.

В итоге, systemd не годен для

1. встроенной техники

2. серверов (см. выше)

3. десктопов обычных юзеров

Что остаётся? 3.5 хикки-задротов.

drBatty ★★
()
Ответ на: комментарий от AGUtilities

я должен сказать (и я это говорил уже сегодня в одном треде об arch), что мне systemd представляется как революционный шаг вперёд

в чём «революционность» то? в WindowsWay что-ли? Оригинально конечно, но на шаг вперёд никак не тянет.

drBatty ★★
()
Ответ на: комментарий от ttnl

Эта фича реально экономит время загрузки.

Ну сэкономил я пару секунд на загрузке. И чего?

Загрузка происходит далеко не каждый месяц.

P.S.: Порождение процессов с pid > 1 без fork - это, конечно, шедевр топика...

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

а что такое это самый ваш виндовс-вэй? вам не понравилась идея сервисов? помоему, systemd в это плане гораздо удачнее получился чем виндовый и при том, конфигурирование основано на текстовых конфигурационных файлах, как вы это любите.

или что для вас unix-way? шелл скрипты везде где только можно? извольте, но это - убожество: bash, может быть как-то ещё и тянет на командную строку, но везде где нужно делать ветвящуюся логику, извольте, но уж лучше взять абсолютно стандартный питон или даже престарелый перл.

AGUtilities ★★★
()
Ответ на: комментарий от drBatty

да, к стати: bash - это не только тормоз прогресса, это ещё и 3-4 тормоза в виде самого себя, а также инструментов которые его используют, таких как make.

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

или что для вас unix-way?

http://ru.wikipedia.org/wiki/Философия_UNIX

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

Размеры + время запуска = overkill

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

Размеры + время запуска

а время на удаления и создания экземпляров bash при работе make и всяуих скриптов вы не считаете значит...

поясню: да, bash меньше весит и запускается быстрее; да, юниксвейность - это маленькие программы каждая для своего дела. но давайте представим программу, которой нужно, на пример, удалить 10,000 фалйов по списку. bash для этого будет каждый раз удалять и создавать новый процесс, а python будет просто вызывать функцию unlink. при том что самому питону нужно загрузиться только один раз и выполнить всю работу. тоже самое касается любых других программ, часто напрямую вызываемых в bash (см ls /bin)

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

но давайте представим программу, которой нужно, на пример, удалить 10,000 фалйов по списку. bash для этого будет каждый раз удалять и создавать новый процес...

echo filelist|xargs -0 rm -rf

Итоговая оценка: 2+

Прочитай уже «Философию UNIX». Еще рекомендую: «UNIX - Универсальная среда программирования» Кернигана и Пайка.

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

а давай, дружок, вспомним об ограничениях по длине командной строки и о печально (не)известном gtkwebkit, для сборки которого, требуется патчить make, из-за того что в bash пытаются воткнуть длиннющий аргумент с вот таким вот списком файлов как ты предлагаешь. сколько эту «ошибку» никак не исправят? - 2 года как, а всё из-за тупого пихания юниксвея во все щели.

AGUtilities ★★★
()
Ответ на: комментарий от AGUtilities
       --max-args=max-args
       -n max-args
              Use  at  most  max-args  arguments per command line.  Fewer than
              max-args arguments will be used if the size (see the -s  option)
              is  exceeded, unless the -x option is given, in which case xargs
              will exit.

// skip

       --max-chars=max-chars
       -s max-chars
              Use at most max-chars characters per command line, including the
              command  and  initial-arguments and the terminating nulls at the
              ends of the argument strings.  The largest allowed value is sys‐
              tem-dependent,  and  is  calculated as the argument length limit
              for exec, less the size of your environment, less 2048 bytes  of
              headroom.   If this value is more than 128KiB, 128Kib is used as
              the default value; otherwise, the default value is the  maximum.
              1KiB is 1024 bytes.

// skip

       --exit
       -x     Exit if the size (see the -s option) is exceeded.

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