The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз ядра Linux 4.2"
Отправлено Аноним, 25-Сен-15 01:10 
> NTP — это понятно, неизбежное зло, вызванная аппаратными особенностями компьютеров.

Это не аппаратные особенности компьютеров, это следствие многозадачности ОС. А факапы - следствие того что некоторые люди мнят что они в системе одни и никто не может часы перевести. А это не так. И это касается всех аспектов работы многозадачки.

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

Программист или понимает что это многозадачка, состояние которой меняется в множестве закоулков помимо него, или нет. Чего бы вдруг он поймет прo NTP, но прощелкает с открытием файлов или правами - не понятно.

> А вот когда ты хочешь сделать для себя свой собственный whitelist-список
> устройств, а выясняется, что твоими cgroup-ами управляют извне — это
> уже лишний повод для проблем.

А как управление cgroups вообще пересекается с белым списком устройств?

> Все extra features должны быть отключены по умолчанию и, желательно, должны
> находиться в отдельных бинариев, без которых «базовый функционал успешно функционирует».

Ну вот и отключайте себе sysfs и procfs в ядре, наздоровье. Вон тут гражданин проверил что без них можно обойтись, если очень захотеть.

> Опять же. Чем больше поводов для ошибки создаётся, тем больше из них
> приведут к fail-у в production-е.

Теоретически это так. Практически - все несколько сложнее. Решение задачи ограничено по времени, деньгам и ресурсам и поэтому доводить все до максимально оптимзированного ASIC с минимально-возможным числом транзисторов у меня может и не быть ресурсов и времени и это может быть нецелесообразно по стоимости. Поэтому сказать что systemd мне не требуется - я не готов.

> Если какой-то инструмент не нужен, то он должен быть отключен.

Если на то пошло - можно обойтись без библиотек. И без ядра. Написать все самому, в фирмваре делающей прямой доступ к железу, и телемаркет. Хотя лучше сразу ASIC максимально оптимизированный запилить. Но вот правда есть нюансы.

> Если, например, у меня контейнер, где все устройства статичны, то зачем мне там udev?

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

> Да и dbus там нужен чуть чаще, чем никогда. Лишь источники неполадок.

Я даже и не могу вспомнить на моей памяти когда d-bus у меня неполадки хоть в чем-то вызывал.

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

Админ имхо на себя много брал, делая такие допущения в многозадачке. С такими запросами - в MSDOS, имхо.

> Он вроде и не делал таких допущений.

Тогда я не понимаю что ему не нравится. Изменение файлов по ходу работы системы - обычное дело для многозадачки.

> Всегда должна быть возможность легко диагностировать проблемы.

И кроме всего прочего sysv init этому совсем не соответствовал: там вообще нет никакого boot time дебага, логинг по принципу "насколько не лень майнтайнеру", отсутствие реакции на коды возврата в большинстве случаев и прочая. И потенциально куски сложной логики в неожиданных местах.

> Не хотелось бы противоречить позиции Mihail-а, но всё-таки честности
> ради обязан сказать, что согласен: мусор вроде while true — это скорее workaround,

Это вообще источник кучи проблем. А поттеринг обрабатывает массу проблемных ситуаций. Иногда случающихся в продакшновых системах. И совсем не радующих потом.

> которые можно подцепить к тому же OpenRC

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

> Что мешает не-init-у быть запущенным с нужными правами?

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

ИМХО лучше выгрузить это в systemd и потом реюзать его код. Из всех программ. Парой строк конфига.

> Что мешает не-init-у быть всегда запущенным, после того, как init его запустит?

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

> Какую переинициализацию процесса?

Ну там форки лишние, etc.

> Что мешает не-init-у иметь доступ ко всему необходимому?

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

> IMHO, как раз наиболее логично и красиво, когда init — это init,
> а обвязка — это обвязка.

А на мой вкус - кое-кто игнорил кучу long-standing проблем программирования и администрирования. И потом подобным кадрам довольно жестко объяснили что они в этом неправы.

> Не понял, что вы хотели сказать. Хотели сказать, что init выполняет слишком
> мало функций и поэтому его нужно дополнительно нагрузить? Зачем?

Потому что он висит с полными правами. Всегда. И порождает остальные процессы. И поэтому ему проще и логичнее всего делать вещи типа супервизинга процессов. Даже sysv init это умеет малость. Но в таком виде, что толку с этого - ноль.

> IMHO, наоборот, он должен делать как можно меньше, а всё остальное — это
> отдельные штуки.

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

