Недавно в нашем блоге мы рассказывали о релизе Linux kernel 4.17 и его основных фичах. В этом посте речь пойдет о версии 4.18, которая выйдет в августе.

О том, что будет сделано и что уже реализовано — рассказываем под катом.


/ фото Christopher Michel CC

Что будет в 4.18


Восьмого июля Линус Торвальдс с командой разработчиков из сообщества выпустили тестовый релиз 4.18-rc4 kernel. По словам Линуса, если всё и дальше будет хорошо, Linux kernel 4.18 увидит свет где-то в августе.

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

Linux kernel 4.18 ждет ряд и других улучшений. Далее, о некоторых из них.

Оптимизировано управление питанием всей системы

Разработчики серьезно взялись за энергоэффективность:

  • улучшили показатели iowait для Schedutil — регулятора CPUFreq, который использует данные планировщика процессора для определения его оптимальной рабочей частоты;
  • также улучшена работа «форсированного режима» (boost mode) iowait в драйвере CPUFreq Schedutil;
  • добавили драйвер CPUFreq для Qualcomm Kryo;

Отметим, что обещанных улучшений в работе регулятора P-State для систем с Intel Skylake, направленных на повышение производительности задач ввода/вывода, в этом релизе не будет. Скорее всего, они появятся в версии 4.19. Полный список апдейтов управления питанием (правда, для rc-1) можно глянуть на lkml.

Улучшения, связанные с безопасностью монтирования файловых систем

Эта проблема решается ещё с 2008 года: тогда был выпущен первый патч-сет с функцией mount(). Сейчас ведется работа над тем, чтобы позволить непривелигированным пользователям безопасно монтировать файловые системы с помощью механизма FUSE. Это должно защитить ядро от потенциальных уязвимостей.

Однако, как отмечает разработчик Дэйв Чиннер (Dave Chinner), над исключением рисков несанкционированного повышения привилегий при автоматическом монтировании файловой системы (например, с USB) предстоит еще дополнительно поработать.

Добавлена поддержка переноса TCP-данных с помощью zero copy

API дает читать данные из TCP-канала без их копирования между ядром и пространством пользователя. Обычно ядро «не знает», какие пакеты будут загружены через сетевой интерфейс, поэтому оно не в состоянии заранее определить получателя пакета, принятого буфером. В случае с zero copy буферы будут «связываться» с памятью пользовательского пространства после поступления пакета и его ассоциации с открытым сокетом. По мнению разработчиков, весь процесс станет более простым и предсказуемым.

Подсистема AF_XDP ускорит работу в сети

Её задача — позволить коду, выполняемому в пользовательском пространстве, более эффективно управлять пакетами, то есть использовать как можно меньше аппаратных ресурсов.

Bpfilter – основа для создания файрволов ядра нового поколения

Bpfilter — новый механизм фильтрации пакетов на базе виртуальной машины BPF. Суть его работы в том, что он позволяет создавать BPF-программы, которые можно «привязать» к точкам на пути следования сетевого пакета и при необходимости выполнять фильтрацию.

BPF позволяет писать правила для файрволов на С, что может стать хорошим подспорьем для разработчиков. Сам код будет проверяться верификатором BPF, который добавит дополнительный «слой» безопасности для всей системы.

Продолжается работа над проблемой 2038

В посте про релиз 4.17 мы упоминали проблему Y2038 — предполагаемые сбои в ПО из-за представления времени по стандарту POSIX, которые произойдут 19 января упомянутого года. Для решения этой проблемы разработчики добавляют фиксы для ряда систем в каждом обновлении. Например, апдейт 4.15 включал фиксы добавления меток времени для модуля безопасности TOMOYO, а также новую функцию счётчика времени, которая позволяет его «перезаводить».

В релизе 4.18 разработчики продолжают заниматься интерфейсами COMPAT. Они консолидировали заголовки SySV UAPI для метода обмена сообщениями IPC и конвертировали SySV IPC в новый механизм COMPAT_32BIT_TIME.


/ фото Christopher Michel CC

Что пока не вошло в релиз


В версию 4.18 решили не включать файловые системы Bcachefs, Reiser4 и NOVA, а также поддержку для VPN-туннеля WireGuard. Эти вещи, по мнению разработчиков, еще не готовы стать частью ядра. Также «за бортом» остались подсистема BUS1 и драйвер OpenChrome VIA DRM.

