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

ЗАЧЕМ ? :-)

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

Цитата, достойная учебника по демагогии.

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

Вопрос о существенности самой выгоды не стоит, да?

Вот видишь - ты и сам не считаешь ресурсный выигрыш существенным.

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

ttnl ★★★★★
() автор топика

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

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

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

Я всегда рыдаю на этом месте. Сегодняшний low-end телефон обладает в разы большей мощью, чем Pentium, на который я впервые поставил Linux, но забота о слабости телефончика так трогает %)

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

А вот bsd-init костыли не нужны. Текстовый редактор и вперёд, на /etc/rc.conf и /etc/rc.local

Само по себе это небольшая проблема. В любой системе есть костыли. Вопрос в их количестве.

Мне вот вообще пофиг что там под капотом, лишь бы в гугле быстро находился ответ «как сделать XXX». И чтобы это не превращалось в ппц. Например, знаешь как в убунте удалить старые ядра?

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge
true_admin ★★★★★
()
Ответ на: комментарий от Stanson

Никаких объективных причин для замены init - НЕТ и быть не может.

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

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

У тебя есть опыт работы в таких местах или ты высосал это из пальца?

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

Но профиля на hh у меня нет, так что можешь игнорировать мое мнение %)

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

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

Я думаю, такая возможность теоретически рассматривалась. Скорее всего это невозможно по ряду причин.

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

и что только люди не делают, лишь бы awk не использовать! ☺

dpkg -l | awk '/^ii.*linux-image/ { print $2 }' | grep -v `uname -r` | xargs dpkg -P

PS: bsd-init рулит! В sysv сам никогда не понимал, зачем все эти runlevels, если из них практически только один и используется (исключим 0 и 6)

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

У меня есть. Могу сказать, что в резервированных системах время запуска сервера не имеет значения - горячий резерв пускается заранее.

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

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

Например, знаешь как в убунте удалить старые ядра?

Класс, а во freebsd я делаю: rm -rf /boot/kernel.old :)

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

на самом деле awk не нужен: dpk -l linux-image-* | grep -v `uname -r` | ...

Ну а кривость возни с симлинками я и не оспариваю.

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

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

Чем серьезнее приложение, тем меньше нужна эта фича (просто потому, что ее реализация вырастает из логики самого приложения).

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

тебе уже объяснили на пальцах, и не только я, не понимаешь, продолжай гнуть свои :-)

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

«перечисленное по ссылке» - это полнейшая лажа и демагогия не имеющая отношения к совершенно незначительной в общем-то проблеме.

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

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

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

Так что эту дебильную сцылку с совершенно идиотской информацией можете себе оставить.

ЗЫ: опять же, я бы понял, если бы такие сцылки какой-нибудь Леннарт везде раскидывал, ибо он заинтересован чем-то в продвижение своего велосипеда. Но когда этим занимаются люди с Леннартом не связанные и не получающие никаких выгод от этого - вообще непонятно. Неужели настолько всё плохо нынче с интеллектом, чтобы понять простейшие вещи?

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

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

у них hot standby поэтому пофиг. Мощные серваки сами по себе грузятся минутами (хз почему, проверку памяти я отключаю), да и всякие базы данных поднимаются не быстро, так что +- пара минут к загрузке не играет роли.

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

а во freebsd я делаю: rm -rf /boot/kernel.old :)

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

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

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

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

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

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

Конечно. Отсутствие поддержки systemd будет свидетельствовать об отсталости их разработчиков.

напоминает аргументы пи^Wлиц нетрадиционной ориентации и их защитников в спорах.

Ты ещё скажи, что ярые противники systemd - латентные системдэшники :)

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

+1

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

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

ЗЫ: опять же, я бы понял, если бы такие сцылки какой-нибудь Леннарт везде раскидывал, ибо он заинтересован чем-то в продвижение своего велосипеда. Но когда этим занимаются люди с Леннартом не связанные и не получающие никаких выгод от этого - вообще непонятно. Неужели настолько всё плохо нынче с интеллектом, чтобы понять простейшие вещи?

