Ядро Linux распределяет процессы эффективнее и улучшает подкачку памяти.




Линус Торвальдс выпустил версию 7.2 ядра Linux точно к запланированному сроку. При этом, как отметил Торвальдс в своем релизном письме (открывается в новом окне), предыдущая неделя оказалась более напряженной, чем ему хотелось бы. Некоторые изменения пришлось отозвать в последнюю секунду, например, в планировщике системы рендеринга DRM (Direct Rendering Manager).

Самые значительные изменения, выделенные в обзоре Kernel Newbies (открывается в новом окне), направлены на повышение эффективности. Планировщик DRM, несмотря на откаты, получает новый алгоритм, ориентированный на Completely Fair Scheduler (CFS) ядра Linux. Новый подход должен давать лучшие результаты при распределении вычислительного времени графических карт, чем использовавшийся до сих пор подход FIFO (First in, first out). Планировщик CPU, в свою очередь, теперь учитывает в своих решениях структуру кэша.

Так называемое кэш-ориентированное планирование (Cache-Aware Scheduling, открывается в новом окне) должно распределять параллельно выполняемые компоненты приложений (потоки), которые используют общие данные, таким образом, чтобы они использовали один и тот же Last Level Cache (LLC). Пока предполагается (открывается в новом окне), что это верно только для потоков одного процесса, более сложные алгоритмы находятся в разработке.

Этот подход должен обеспечить лучшую кэш-локальность и, следовательно, более высокую производительность на таких процессорах, как AMD Epyc, где каждый чиплет реализует часть LLC (в данном случае L3-кэша), или на серверах с несколькими сокетами.

Улучшения в подкачке и файловых системах

Улучшения алгоритма определения страниц памяти, подлежащих выгрузке в swap-память, также должны принести прирост производительности — до 30 процентов, например, для MongoDB. Некоторые элементы файловой системы proc теперь также читаются быстрее.

Среди драйверов файловых систем стоит выделить NTFS и Btrfs. Первый поддерживает нативные символьные ссылки Windows (символические ссылки), второй работает эффективнее при последовательной записи и прямом вводе-выводе (direct I/O). Кроме того, драйвер Btrfs по умолчанию использует так называемые Large Folios. При этом несколько последовательных страниц памяти логически объединяются (открывается в новом окне), что может сделать доступ и управление более эффективными. Текущая реализация, экспериментально введенная в ядре 6.17, использует folios максимум с 64 страницами по 4 кБайта. В качестве новой экспериментальной функции были добавлены Huge Folios с 512 страницами, то есть до 2 Мбайт.

HDMI 2.1 приходит, i486 уходит

Ранее уже было известно, что AMD работает над поддержкой HDMI 2.1 для Linux. Соответствующий код был включен в ядро 7.2, как и изменения, удаляющие механизмы совместимости для старых x86-процессоров. Таким образом, после многих лет обсуждений прекращается поддержка процессоров 486, а также некоторых 586-х без TSC (Timestamp Counter) и операции CMPXCHG8B.

Помимо этого, есть несколько второстепенных, но все же заслуживающих упоминания новшеств: Ядро 7.2 помимо Thunderbolt Networking для USB4-соединений теперь поддерживает также стриминг. Это позволяет записывать данные на одном конце соединения, как в файл, и читать их на другом, как из файла. Преимущество по сравнению с Thunderbolt Networking заключается в том, что не требуется сетевой стек.

Также новой является поддержка носителей данных со встроенным шифрованием через модуль dm-inlinecrypt. С выпуском ядра 7.2 открывается окно слияния (merge window) для версии 7.3, которая должна появиться через два месяца. По словам Торвальдса в его письме о выпуске ядра 7.2, для нее уже имеется 40 pull-запросов.