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, довольно быстро умрут естественной в этом случае смертью.

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

Если опыт есть — ссылку на профиль на hh в студию, я посмотрю.

Вы сами то чьих будете?

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

Скорее всего это невозможно по ряду причин.

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

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

У меня на компе режим ожидания отвалился (комп засыпает, но не до конца - вентиляторы крутятся и не просыпается), если грузиться с SysV всё в порядке, только звук отваливается - чего-то с пульсой. В обоих случаях поделки Поттеринга. OpenSuSe 12.2

Если бы всё работало, я бы и слова против systemd не сказал.

ViTeX ★★★★
()
Последнее исправление: ViTeX (всего исправлений: 1)
Ответ на: комментарий от ttnl

Особенно на телефонах и прочих слабых устройствах

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

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

Особенно на телефонах и прочих слабых устройствах.

Ага! А еще гном3 и юнити отлично подходят для планшетных устройств.
Проблема в другом. Не существует планшетных устройств с гном3 и юнити.

То же самое и здесь. Могу сказать как разработчик «прочих слабых устройств» на arm - нам системДГ не нужна, sysvinit нас устраивает на 100%.

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

.*SuSe

Тут дело не в Поттеринге, я тебя уверяю. Я этим ежедневно на работе пользуюсь последние лет 5

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

У меня на компе режим ожидания отвалился (комп засыпает, но не до конца - вентиляторы крутятся и не просыпается)

Кажется, видел здесь пару топиков на эту тему. Вроде, это вполне исправимо.

Axon ★★★★★
()

а кто помешал эту фичу запилить в rsyslogd? Убрать fork(), посылать самим логгером и остальными демонами тот же сэндмсг?

minakov ★★★★★
()

> Я думаю, демоны, которые не перейдут на systemd, довольно быстро умрут естественной в этом случае смертью.

Не запугивай!

Уважаемые разработчики софта, пожалуйста, пишите скрипты инициализации только для System V, и ни в коем случае не для Systemd. Бойкотируйте Поттеринга. Будьте сильными, как Adobe, отказавшаяся добавить поддержку PulseAudio в своих продуктах из-за его ненужности:

В ответ Colin Guthrie гневно обещал написать CEO Adobe о глубочайшем неуважении к пользователям Linux, несоблюдении требуемых процедур для их поддержки, а также неуделении внимания сторонним разработчикам корневых аудиосистем Linux-дистрибутивов. Колин рассказал о громадной работе, которую в случае дальнейшего безразличия от Adobe, предстоит проделать в том числе ему, хотя причина кроется в стороннем приложении. Он также подчеркнул, что будет настоятельно советовать создателям дистрибутивов Linux не включать Flash в поставку или репозитории до тех пор, пока данная ошибка не будет исправлена.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 1)
Ответ на: комментарий от ttnl

В systemd - 1 fork. В sysvinit их — 3

О да, это повод потратить кучу человеко-лет, перелопатив всю простую как 3 рубля и надёжную систему инициализации, заменив её на кучу бинарей, зумля и ООП :)

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

Уважаемые разработчики софта, пожалуйста, пишите скрипты инициализации только для System V

И что, ты часто видишь разработчиков софта, пишущих скрипты инициализации SysV для своих изделий? :]

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

Я вообще редко вижу программистов. Например, ни разу не видел программиста из Adobe. Но они есть и уже выразили неудовольствие от поделок Поттеринга.

ZenitharChampion ★★★★★
()
Последнее исправление: ZenitharChampion (всего исправлений: 2)
Ответ на: комментарий от Stanson

А представь такую фичу в ядре.

Линукс будет через KMS рисовать окошко с вопросом на каждый неподписанный бинарь.

Это даже круче чем в системд. И никаких конфигов нет.)

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

Если перечисленное по ссылке (http://0pointer.de/blog/projects/why.html) тебе не видится причинами объективными, то тут я ничем помочь не могу

Сходил по ссылке, таблица сравнения представляет из себя брутальнейший «Get the facts».

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

Помимо школьников, у линукса есть вполне серьезные пользователи, типа мировых фондовых бирж, корпораций, а также просто серьезных людей.

Аргумент «сперва добейся» детектед.

Серьёзные люди не перегружают сервис по миллиарду раз в сутки, чтобы стала видна разница между одним форком и тремя.

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

это же вроде паралельный запуск journald и syslog-ng? или же я не понял и при такой раскладе journald полностью грохается и вместо него работает только syslog-ng?

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

Это не выпиливание, а возможность отправить еще и сислогу. Оно так и продолжит неадекватно жрать память и засорять место ненужными бинарными логами. Они все обещали сделать возможность гадить в klog, и выпилить journal, но воз и ныне там.

slapin ★★★★★
()

Ну охренеть теперь, минус двадцать форков при старте системы. Линукс готов для десктопа.

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

Это те, кто написал кривущий Flash Player?

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

Уж эта фича, разумеется, вообще не нужна. Лечить нужно причину, а не следствие, а не тупо заметать проблемы под ковёр.

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

Нельзя просто взять и выпилить journald - нужно что-то засунуть вместо него в замен, что будет вычитывать /run/systemd/journal/{stdout,socket}. journald при форварде выполняет так сказать усечение. Это не в systemd, и кто-то должен это делать.

Бинарный лог можно отрубить, и оставить только форвардинг

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

И что, ты часто видишь разработчиков софта, пишущих скрипты инициализации SysV для своих изделий? :]

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

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