Ну извини — сообщество разработчиков линукса перешло на systemd, а с тобой — самым важным человеком, не посоветовались. Забыли, наверное.

ttnl ★★★★★
() автор топика

не смотря на copy-on-write, для дочернего процесса копируется практически все

с хрена ли оно всё копируется?

sergej ★★★★★
()

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

Им просто пишут обёртки на шеле.

теперь схема такая:

systemd-init -> parse .service file -> bash script -> daemon.

:)

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

все это можно было постепенно внедрять в тот же init

Ну от [какого-либо] шелла в sysv отвязаться не получится. А если получится, то придется заменить скрипты на нечто вроде systemd-юнитов. WAIT. OH SHI~

Многие фичи systemd очень здравые. К сожалению, не все.

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

Забыл про внешность и взгляды автора упомянуть. Я считаю, это главная причина, по которой НЕ стоит переходить на systemd.

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

В современных ядрах компактификация исключает необходимость копировать область кода и части данных

XVilka ★★★★★
()

Вообще - единственный плюс от systemd - унификация, если все на него всё таки перейдут.

Ну ещё радует то, что конфиги не в xml :)

sergej ★★★★★
()

Почитал обсуждение. Скажите, ТС всегда так жирно набрасывает, или это временное обострение?

geekless ★★
()

По ссылке нет ни одного весомого плюса systemd.

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

В современных ядрах компактификация исключает необходимость копировать область кода и части данных

Да оно уже лет наверное 40 как исключает. Я даже не знаю в каком юниксе код копируется при форке.

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

fixed for greate justice

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

ибо все почему-то забывают, что systemd — это linux-only-way, не компатибельный с другими *nix системами. это приведёт или к полной изоляции linux или к куче форков, что опять приведёт к полной изоляции linux.

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

Основной проблемой я считаю акценты на какой то несущественной х%ете, типа количества форков и скорости загрузки

Что поделать, если эти акценты задаёт сам автор?

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

но кстати тем, кто совсем не понимает зачем всякие системды и дбасы можно и посмотреть

$ cclive 'https://www.youtube.com/watch?feature=player_detailpage&v=Dz0lAxPdSkQ#t=656s'
Checking ... ...... ....... ...libquvi: error: server response code 403 (conncode=0)
amaora ★★
()
Ответ на: комментарий от slapin

меня systemd устраивает всем, кроме journald. Если бы его сделали отрываемым - я был бы счастлив.

Как бы, он отрываем.

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

сообщество разработчиков линукса перешло на systemd

Теперь Леннарт - «сообщество разработчиков линукса»?

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

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

Не обращать внимание?

Попробуй не обрати, когда все собеседники только про это и талдычат...

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

Видимо, нельзя.

Видимо-невидимо грибов в лесу.
Вы собирались позиционировать себя как специалиста в данном вопросе. Хотелось бы услышать ответ, достойный специалиста.

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

Конкретно в данном случае, при агрессивной защите традиций наиболее сильна последняя буква S

Если не настроен на конструктивное общение — не создавай тему.

Deleted
()

Системный вызов fork — один из самых затратных в ядре, поскольку, не смотря на copy-on-write, для дочернего процесса копируется практически все.

/0

Из-за copy-on-write память процесса не копируется в момент форка, а так как родитель погибает, то и после него.

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

Ну ещё радует то, что конфиги не в xml

Радоваться надо будет когда systemd «внезапно» начнёт задорно подмахивать какому-нибудь SecureBoot и откажется запускать сервисы без подписей сертификатами у которых в CA непременно платные центры :) И будет весело вопрошать «Запустить не подписанный сервис XYZ? [yes/no]»

Нормально, чо. Зато конфиги не в xml

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

Серьезные люди не ребутают серьезнве серверы на каждый чих.

annulen ★★★★★
()
Ответ на: fixed for greate justice от beastie

все почему-то забывают, что systemd — это linux-only-way, не компатибельный с другими *nix системами. это приведёт или к полной изоляции linux или к куче форков, что опять приведёт к полной изоляции linux.

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

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