Intel представил сокращённый вариант сетевого стека для Linux
7 мая 2014 года
Разработчик из компании Intel представил для обсуждения и рецензирования в списке рассылки разработчиков ядра Linux упрощённую реализацию сетевого стека, рассчитанную на использование на маломощных встраиваемых системах. Разработка выполнена в процессе экспериментов по запуску Linux на системах с небольшим объёмом оперативной и постоянной памяти, таких как платы на базе процессоров Intel Quark, в которых может поставляться 2-4 Мб памяти.
В текущем виде, включение в сборку сетевого IPv4-стека Linux приводит к увеличению размера примерно на 400 Кб, что ставит крест на использовании традиционного стека на системах с 2 Мб памяти. Применение легковесного сетевого стека LWIP, работающего в пространстве пользователя, приводит к увеличению потребности в памяти каждого связанного с ним приложения примерно на 100 Кб. По мнению разработчиков, штатный сетевой стек ядра Linux сам по себе достаточно компактный, но раздувается из-за большого числа поддерживаемых функций.
Главная идея разработчиков из Intel связана с предоставлением возможности сборки урезанной версии сетевого стека, содержащей только минимально необходимую функциональность. Многие из расширенных возможностей штатного сетевого стека Linux востребованы только на серверных системах и могут быть удалены без негативного влияния на работу клиентских приложений. Такой урезанный стек может успешно конкурировать с LWIP.
Так как применение ifdef для исключения каждой порции излишнего кода отмечено как очень трудоёмкая задача, при создании патча разработчики Intel активно полагаются на использование техники оптимизации на этапе связывания (LTO). Основные ссылки на вызов опциональных компонентов экранируются через ifdef, а весь оставшийся без вызова используемый код чистится силами компилятора. Для некоторых возможностей, которые невозможно просто удалить, созданы упрощённые аналоги. В итоге, применение подготовленного патча с включением LTO-оптимизаций позволило сократить размер полнофункционального сетевого стека до 170 Кб.
Планируется подготовить три опции сборки:
- Урезанный универсальный стек;
- Подмножество стека для работы клиентских приложений. Из стека будет удалена поддержка таких возможностей, как fastopen, ping-сокетов, RPX, XPS и GRO offload, сокращен размер всех hash-таблиц, задействованы упрощённые таблицы маршрутизации, прекращено использование mmap, прекращено накопление TCP-метрик и статистики для SNMP;
- Максимально урезанный стек для встраиваемых систем, требующий запуска специально адаптированных приложений. При включении данной опции будет удалена поддержка rtnetlink (оставлен только ioctl), ethtool, LPF-фильтров и raw-сокетов.
Источники
правитьЛюбой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.