Какво ново предлага Linux ядрото версия 5.9

17
1600

След два месеца разработване Линус Торвалдс представи Linux Kernel версия 5.9. Сред по-важните нововъведения и промени в Linux 5.9 можем да посочим ограничаването на импорта на символи от фирмените модули в GPL модулите, ускоряване на операцията за превключване на контекста чрез използване на процесорната инструкция FSGSBASE, поддръжка на компресия за образа на ядрото с помощта на Zstd алгоритъма, нов начин за организация приоритетите на процесите и потоците в ядрото, поддръжката на протокола PRP (Parallel Redundancy Protocol), планиране с отчитане на пропускателната способност на deadline, предварително пакетиране на страниците на паметта, capability флага CAP_CHECKPOINT_RESTOR, системното извикване close_range(), повишаване производителността на dm-crypt, премахване на целия код за 32-битовите хост системи, новия механизъм slab за управление на паметта, поддръжката на inline криптиране в ext4 и F2FS, и други

В новата версия са направени 1604 промени от 2011 разработчици, размерът на образа е 63 MB, като промените са засегнали 14548 файла, добавени са 782155 реда сорс код, премахнати са 314792 реда. Около 45% от всички представени в новото Linux ядро промени се отнасят до обновяването на специфичния код за различните драйвери на хардуера – предимно за графичните процесори, 13% от промените са в мрежовия стек, 3% за файловите системи и 3% код за вътрешните подсистеми на Linux ядрото.

Основни промени и нововъведения в Linux Kernel 5.9

Памет и системни услуги
  • Засилена защита от използването на GPL методите за свързване на фирмените драйвери с компонентите на ядрото,  които могат да бъдат експортирани единствено за модулите с GPL лиценз
  • Добавена е поддръжката на на механизма kcompactd за предварително пакетиране на страниците памет във фонов режим, който дава възможност за увеличаване броя на страниците памет, достъпни на ядрото. По предварителна оценка, този метод от 70 до 80 пъти намалява латентността при заделянето на големи страници памет (huge-page) в сравнение с използвания досега механизъм за пакетиране, който се стартираше само при възникване на необходимост (on-demand)
  • Добавена е компресия на образа на Linux ядрото с помощта на алгоритъма Zstandard (zstd)
  • За х86 системите е реализирана поддръжката на процесорната инструкция FSGSBASE, позволяваща четенето и промяната на FS/GS регистрите от потребителското пространство. В самото ядро FSGSBASE се използва за ускоряване на операциите по превключването на контекста чрез премахването на излишните операции по записа на данни в MSR регистрите за GSBASE, а действията в потребителското пространство могат да се извършват без излишните допълнителни системни извиквания за промени във FS/GS
  • Добавен в параметърът allow_writes позволяващ забраната за извършване на промени в MSR регистрите на процесора от пространството на потребителя. По подразбиране записът в тези регистри е разрешен, а промените в MSR се записват в системния журнал
  • В интерфейса на асинхронния вход/изход io_uring е добавена пълната поддръжка на асинхронни операции за буферирано четене, които не изискват привличането на потоци от Linux ядрото. Поддръжката на асинхронен запис се очаква в следващата версия на ядрото
  • Алгоритъмът за консумация на енергия от страна на ядрото (фреймуъркът Energy Model) сега извършва мониторинг не само на централния процесор, но и на периферията
  • От текстовата конзола и от драйвера fbcon е премахнат кода, осигуряващ възможността за софтуерно превъртане на текста назад (CONFIG_VGACON_SOFT_SCROLLBACK) повече, отколкото е капацитета на VGA текстовия режим
  • Добавен е sysctl sched_uclamp_util_min_rt_default за управление на параметрите за форсиране честотата на процесора за задачите, работещи в реално време. По този начин е възможно моменталната промяна на поведението при изпълняване на задачи в реално време при прехода от стационарно към захранване от батерии
  • В звуковата подсистема ALSA  и в USB стека в съответствие с наскоро дадените препоръки за използване на коректна терминология в Linux ядрото са премахнати думите slave, master, blacklist и whitelist
Виртуализация и безопасност
  • При компилирането на Linux ядрото с използване на компилатора Clang е добавена възможност за настройка на автоматично инициализиране на нулеви значения всички променливи, записвани в стека (при компилацията трябва да се укаже -ftrivial-auto-var-init=zero)
  • За архитектурите xtensa и csky  е добавена поддръжката на ограничаване на системните извиквания с помощта на подсистемата seccomp
  • В GCC 11 са реализирани всички възможности необходими за нормалната работа на дебъгера KCSAN (Kernel Concurrency Sanitizer), предназначен за динамично наблюдаване процесите в ядрото По този начин става възможно използването на KCSAN в ядрата, компилирани с GCC
  • За AMD Zen и по-новите модели процесори е добавена поддръжката на технологията P2PDMA, даваща възможност за използване на DMA за директен обмен на данните между паметите на две устройства, включени към PCI шината
  • В dm-crypt е добавен нов режим, даващ възможност за осезателно намаляване на латентността чрез извършване на криптографска обработка на данните без използването на работни опашки. Повишена е пропускателната способност и са намалени таймингите на dm-crypt
  • Премахнат е кода за поддръжката на 32-битови хост системи в хипервайзора Xen, Препоръчва се или преминаването към използването на 64-битови ядра на операционната система хост, или пълна (HVM), или комбинирана (PVH)  виртуализация
