Излезе Linux ядрото 5.7: нововъведения и промени

0
1062

След два месеца разработване Линус Торвалдс представи Linux ядрото версия 5.7. Сред най-важните нововъведения са реализацията на файловата система exFAT, модулът bareudp за създаването на UDP тунели, защита чрез автентификация на указателите за exFAT, възможност за прикачване на BPF програмите към LSM манипулаторите, новата реализация на Curve25519, детекторът на split-lock, съвместимостта на BPF с PREEMPT_RT, премахнатото ограничение на дължината от 80 символа в сорс кода, използване температурата на графичния процесор като условия за задаване на събития, защита на паметта от чете и запис с помощта на userfaultfd.

В новата версия са направени 15033 промени от 1961 разработчици. Размерът на ъпдейта е 39 MB, като промените са засегнали 11590 файла. Добавени са 570560 реда сорс код и са премахнати 297401 реда код. Около 41% от всички представени в Linux Kernel 5.7 промени са свързани с драйверите на различните устройства. Около 16% имат отношение към специфичните хардуерни архитектури, 13% са на мрежовия стек, 4% – на файловите системи и 4% са свързани с вътрешните подсистеми на Linux ядрото.

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

Дискова подсистема, вход/изход и файлови системи

Добавена е нова реализация на exFAT драйвера, базирана на актуалната към днешен ден кодова база sdfat (2.х), разработвана от компанията Samsung за своите Android смартфони. Досега ядрото на този драйвер използваше остарелия код на Samsung от версия 1.2.9 и бе с около 10% по-бавно.

В Btrfs е реализиранана новата команда ioctl() – BTRFS_IOC_SNAP_DESTROY_V2, даваща възможност за премахване на раздел по неговия идентификатор. Осигурена е цялостната поддръжка на клонирането на inline разширенията.

В XFS е подобрена проверката на метаданните и изпълнението на fsck за активните дялове. Предложена е нова програмна библиотека за реконструкция на btree, която в бъдеще ще се използва за преработването на xfs_repair и е реализирана възможността за възстановяване без да се налага демонтиране на дяла.

В CIFS е добавена експериментална поддръжка на SWAP файла в SMB3 хранилищата. Реализирани са POSIX разширенията в SMB3.1.1. Повишена е производителността при страниците с размер 64 KB при включен режим cache=strict.

Файловата система EXT4 е прехвърлена от bmap и iopoll към iomap.

В F2FS е реализирана опционална поддръжка на компресия на данните с използването на LZ4 алгоритъма.

Във файловата система Ceph е добавена възможност за локално изпълнение на операциите по създаване и премахване (unlink) на файла без да се чака отговор от сървъра (работа в асинхронен режим). Тази промяна значително ускорява производителността на помощната програма rsync.

В OVERLAYFS е добавена възможност за използването на virtiofs в качеството на файлова система от по-високо ниво.

Мрежова подсистема

В Netfilter са направени промени, значително ускоряващи работата с големи списъци за съпоставяне (nftables set), в които се налага проверка на съчетанията на подмрежите, мрежовите портове, протокола и MAC адресите. Оптимизациите са направени в модула nft_set_pipapo (PIle PAcket POlicies) решаващ задачата по съпоставяне на мрежовия пакет с използваните във филтрите правила с произволен диапазон на състоянията на полетата, като например IP диапазоните и мрежовите портове. Векторизираната с помощта на 256-битовите AVX2 инструкции версия на pipapo в компютърни системи с процесори AMD Epyc 7402 показва ръст на производителността с впечатляващите 420% при обработването на 30 000 записа, включващи двойки порт-протокол. Ръстът на производителността при съпоставянето на двойки от подмрежи и номер на порта при 1000 записа е 87% при IPv4 протокола и 128% при IPv6.

Добавен е новия модул bareudp, даващ възможност за инкапсулиране в UDP на различни L3 протоколи, като MPLS, IP и NSH

Продължава интеграцията на MPTCP (MultiPath TCP) компонентите, разширенията на TCP протокола за организиране работата на TCP връзките с доставката на мрежови пакети по няколко маршрута едновременно чрез различни мрежови интерфейси с различни IP адреси.

Добавена е възможност за използването на специализирани хардуерни ускорители за операциите по проследяване на връзките.

При преместването на устройство от едно пространство на имената на мрежовата подсистема (network namespace) към друго, е осигурено правилното коригиране на правата за достъп.

Предоставена е възможност за използването на флага SO_BINDTODEVICE на потребители, които няма root права.

Приета е третата част на пачовете, прехвърлящи инструментариума ethtool от ioctl() към използването на netlink интерфейса. Новият интерфейс опростява добавянето на разширения, подобрява обработването на грешките, дава възможност за изпращането на уведомления при промяна на състоянието, опростява взаимодействието между ядрото и потребителското пространство и намалява броя на използваните синхронизирани списъци.

Виртуализация и безопасност

Добавена е хардуерната поддръжка на идентификацията на указателите (Pointer Authentication), използваща специалните инструкции на ARM64 процесорите за защита от атаки, при които хакерът не се опитва да помести своя код в паметта, а използва във вече заредените в паметта програмни библиотеки късчета машинни инструкции. Тази защита използва цифрови подписи за проверка на адресите за връщане на управлението на ниво Linux ядрото. Подписът се записва в неизползваните най-горни битове на самия указател. За разлика от различните софтуерни решения за създаване и проверка на цифровите подписи, тук се използват специализираните инструкции на процесорите.