> После запуска в контейнере были толко два процесса: systemd и journalctl. Оба
> процесса жрали 100% CPU. Чтобы продолжить загрузку достаточно было убить через SIGKILL «journald».

Ну как бы баг. И с технической точки зрения:
- Systemd сам по себе может ловить как раз взвис сервиса на старте и проверять фактическую живость. Если это не было настроено - это к админу. А если не сработало - поцтеру в багтрекер.
- Взвис journalctl не является правильным поведением, имхо. Это некий bug.

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

> Если не хочется скрипты — можно их не использовать. Вполне можно сделать
> какую вам угодно обвеску вокруг init-а,

Ну вот в systemd как-то так и есть: я буду звать скрипты только когда это реально требуется.

> Например должна быть возможность использовать syslog-ng без journald.

А у вас разве кто-то занимал? Или с чего они вдруг вам "должны"?

> логов на экран (без framebuffer) вполне может перегреться, если что-то произошло
> с радиатором или вентилятором.

ИМХО это синтетическая и кривая ситуация и тут надо не софту предъявлять, а тем кто таким занимается. Ну ставили бы ARMовскую платку за тридцать баксов, она при всем желании не перегреется и без вентиля. В миди-тауэре можно целый кластер собрать. А то что кто-то набрал на помойке глючных писюков - его проблемы. Желать чего-то от глючного железа вообще оксюморон.

> У меня есть серверы, где для production-а важнее отсутствие утечки информации, чем
> работоспособность. Поэтому причины отказа сервиса нужно диагностировать до перезагрузки.

А у многих других людей другие приоритеты и случаи. ИМХО дефолты должны делаться так чтобы покрывать наиболее типовые юзкейсы.

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

Потенциально есть такие грабли. Но что и где приоритетнее... вот у меня на железке сети может не быть совсем. И хацкеров. А вот зависон - это грабли.

> Вот только до перезагрузки хотелось бы понять из-за чего возникла проблема. А
> после перезагрузки уже нéчего диагностировать, кроме логов.

Можно попробовать core dump собирать. Но коредампы в продакшне - еще одна мина замедленного действия.

> вы понимаете RPi-like, а не STM32-like (ибо тот тоже ARM).[/offtop]

Ну да. В основном штуки на allwinner. Несмотря на то что там автомобиль собирают по ходу гонки, core parts линя обычно оправдывают ожидания и не подводят.

На самом деле я видел всего 2 deadlock за все время. Один - в вендырском ядре 3.4, эзернет. Это known issue для тех кто в теме и одна из причн антипатий к вендырским SDK. Китайские дрова - гуано. Второй был судя по всему race condition когда у usb-девайса были проблемы с кабелем и девайс подключался-отключался с максимальной скоростью. В конце концов, через 10 минут странностей ядро Linux таки поймало deadlock. Через 10 секунд вачдог все это срубил, подтвердив что я немного научился готовить этих кошек.

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

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

> моей голова — работа в компании, специализирующейся на системах видеонаблюдения.

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

> есть смысл искать более дешёвые решения, чем RPi-like (если такие найдутся).

Сильно дешевле - некуда. При малейшем намеке на конективити это всяко SoC с линухом. Да и интерфейсы типа два притопа, три прихлопа - лишь Зенкову нравятся. А я не фанат такого. И остальные юзеры тоже.

> Для того и беседуем, чтобы понять чужой опыт.

Вообще, да. Но многие ваши сценарии кажутся мне странными.

> Одна из его проблем как раз в том, что у него слишком много настроек

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

> (в нём самом, а не поддержка внешнего решения, выполняющего
> дополнительные функции), IMHO.

Обезглючить массово применяемое решение проще чем 100500 кастомных конфиг. Поэтому я могу поверить что системд будет относительно стабильным. А вот абы какие кастомные конфиги из скриптов, соплей и скотча, где часто не проверяют не то что таймауты но и коды возврата...

> Но МК всё равно будет надёжнее, IMHO.

Зависит от конкреитки. Но вообще в целом потенциал к этому у МК есть.

> если говорить про надёжность, то у RPi гораздо больше точек для отказа, IMHO.

Но сильно меньше чем в писюке. И я не люблю Pi - они неважные инженеры. Но есть много иных модулей и одноплатников.

> Хотя спроектировать собственную плату и написать прошивку — тоже
> те ещё задачки, даже если задача простая.

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

Про телефоны - относительно длинно, см part 2.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру