Компания Oracle представи първото стабилно издание на Unbreakable Enterprise Kernel 8 (UEK R8), вариант на ядрото на Linux, разработено за използване в дистрибутивa 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). При избор на следващия процес за изпълнение новият планировчик взема предвид процесите, които не са получили достатъчно CPU ресурси или са получили незаслужено много CPU време. В първия случай се принуждава предаване на контрола на процеса, а във втория, обратно, се отлага. Старият планировчик 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 пакета до 4ГБ за оптимизиране на работата на високоскоростни вътрешни мрежи на дата центрове. Такова увеличаване на размера на пакета при 16-битово поле в заглавката се постига чрез реализиране на "jumbo" пакети, чийто размер в IP заглавката е зададен на 0, а действителният размер се предава в отделно 32-битово поле в отделно прикрепено заглавие.
- За мрежовите сокети е реализирана опцията SO_RESERVE_MEM, с помощта на която може да се резервира определено количество памет за сокета, което винаги ще остане достъпно за него и няма да бъде иззето. Използването на тази опция позволява увеличаване на производителността чрез намаляване на операциите по выделяване и връщане на памет в мрежовия стек, особено при настъпване на условия на недостиг на памет в системата.
- Оптимизирана е производителността на пакетния планировчик fq (Fair Queuing), което повиши пропускната способност с 5% при високи натоварвания в теста tcp_rr (TCP Запитване/Отговор) и с 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) и възстановяване на файловата система в онлайн режим.
- В 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