Добавена е възможност за защита на област памет от запис с помощта на системното извикване userfaultfd(), предназначено за обработването на page faults (обръщения към незаделени страници в адресното пространство на потребителя).

Добавен е нов механизъм за информиране за свободните страници на паметта. С помощта на този механизъм операционните системи гости ще могат да подават към системата домакин информация за страниците, които повече не се използват и тези страници хостът може да си ги вземе обратно и да ги използва.

В vfio/pci е добавена поддръжката на SR-IOV (Single-Root I/O Virtualization).

Памет и системни услуги

От 80 на 100 символа е увеличено ограничението за максималната дължина на редовете в сорс кодовете. При това на разработчиците се препоръчва да се ограничават до 80 символа на ред, но сега това не е твърдо ограничение. Чрез тази промяна програмистите няма да си отвличат вниманието с манипулации на спейсове и по-свободно ще могат да подравняват кода. Това нововъведение предотвратява излишното разделяне на редовете със сорс код, което пречи на възприемането на кода и на търсенето на определени блокове сорс код.

Добавена е поддръжката на смесен режим на зареждането на EFI, който дава възможност без използването на специализирана зареждаща програма да се зареди 64-битово Linux ядро от 32-битов фърмуер и да се стартира на 64-битов процесор.

В Scheduler-а е осигурен мониторинг на сензора за температура на графичния процесор (Thermal Pressure) и е възможно да се зададе като условие прегряването на GPU при задаване изпълнението на различните задачи. Чрез тази информация е възможно да се отчете възможния спад на мощността поради вероятно понижаване на работната честота.

Добавена е възможност за използване на системното извикване clone3() за създаването на процес в cgroup, който се различава от родителския cgroup, което дава възможност на родителския процес да приложи съответните ограничения.

В debugfs е добавена секцията /sys/kernel/debug/kunit/ с резултатите от kunit тестовете.

Добавен е новия параметър за зареждане на ядрото pm_debug_messages (аналог на /sys/power/pm_debug_messages), който включва извеждането на информация за настройка работата на системата за управление на захранването.

Реализацията на елиптичната крива Curve25519 е заменен на вариант от библиотеката HACL, за който бе представено математическо доказателство по отношение проверката на надеждността.

В Scheduler-а вече се използва инвариантен мониторинг на натоварването, даващ възможност за коректна оценка на натоварването, независимо от текущата тактова честота на централния процесор. Така например, при алгоритъм, при който се използва 1/3 от ресурса на CPU при честота 1000 MHz, същият алгоритъм ще започне да консумира 2/3 от ресурса при понижаване на честотата до 500 MHz, като преди това се създаваше лъжливо предположение за работа с пълна мощност.

Подобрено е профилирането на cgroup с помощта на инструментариума perf.

Добавен е фреймуъркът Uacce (Unified/User-space-access-intended Accelerator Framework) за съвместното използване на виртуалните адреси (SVA, Shared Virtual Addressing) от CPU и периферните устройства.

Архитектури

За ARM архитектурата в реализирана възможността за горещо изваждане на паметта

За RISC-V е добавен поддръжката за горещо изключване на CPU (CPU hotplug).

Премахната е възможността за използването на 32-битови ARM системи за стартирането на KVM среди.

Премахната е „фиктивната“ реализация на NUMA за архитектурата s390, за която така и не бяха намерени сценарии за използване, които дават възможност за повишаване на производителността.

За ARM64 е добавена поддръжката на разширението AMU (Activity Monitors Unit), определено в ARMv8.4, което предоставя броячи на производителността, които могат да се използват за точни корекции в мащабирането на честотата при планирането на задачите.

Хардуер

Добавена е поддръжката на vDPA устройствата, в които се използва канал за обмен на данните, съответстващ на virtio спецификациите. vDPA устройствата могат да бъдат както физически включени към компютърната система, така и емулирани виртуални устройства.

В DRM драйвера i915 за графичните ускорители на Intel по подразбиране е включена поддръжката на чиповете Tigerlake („Gen12“) и е добавена началната поддръжка на управлението на OLED подсветката. Подобрена е поддръжката на чиповете  Ice Lake, Elkhart Lake, Baytrail и Haswell.

В драйвера amdgpu е добавена възможност за зареждане на фърмуери чрез USBC за ASIC. Подобрена е поддръжката на чиповете AMD Ryzen 4000 „Renoir“. Добавена е поддръжката на OLED панелите. Осигурено е показване състоянието на фърмуера в debugfs

В DRM драйвера vmwgfx за системата за виртуализация VMware е добавена възможността за използването на OpenGL 4 в операционните системи гости (досега се поддържаше (OpenGL 3.3).

Добавен е новият DRM драйвер tidss за дисплейната система на платформата TI Keystone.

Добавени са драйвери за следните LCD панели: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.

В подсистемата за управление на захранването е добавена поддръжката на платформата Intel Jasper Lake (JSL) на базата на Atom.

Добавена е поддръжката на лаптопа Pinebook Pro базиран на Rockchip RK3399, таблета Pine64 PineTab и смартфона PinePhone на базата на системата върху чипа Allwinner A64.

Добавена е поддръжката на следните нови хардуерни аудио кодеци и чипове: Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.

Добавена е поддръжката на ARM платките и платформите Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron „sl28“, 11-те версии на платките i.MX6 TechNexion Pico, на трите нови варианта Toradex Colibri, Samsung S7710 Galaxy Xcover 2 на базата на ST-Ericsson u8500, DH Electronics DHCOM SoM и PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

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