Компания Oracle представи първия стабилен вариант на Unbreakable Enterprise Kernel 8 (UEK R8), версия на ядро Linux, разработвано за използване в дистрибуцията Oracle Linux като алтернатива на стандартния пакет с ядро от Red Hat Enterprise Linux. Ядрото е достъпно само за архитектурите x86_64 и ARM64 (aarch64). Изходният код на ядро, включително отделните пачове, е публикуван в публично Git репозиторий на Oracle.
Пакетът Unbreakable Enterprise Kernel 8 е базиран на ядро Linux 6.12 (версия UEK R7 беше базирана на ядро 5.4, а в бета версията на RHEL 10 беше предложено ядро 6.11), което е обогатено с нови функции, оптимизации и поправки, и е проверено за съвместимост с повечето приложения, работещи в RHEL, и оптимизирано за работа с промишлен софтуер и оборудване на Oracle. Инсталационните и src пакети с ядро UEK R8 са подготвени за Oracle Linux 9.5 (няма пречки за използването на това ядро в аналогични версии на RHEL, CentOS, Alma Linux и Rocky Linux).
Ключови новости в Unbreakable Enterprise Kernel 8:
- Разделението на компонентите на ядро UEK е променено на отделни пакети. Модулите на ядрото са отделени от основния образ на ядрото и са включени в колекции, предоставяни в отделни пакети: kernel-uek-modules-core (базов минимум), kernel-uek-modules (за сървъри), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb и kernel-uek-modules-wireless. Свързаните утилити са преместени от основния пакет kernel-uek-core в отделен пакет kernel-uek-tools. Файловете за конфигурация със списък на забранените за зареждане модули са преименувани от ‘blacklist’ на ‘denylist’ в рамките на инициативата за използване на инклюзивна терминология.
- За системите ARM Ampere, използвани в Oracle Cloud, е формирана отделна версия на ядрото kernel-uek64k, при която основният размер на страниците памет е увеличен от 4 на 64 КБ.
- Добавена е поддръжка за предоставяната от Intel SGX2 (Software Guard Extensions) хардуерна реализация на механизма EDMM (Enclave Dynamic Memory Management), който позволява управление на достъпа до отделни страници памет в анклава и динамично добавяне/изтриване на страници памет за анклава.
- В драйвера Intel QAT с поддръжка на устройства Intel Quick Assist Technology (QAT) е добавена поддръжка за 4-то поколение процесори Intel Xeon.
- Добавена система за откриване на разделени блокировки („split-lock“), които възникват при достъп до не подравнени данни в паметта, тъй като при изпълнението на атомарна инструкция данните преминават през две кеш линии на CPU. Подобни блокировки водят до значително намаляване на производителността (с 1000 цикъла по-бавно, отколкото атомарната операция с данни, попадащи в една кеш линия).
- Реализиран е нов метод за защита от уязвимостта Retbleed в CPU на Intel и AMD, използващ проследяване на дълбочината на повикванията, който не забавя работата толкова много, колкото предишната защита от Retbleed.
- На системите x86 е осигурено едновременна активиране на вторични ядра на CPU, което е позволило да се съкрати времето за зареждане на ядрото на системи с голям брой ядра.
- Добавен е параметър на командния ред на ядрото „ia32_emulation“, позволяващ по време на зареждане да се включва и изключва поддръжката на емуляция на 32-битен режим в ядра, изградени за архитектура x86-64.
- По подразбиране вместо CFS (Completely Fair Scheduler) е задействан планировчикът EEVDF (Earliest Eligible Virtual Deadline First). При избора на следващия процес за предаване на изпълнение, новият планировчик взема предвид процесите, които не са получили достатъчно ресурси на процесора или са получили незаслужено много време на процесора. В първия случай се принуждава предаването на управлението на процеса, а във втория, обратно, се отлага. Старият планировчик CFS използваше хевристики и финни настройки, за да определи процесите, изискващи специално внимание, докато новият планировчик ги проследява по-ясно и не изисква фини настройки. EEVDF ще позволи да се намалят забавянията при изпълнението на задачи, с които CFS имаше проблеми с планирането.
- Продължава доставката на системата за динамична отладка DTrace 2.0, която е преместена на използването на подсистемата на ядрото eBPF. DTrace 2.0 функционира над eBPF, подобно на начина, по който съществуващите инструменти за проследяване в Linux работят над eBPF.
- В хипервизора KVM е разрешено използването на до 4096 виртуални CPU (VCPU).
- Продължава използването на KTLS, реализация на протокола TLS на ниво ядро.
- Обновена е имплементацията на генератора за псевдослучайни числа RDRAND, отговорен за работата на устройството /dev/random, която е пренесена на употребата на хеш-функцията BLAKE2s вместо SHA1 за смесване на ентропия. Това изменение е увеличило безопасността на генератора за псевдослучайни числа. За ускоряване на получаването на случайни числа чрез системния повик getrandom() е внедрен механизъм vDSO (виртуален динамичен споделен обект), който прехвърля обработчика на системния повик от ядрото в пространството на потребителя, за да се избегнат превключвания на контекста.
- Добавена е поддръжка на разширението BIG TCP, което позволява увеличаване на максималния размер на TCP пакета до 4GB за оптимизиране на работата на високоскоростни вътрешни мрежи в дата-центровете. Такова увеличаване на размера на пакета с 16-битово поле в заглавката се постига чрез реализиране на „jumbo“ пакети, чийто размер в IP заглавката е зададен на 0, а действителният размер се предава в отделно 32-битово поле в прикрепено заглавие.
- За мрежовите сокети е реализирана опцията SO_RESERVE_MEM, с помощта на която може да се резервира определен обем памет за сокета, който винаги ще остава достъпен за него и няма да бъде изтеглен. Използването на тази опция позволява увеличаване на производителността чрез намаляване на операциите по разпределяне и връщане на памет в мрежовия стек, особено при условия на нехватка на памет в системата.
- Извършена е оптимизация на производителността на планирача на пакети fq (Fair Queuing), която е повишила пропускателната способност с 5% при голямо натоварване по време на теста tcp_rr (TCP Request/Response) и с 13% при неограничен поток от UDP пакети.
- Извършена е реорганизация на мрежовите структури на ядрото с цел повишаване на ефективността на кеширането на данни от процесора, което е увеличило производителността на TCP стека на системи, обслужващи голям брой паралелни заявки.
- Добавена е поддръжка на библиотеката ASMLib 3 за автоматично управление на хранилището в СУБД Oracle.
- Извършена е работа по оптимизация на производителността и повишаване на сигурността на механизма за асинхронен вход/изход io_uring. Добавени са базирани на io_uring оптимизации за файловите системи XFS и Ext4, осигуряващи възможност за паралелна директна записа в файл в няколко потока.
- Подобрена поддръжката на файловата система Btrfs. За устройства, поддържащи trim/discard, по подразбиране е активирана опцията за монтиране «discard=async», която позволява изпълнението на тези операции спонтанно за всички файлови системи. Добавена е поддръжка за изпращане и получаване на компресирани данни без преобразувания. Въведена е поддръжка за запис на блокове по-големи от 64 КБ. Облегчено е отчитането на квоти. Реализирана е поддръжка за монтиране на клонирани устройства. Подобрени са проверките за запис в режим NOCOW (пропускливостта е увеличена с 9%). Добавени са опции за монтиране «ignoremetacsums» и «ignoresuperflags» за игнориране на неверни контрольни суми на метаданни и флагове на суперблока. Осигурено е изпълнението на задачи по премахване на устройства, балансировка и преразпределение на блокове в паралелен режим.
- В файловата система XFS е разрешено използването на размер на блока, надвишаващ размера на страница в паметта. Добавени са големи броячи на екстенти за много големи виртуални дискове. Въведен е режим за атомарно фиксиране (commit) на съдържанието на файловете. Предложена е експериментална реализация на проверка (fsck) и възстановяване на файловата система в online режим.
- В NFS по подразбиране е активирана операцията READ_PLUS, определена в спецификацията NFS 4.2 и използвана за по-ефективно четене на данни от файлове, съдържащи празноти.
- Системата за управление на паметта е преминала на използване на структура от данни folios (фолианти на страниците на паметта). Фолиантите наподобяват обединени страници на паметта (compound pages), но се отличават с подобрена семантика и по-разбираема организация на работата.
- За операциите с мапинг на паметта е използвана структура от данни «maple tree», която се представя като по-ефективна заменка на структурата «red-black tree». Maple tree представлява вариант на B-tree, поддържащ индексация по диапазони от стойности и проектиран за ефективно използване на кеша. модерни процесори.
- В mmap са реализирани заключвания на ниво отделни VMA (Virtual Memory Area), позволяващи да се повиши производителността на многопоточни приложения.
- Добавена е структура от данни ptdesc, оптимизираща работата с таблиците на страниците в паметта чрез разделяне на структурите с метаданни и данни за страниците в паметта.
Източник: opennet.ru
