Доступен (https://lists.freebsd.org/pipermail/freebsd-announce/2016-Fe...) отчёт о развитии проекта FreeBSD с октября по декабрь 2015 года.Основные достижения:
-
Система
- Началась (http://bsdimp.blogspot.com/2016/01/details-on-coming-automat...) работа по добавлению в ядро средств для автоматической загрузки модулей, необходимых для работы оборудования, для которого отсутствуют загруженные драйверы. На основании информации в модулях построена карта для сопоставления драйверов и устройств PC Card, USB и PCI, которая сохранена в отдельном файле. После доведения проекта до конца пользователю будет предоставлена возможность загрузки минимального ядра, аналогичного сборке в конфигурации MINIMAL, с динамической загрузкой всех драйверов устройств по мере необходимости;
- Во FreeBSD-HEAD принят переработанный механизм вытеснения процессов в ситуации нехватки виртуальной памяти в системе (OOM, Out of Memory). В отличие от старого обработчика OOM, оперирующего текущим состоянием виртуальной памяти (снижение свободного места в разделе подкачки и небольшой остаток свободных страниц памяти), новый механизм пытается анализировать динамику изменения потребления памяти, принимая решение о принудительном завершении процессов только в случае реальной угрозы возникновения блокировки. Кроме того, изменён алгоритм выбора процесса для принудительного закрытия, который теперь не ограничивается учётом числа элементов в таблицах распределённых станиц памяти, но и пытается оценивать реальное число страниц, которое высвободится в результате принудительного завершения процесса, что позволяет более точно выбирать потенциально проблемные процессы;
- Во FreeBSD 11 принята новая реализация системного вызова sendfile (https://www.freebsd.org/cgi/man.cgi?query=sendfile&sektion=2), предназначенного для организации прямой передачи данных между файловым дескриптором и сокетом. Новая реализация разработана компаниями Netflix и NGING и отличается (http://www.slideshare.net/facepalmtarbz2/new-sendfile-in-eng...) значительным увеличением производительности - файл теперь можно направлять в сокет в асинхронном режиме без ожидания завершения чтения с диска. Ранее при использовании флага O_NONBLOCK не блокировался только сокет, но продолжало блокироваться чтение с диска. В новой реализации можно асинхронно отправлять и читать данные. Реализация полностью обратно совместима с ранее доступными приложениями и может использоваться в качестве прозрачной замены, не требуя пересборки. Кроме увеличения производительности в новой реализации также добавлены новые флаги, предоставляющие дополнительный контроль над отправкой данных. Например, флаг SF_NOCACHE запрещает кэширование передаваемых данных, а при помощи макроса SF_READAHEAD() можно установить размер буфера упреждающего чтения;
- В рамках проекта relaunchd (https://github.com/mheily/relaunchd) ведётся работа по созданию порта системного менеджера Launchd (OS X), пригодного для использования во FreeBSD. В единый демон relaunchd сведены функции процесса init, системы стартовых скриптов rc.d и init.d, демонов inetd, atd, crond, и watchdogd. Из дополнительных функций отмечается управление запуском программ в jail-окружениях, передача дескрипторов сокетов их окружения хоста в jail, запуск программ в предопределённом sandbox-е capsicum. Формат файлов конфигурации основан на UCL, что позволяет определять параметры заданий в JSON и других форматах, поддерживаемых UCL. Relaunchd уже содержит всю базовую функциональность Launchd и добавлен в дерево портов, но пока позиционируется как экспериментальная разработка. Из планов по дальнейшему развитию отмечается поддержка перезапуска заданий в случае их краха, эмуляция cron, поддержка отслеживания изменений файлов и директорий, доведение до финального вида механизмов работы с jail;
- Продолжена разработка системного менеджера nosh (http://homepage.ntlworld.com./jonathan.deboynepollard/Softwa...), включающего набор средств для инициализации, загрузки, ведения логов, управления фоновыми процессами и терминалами. Nosh позиционируется как замена систем BSD init и NetBSD rc.d, вобравшая в себя черты таких систем, как Solaris SMF, daemontools-encore, UCSPI и средств IBM AIX по раздельному управлению системой и сервисами. Предоставляется набор прослоек для использования команд, ставших привычных в других системах, импорта существующих конфигурационных файлов /etc/fstab, /etc/rc.conf, /etc/rc.local и /etc/ttys, а также настроек изолированных окружений Jail и PC-BSD Warden.
Доступны возможности для определения порядка запуска сервисов, организации зависимостей между сервисами, обеспечения параллельного выполнения сервисов, автоматической ротации логов, отслеживания работы сервисов и применения kevent для обеспечения событийно-ориентированного параллелизма. Система переносимая, не зависит от особенностей ядра и может применяться как в BSD-системах, так и в Linux.
С момента публикации прошлого отчёта в Nosh реализованы инструменты для экспорта логов cyclog/multilog в удалённые обработчики логов, поддерживающие RFC 5426 (например, logstash). В подсистему работы с виртуальным терминалом добавлена возможность прямого обращения к USB-устройствам ввода, без задействования sysmouse. Добавлена полная поддержка систем, на которых имеются только разделы ZFS. Обеспечено преобразование настроек приоритетов из unit-файлов systemd для использования с rtprio/idprio. Добавлена поддержка mfs для /tmp. Для полной замены rc.d из 157 отмеченных в плане задач остаётся выполнить 27.
- Разработчики FreeBSD рассматривают возможность замены подсистем init и rc на более современную систему инициализации и управления сервисами, которая позволит сократить время загрузки благодаря распараллеливанию запуска сервисов, повысить надёжность работы за счёт автоматического перезапуска в случае сбоя, упростить управление зависимостями через такие техники как активация по обращению к сокету, обеспечить возможность запуска сервисов по мере необходимости и завершать их при длительной неактивности, увеличить безопасность сократив число компонентов, работающих под пользователем root. В настоящее время решение по замене пока не принято. На звание нового системного менеджера претендуют (http://www.daemonspawn.org/2016/01/a-comparison-of-alternati...) три проекта: relaunchd (https://www.opennet.ru/opennews/art.shtml?num=38692) (написанная с нуля реализация API launchd), развиваемый проектом NextBSD порт launchd (https://www.opennet.ru/opennews/art.shtml?num=42864) из OS X (реализован через прослойку с реализаций механизма межпроцессного взаимодействия микроядра Mach) и nosh, оригинальная разработка по мотивам launchd, systemd и других систем;
- Переработана (https://reviews.freebsd.org/rS292895) реализация кэша vnode, проведена оптимизация кода для распределения и чистки vnode;
- В sysctl добавлена (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203918) поддержка фиксированных типов (знаковые и беззнаковые 8-, 16-, 32 и 64-разрядные целые числа). Для отображения информации о типах в утилиту sysctl добавлена новая опция "-t";
- Близится к завершению проект миграции FreeBSD на инструментарий (http://elftoolchain.sourceforge.net) работы с исполняемыми файлами в формате ELF, эквивалентный набору GNU Binutils, но распространяемый под лицензией BSD. В настоящее время уже подготовлены BSD-версии библиотек libelf и libdwarf, а также утилит addr2line, nm, readelf, size, strings, as, ld и objdump и strip (elfcopy). Первый релиз запланирован на первый квартал 2016 года, из оставшихся задач отмечается добавление поддержки PE/COFF в elfcopy и адаптация системы сборки;
- Для платформ amd64 и arm64 по умолчанию задействован отладчик LLDB (https://wiki.freebsd.org/lldb), развиваемый (https://www.opennet.ru/opennews/art.shtml?num=26907) проектом LLVM. Из ещё не решённых задач отмечается реализация возможности использования LLDB для отладки разделяемых библи...
URL: https://lists.freebsd.org/pipermail/freebsd-announce/2016-Fe...
Новость: http://www.opennet.ru/opennews/art.shtml?num=43833