Забыл название омираканцкого боевика (ц)(тм) где в мир без оружия попал вооруженный маньяк

Во-во, отличный пример. Всякие уроды сначала устроили людям «прогресс», поломав привычное, а потом пришлось рагребать говно. Причём разгребали наверняка не те, кто пропагандировал запрет оружия. И пропагандоны наверно так же сладко как поттеринги пели про то, что фу, оружие у каждого в доме, это фу, отсталость, неэффективно, негуманно, несовременно и т.п.

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

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

Та ну это просто не возможно. Это или будут говнокостыли на IEEE sh, или полностью зависеть от дистрибутива на котором быдлокодит разработчик

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

Это я в контексте твоего заявления про антивирусы написал, если что

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

Нельзя просто взять и выпилить journald...

Боромир в треде, все в Гондор.

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

А представь такую фичу в ядре.

Линукс будет через KMS рисовать окошко с вопросом на каждый неподписанный бинарь.

Это даже круче чем в системд. И никаких конфигов нет.)

Ну да, к этому поттеринги и тащут. Скорее всего ща впихнут всеми неправдами этот грёбаный systemd, потом ядро заставят по-дефолту только systemd грузить, так, что без ковыряния init не запустишь (какой-нибудь сокет заведут, для общения ядра и systemd, сначала опционально, потом «внезапно» через 10 мелких незначительных патчиков окажется что без systemd ядро работать не может нормально), потом ядра подписывать у микрософта станут, потом станут проверять подписанность systemd, а тот уже давно будет проверять подписанность сервисов.

Не, ничего страшного, конечно, не произойдёт, ядро рано или поздно форкнут под GPLv3, потихоньку появятся нормальные дистрибутивы, без всего этого поттерингова вендоговнища, будет даже встроенная отламывалка SecureBoot (прям как на некоторых древних дистрибутивах для древних КПК уже было), ну и всё по новой. Жалко только что на этом мы где-то несколько лет развития потеряем.

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

Скорее всего это невозможно по ряду причин.

Ага. И эти причины - 100% совсем не технического плана.

Stanson ★★★★★
()

минусы забыл перечислить. ненужно.

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

Так не всегда было, между прочим

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

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

Остальные фичи типа «Respawning on service crash without losing connectivity» тоже не нужны?

Ваще пипец.

Сэр, вы хоть понимаете, что «service crash» в любом мало-мальски серьёзном деле это повод для немедленного разбирательства и лечения _service_ чтобы он больше не _crash_?

А пока разбираемся - работает резерв.

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

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

Собираем с помощью buildroot собственную rootfs, потом вносим туда необходимые изменения. У нас моноблок рассчитан на запуск одной-единственной софтины, ради которой и разрабатывался.

trex6 ★★★★★
()

Только вопрос - а почему, спрашивается, нельзя это было сделать на том-же баше? Зачем _бинарный_ формат?

cvs-255 ★★★★★
()
Ответ на: комментарий от annulen

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

Ваще-то Линус сначала под своей некоммерческой лицензией код выложил. Потом GPLv2 но без упоминания о том, что только v2, когда именно появилось v2 only - точно не скажу, но никак не с самого начала. Вроде 2.2.x ещё были без v2 only

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

Но зачем?! Всё работало неплохо, после апдейтов стало ещё лучше, если бы не это системдешное недоразумение. Не было печали, апдейтов накачали...

Мне лень разбираться, на ноуте у меня Mint, а десктоп я раз в неделю включаю, забил на это.

ViTeX ★★★★
()

Я думаю, демоны, которые не перейдут на systemd, довольно быстро умрут естественной в этом случае смертью.

это как?))) Разработчики дистрибутива перестанут писать скрипт вызова, или делать форк демона не нужно будет?

chinarulezzz ★★
()

Остановимся вкратце на killer-фиче «Socket-based Activation».

А ниже ты что-то не то описываешь. Мне-то казалось, что socket-based activation — это что-то вроде inetd: сидит инит на сокете, а когда туда кто-нибудь стучит, тогда запускает демона и передает инициативу ему. launchd это умеет, там все просто и понятно, а systemd через костыли и такую-то мать, и не каждый сервис.

Вот за это Леннарта и критикуют — он любит запускать свои руки в вещи, которых не понимает нормально.

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

Мне-то казалось, что socket-based activation — это что-то вроде inetd: сидит инит на сокете, а когда туда кто-нибудь стучит, тогда запускает демона и передает инициативу ему

Дьявол кроется в деталях

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

А v2 она и есть only, если не указано «or any later version»

Не факт. Юридических прецедентов не было ещё. Формально GPLv3 никак не ущемляет прав автора, выпустившего код под GPLv2 если, конечно нет прямого указания «хочу только v2», которое только и является само по себе штукой которая будет ущемлена при переходе под v3.

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

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

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

Формально GPLv3 никак не ущемляет прав автора, выпустившего код под GPLv2

4.2, она накладывает дополнительные ограничения => нарушает условие GPLv2 об отсутствии дополнительных ограничений.

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

Допустим, товарищ Торвальдс, разработваший ядро, хочет, чтобы его можно было использовать на тивоизированных системах. Ты же форкаешь его работу и лишаешь пользователей этой возможности => ты нарушаешь GPL 2.

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

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

Экономить время загрузки можно гораздо проще и изящнее — не запуская 100500 тонн всяких ненужных демонов.

И что-то я очень сомневаюсь что один форк занимает сколько-нибудь значительное количество времени.

Недостатки Systemd перевешивают его достоинства многократно.

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