Envsys
Envsys — фреймворк для мониторинга аппаратных сенсоров на уровне ядра в операционной системе NetBSD.
По состоянию на 4 марта 2019 года, данный фреймворк используется примерно 85 драйверами устройств для экспорта различных сенсоров, связанных с мониторингом окружающей среды, что подтверждается наличием символа sysmon_envsys_register в дереве исходного кода NetBSD[1].
Общие сведения
| Envsys | |
|---|---|
| Тип | системный мониторинг |
| Автор | Juan Romero Pardines (2007) |
| Разработчик | NetBSD Foundation |
| Написана на | C |
| Операционные системы | NetBSD (начиная с версии 5.0) |
| Первый выпуск | 1 июля 2007 |
| Репозиторий | bxr.su/n/sys/sys/envsys.h |
| Лицензия | BSD (четырёхпунктная лицензия) |
| Сайт | mdoc.su/n/envsys.4 |
История
Фреймворк претерпел две основные ревизии. Первая версия envsys.h была добавлена 15 декабря 1999 года, а страница руководства envsys.4 появилась 27 февраля 2000 года. В период с 2000 по 2007 год в руководстве envsys(4) для NetBSD указывалось, что «API является экспериментальным» и «вся API должна быть заменена на интерфейс sysctl(8), если таковой будет разработан». Примечательно, что в 2003 году именно этот подход был реализован в OpenBSD через sysctl hw.sensors, когда некоторые драйверы envsys(4) были портированы туда.
Вторая основная ревизия состоялась 1 июля 2007 года. В ней сериализация взаимодействия с пользовательским пространством была переосмыслена с использованием property list благодаря новой библиотеке proplib(3) NetBSD (передача данных между ядром и userland по-прежнему осуществляется через ioctl).
Фреймворк Envsys послужил прототипом для sysctl hw.sensors в OpenBSD (2003), а множество драйверов и типов сенсоров переносились между NetBSD и OpenBSD в обе стороны. Поддержка сенсоров типа drive была добавлена в NetBSD 1 мая 2007 года по аналогии с drive в OpenBSD, в то же время, когда bio(4) и bioctl были портированы из OpenBSD в NetBSD[2].
Возможности
Наиболее распространённым типом экспортируемых устройств являются температурные сенсоры (ENVSYS_STEMP), как отмечается в исследовании популярности сенсорных модулей NetBSD 5.0.1. Сенсоры регистрируются в ядре с помощью API sysmon_envsys(9). Для доступа к данным сенсоров и их мониторинга на уровне пользовательского пространства используется утилита envstat через взаимодействие с proplib(3) и ioctl(2) с файлом псевдо-устройства /dev/sysmon, демон управления питанием powerd, реагирующий на события ядра выполнением скриптов из /etc/powerd/scripts/, а также сторонние инструменты, такие как symon и GKrellM из pkgsrc.
Фреймворк позволяет пользователю изменять пределы мониторинга, заданные драйвером, и обеспечивает возможность контроля сенсоров непосредственно в пространстве ядра или даже программирования чипа для самостоятельного аппаратного мониторинга. Определены два уровня предельных значений: критический и предупреждающий, оба из которых дополнительно подразделяются на категории выше и ниже нормы. При превышении данных порогов может генерироваться системное событие в ядре, которое улавливается в пользовательском пространстве powerd с последующим запуском заранее определённых скриптов пользователя. Для сравнения, в OpenBSD платформа hw.sensors осуществляет мониторинг пользовательских значений через пользовательский демон sensorsd.
По состоянию на 2019 год сам фреймворк Envsys не поддерживает управление вентиляторами непосредственно, однако драйверы могут реализовать поддержку работы с вентиляторами чипов иными средствами, например, через собственный интерфейс sysctl, как реализовано в драйвере dbcool(4). При этом драйверы самых популярных Super I/O чипов, таких как lm(4) и itesio(4), не реализуют управление вентиляторами вовсе (в частности, исторически в OpenBSD, NetBSD и DragonFly указанные драйверы даже не показывают коэффициент заполнения (duty cycle) вентиляторов — только значения оборотов в минуту (RPM)).
Примечания
- ↑ Murenin, Constantine Aleksandrovich. OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control (англ.). — 2010-05-21. Архивировано 20 августа 2025 года.
- ↑ Super User's BSD Cross Reference: /NetBSD/usr.sbin/powerd/ (англ.). bxr.su. Дата обращения: 26 сентября 2025. Архивировано 28 декабря 2024 года.