Всё это мы, возможно, увидим в 4.19 или 5.0. Что касается 4.18, то, как уже было отмечено, она выйдет где-то в начале-середине августа.



Основное направление нашей деятельности — предоставление облачных сервисов:

Виртуальная инфраструктура (IaaS) | PCI DSS хостинг | Облако ФЗ-152 | Аренда 1С в облаке




Пара статей по теме из нашего блога на Хабре:

Комментарии (14)


  1. arthi7471
    15.07.2018 19:15

    12309 по прежнему сохраняет свою полную работоспособность.


    1. rt3879439
      15.07.2018 20:46

      Включите уже blk-mq.


      1. nafgne
        15.07.2018 22:28

        Если бы всё было так хорошо, его включили бы по дефолту.


        1. rt3879439
          15.07.2018 22:56

          Не существует идеальной настройки одинаково подходящей под все задачи.


  1. win32asm
    15.07.2018 22:48

    А что с Рейзер4? Я думал, его по большей части забросили, и Шишкин сотоварищи его допатчивали по мере наличия (или отсутствия) времени к актуальным ядрам…


  1. fshp
    16.07.2018 00:38

    А ещё должны перестать отваливаться медленные usb устройства. В частности блютусы в WiFI+BT модулях. Если кто сталкивался с "Bluetooth: hci0 command 0x0406 tx timeout" или подобным. Багу 2 с половиной года.


    1. nafgne
      16.07.2018 02:16

      0_0
      А почему они отваливались? И почему только в начале работы, если это та проблема, которая меня мучает уже полгода?


      1. immaculate
        16.07.2018 03:29

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


        Вот и сейчас у меня есть Bluetooth колонка. С телефоном на Android (который тот же Linux) она работает. А с Ubuntu 18.04 — нет. После первого сопряжения работает, но если выключить и включить колонку или ноутбук, то уже не работает. Приходится вручную удалять сопряжение и сопрягать заново каждый раз, когда хочу ей воспользоваться.


        1. fshp
          16.07.2018 10:22

          Возможно у вас проблема с настройками pulse. Он умеет переключать source при коннекте, но в дефолтных конфигах этот модуль отключен. Так же нужно не забыть выставить профиль A2DP.


          1. immaculate
            16.07.2018 10:25

            Нет, дело именно в том, что устройство не подключается. В панели Gnome оно отображается как сопряженное, на секунду подключается и тут же отключается.


            Я планирую посмотреть как-нибудь, что при этом пишется в логи, просто сейчас на это совсем нет времени.


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


            Впрочем, когда у меня была девушка, а у нее был ноутбук с Windows, там с BT тоже были вечные проблемы. Так что возможно дело в самой технологии Bluetooth, а не конкретных реализациях.


            1. fshp
              16.07.2018 10:29

              Я уже давно не пользуюсь виджетом для блютуса. Только bluetoothctl + pactl. Тоже мучился с ним.


            1. BelBES
              16.07.2018 11:48

              Нет, дело именно в том, что устройство не подключается. В панели Gnome оно отображается как сопряженное, на секунду подключается и тут же отключается.

              Да, наблюдаю то же самое поведение при сопряжении BT наушников с Ubuntu 18.04… в принципе пересопрягать каждый раз не особо напрягает, но все же такое себе решение...


      1. fshp
        16.07.2018 10:20

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


  1. isden
    16.07.2018 09:05

    Bpfilter — новый механизм фильтрации пакетов на базе виртуальной машины BPF. Суть его работы в том, что он позволяет создавать BPF-программы, которые можно «привязать» к точкам на пути следования сетевого пакета и при необходимости выполнять фильтрацию.

    This mechanism allows the translation code to be managed as if it were just another part of the kernel. That code can be developed in user space, though. When it runs, the translation code will be separated from the kernel, making it harder to attack the kernel via that path. If this mechanism catches on, one can imagine that a number of other tasks could eventually be pushed out of the kernel proper into one of these special user-space modules. Developers should be careful, though; this could prove to be a slippery slope leading toward something that starts to look like a microkernel architecture.

    Что-то мне не очень нравится такая идея, хоть и пишут «will be separated from the kernel» :(