Дискова подсистема вход/изход и файлови системи
  • Във файловата система Btrfs е реализирана новата опция за монтиране rescue, унифицираща достъпа до всички други опции за възстановяване. Оптимизирана е производителността, като особено силно е ускорено изпълнението на операцията fsync(). Добавена е възможността за използването на алтернативни типове контролни суми, различни от CRC32c
  • Добавена е възможността за inline криптиране (Inline Encryption)  във файловите системи ext4 и F2FS. За включването на този механизъм е предвидена опцията за монтиране inlinecrypt. Режимът на inline криптиране дава възможност за директното използване на вградените в различните контролери хардуерни механизми за криптиране, които осъществяват прозрачно криптиране и декриптиране на входните и изходните данни
  • За NVMe флаш дисковете е добавена командата за поддръжка на зони в запомнящото устройство (ZNS, NVM Express Zoned Namespace), позволяваща разделянето на пространството за запис на данни на зони, съставени от групи блокове, като по този начин се постига по-пълното управление на разполагането на данни на диска
Мрежова подсистема
  • В Netfilter е добавена възможност за отклоняване на мрежовите пакети още преди проверката на маршрутизацията
  • В nftables е добавена възможност за мониторинг на събитията, свързани с промени в конфигурацията
  • В BPF е поддържат итератори за заобикаляне, филтриране и промени на елементите на асоциативните масиви (map) без да се използва копиране на данни в пространството на потребителя
  • Реализирана е поддръжката на протокола PRP (Parallel Redundancy Protocol), даващ възможност на базата на Ethernet да се реализира прозрачно за приложенията превключване към резервен канал при сривове в основните компоненти на мрежата
  • В mac80211 стека е добавена поддръжката на четириетапно съгласуване на WPA/WPA2-PSK канала в режим на хотспот точка
  • В безжичния драйвер ath11k е добавена поддръжката на 6 GHz честота, спектрален анализ и зониране
  • Добавени са нови възможности за MPTCP (MultiPath TCP) – разширение на TCP протокола за организация работата на TCP връзките с паралелна доставка на мрежовите пакети по няколко маршрута
Хардуер
  • Премахнат е кодът за UniCore архитектурата, разработена в процесорния сектор на университета в Пекин и който бе включен в състава на Linux ядрото през 2011 година. Тази процесорна архитектура няма поддръжка от 2014 година, за нея няма нова документация и вече не се поддържа от GCC компилатора
  • За архитектурата RISC-V е реализирана поддръжката на kcov (debugfs интерфейс) за детайлен анализ кода на ядрото, kmemleak за откриване изтичането на памет, интегрирани са защита на стека и извършването на tickless операции – независима от сигналите на таймера многозадачност
  • За архитектурата PowerPC е реализирана поддръжката на опашки за spinlock, която значително повишава производителността в ситуации с възникването на конфликти в блокирането
  • За процесорните архитектури ARM и ARM64 по подразбиране е включен механизмът schedutil (cpufreq governor) за регулиране честотата на чипа, който дава възможност за директното използване на cpufreq драйверите за моментална промяна на честотата на процесора в зависимост от натоварването
  • В DRM драйвера i915 за графичните ускорители на Intel е включена поддръжката на чипове, базирани на архитектурите Rocket Lake и е добавена началната поддръжка на видеокартите Intel Xe DG1.
  • В драйвера amdgpu е добавена началната поддръжка на графичните процесори AMD Navi 21 (Navy Flounder) и Navi 22 (Sienna Cichlid). Добавена е и поддръжката на енджините за кодиране и декодиране на UVD/VCE видео за GPU Southern Islands (Radeon HD 7000). Добавена е опция за завъртане на изображението на 90, 180 и 270 градуса

Интересно е, че драйверът за графичните процесори на AMD е най-големият драйвер в Linux Kernel 5.9. Той има 2,71 милиона реда сорс код, което е около 10% от общия размер на ядрото (27,81 милиона реда). При това 1,79 милиона реда от този код са автоматично генерираните заглавни файлове с данни за регистрите на GPU, самият код на програмния език C е с 366 хиляди реда код. За сравнение, драйверът Intel i915 има 209 хиляди реда, а Nouveau – 149 хиляди

  • В драйвера Nouveau е добавена поддръжката на кадрова проверка на целостта с помощта на CRC (Cyclic Redundancy Checks) в екранните енджини за графичните процесори на Nvidia. Реализацията се базира на документацията, предоставена от самата Nvidia
  • Добавени са нови драйвери за следните LCD панели: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 и Xingbangda XBD599
  • В звуковата подсистема ALSA е реализирана поддръжката на Intel Silent Stream (режим на постоянна поддръжка на захранването на външните HDMI устройства за премахване на неприятното забавяне в началото на възпроизвеждането) и на новото устройство за управление подсветката на бутона за активиране на микрофона и изключване на звука. Добавена е поддръжката на нов хардуер, включително контролера Loongson 7A1000
  • Добавена е поддръжката и на следните ARM платки, устройства и платформи: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (използва се в Sony Xperia 10, 10 Plus, XA2, XA2 Plus и XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, пет нови платки на базата на NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H

Едновременно с това латиноамериканската Фондация за свободен софтуер традиционно сформира вариант на изцяло свободното Linux ядро версия 5.9. Това е Linux-libre 5.9-gnu, изцяло изчистено от каквито и да било елементи на фърмуери и драйвери, съдържащи несвободни елементи код, използването на които по някакъв начин е ограничено от производителя. В тази версия е изключено зареждането на блобоветев от драйверите за WiFi rtw8821c и SoC MediaTek mt8183. Кодът е изчистен и от блобовете в драйверите и подсистемите Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) и x86 touchscreen.

4.3 7 гласа
Оценете статията
Абонирай се
Извести ме за
guest
17 Коментара
стари
нови оценка
Отзиви
Всички коментари