Oracle Company je predstavil prvo stabilno izdanje Unbreakable Enterprise Kernel 8 (UEK R8), različico jedra Linux, ki se razvija za uporabo v distribuciji Oracle Linux kot alternativa privzetemu paketu z jedrom Red Hat Enterprise Linux. Jedro je na voljo le za arhitekture x86_64 in ARM64 (aarch64). Izvorna koda jedra, vključno z razdelitvijo na posamezne popravke, je objavljena v javnem Git repozitoriju Oracle.
Unbreakable Enterprise Kernel 8 temelji na jedru Linux 6.12 (izdaja UEK R7 je temeljila na jedru 5.4, medtem ko je bila v beta različici RHEL 10 ponujena različica jedra 6.11), ki je obogatena z novimi možnostmi, optimizacijami in popravki, in je bila preverjena za združljivost z večino aplikacij, ki delujejo v RHEL, ter optimizirana za delo s programsko opremo in opremo Oracle. Namestitveni in src-paketi jedra UEK R8 so pripravljeni za Oracle Linux 9.5 (ni nobenih ovir za uporabo tega jedra v podobnih različicah RHEL, CentOS, Alma Linux in Rocky Linux).
Ključne novosti Unbreakable Enterprise Kernel 8:
- Spremenjena je razdelitev komponent jedra UEK na neodvisne pakete. Jedrski moduli so ločeni od osnovne različice jedra in so preneseni v kolekcije, dostavljene v posameznih paketih: kernel-uek-modules-core (osnovni minimum), kernel-uek-modules (za strežnikov), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb in kernel-uek-modules-wireless. Spremljevalna orodja so iz osnovnega paketa kernel-uek-core prenesena v ločen paket kernel-uek-tools. Datoteke s konfiguracijo, ki vsebujejo seznam modulov, prepovedanih za nalaganje, so preimenovane iz 'blacklist' v 'denylist' v okviru pobude za uporabo vključujoče terminologije.
- Za sisteme ARM Ampere, ki se uporabljajo v Oracle Cloud, je oblikovana posebna različica jedra kernel-uek64k, osnovna velikost pomnilniških strani pa je povečana s 4 na 64 KB.
- Dodana je podpora za strojno implementacijo mehanizma EDMM (Enclave Dynamic Memory Management), ki ga ponuja Intel SGX2 (Software Guard Extensions), kar omogoča upravljanje dostopa do posameznih pomnilniških strani v enklavi in dinamično dodajanje/odstranjevanje pomnilniških strani za enklavo.
- V Intel QAT gonilniku, ki podpira naprave Intel Quick Assist Technology (QAT), je bila dodana podpora za četrto generacijo procesorjev Intel Xeon.
- Dodana je sistem za detekcijo razdeljenih zaklenitev ('split-lock'), ki se pojavi pri dostopu do neporavnanih podatkov v pomnilniku zaradi tega, ker pri izvajanju atomske operacije podatki prečkajo dve CPU predpomnilniški vrstici. Takšne zaklenitve povzročajo znatno upočasnitev zmogljivosti (tisoč ciklov počasneje kot atomska operacija s podatki, ki padejo v eno predpomnilniško vrstico).
- Izvedena je nova metoda zaščite pred ranljivostjo Retbleed v CPU-ju Intel in AMD, ki uporablja sledenje globini klicev, kar ne upočasnjuje delovanja toliko, kot je to prejšnja zaščita pred Retbleed.
- Na sistemih x86 je omogočena sočasna aktivacija sekundarnih jeder CPU, kar je omogočilo skrajšanje časovnega obdobja nalaganja jedra na sistemih z večjim številom jeder.
- Dodana je možnost ukazne vrstice jedra 'ia32_emulation', ki omogoča med nalaganjem vključitev in izključitev podpore za emulacijo 32-bitnega načina v jedrih, zgrajenih za arhitekturo x86-64.
- Privzeto namesto CFS (Completely Fair Scheduler) deluje načrtovalnik nalog EEVDF (Earliest Eligible Virtual Deadline First). Pri izbiri naslednjega procesa za izvajanje nov načrtovalnik upošteva procese, ki niso dobili dovolj procesorskih virov ali so preveč dobili procesorskega časa. V prvem primeru se prisili prenos nadzora na proces, v drugem pa nasprotno zamudi. Stari načrtovalnik CFS je uporabljal heuristiko in natančne nastavitve za določitev procesov, ki potrebujejo posebno pozornost, medtem ko nov načrtovalnik te procese spremlja bolj neposredno in ne zahteva natančne nastavitve. EEVDF bo omogočil zmanjšanje zamud pri izvajanju nalog, s katerimi je CFS imel težave s načrtovanjem.
- Nadaljuje se dobava sistema dinamičnega odpravljanja napak DTrace 2.0, ki je bil prenesen na uporabo jedrskega podsistema eBPF. DTrace 2.0 deluje nad eBPF, podobno kot obstoječa orodja za sledenje v Linuxu delujejo nad eBPF.
- V hipervizorju KVM je omogočeno uporabo do 4096 virtualnih CPU-jev (VCPU).
- Nadaljuje se uporaba KTLS, implementacije protokola TLS na ravni jedra.
- Posodobljena je implementacija generatorja naključnih števil RDRAND, ki je odgovoren za delovanje naprave /dev/random, kar je preneseno na uporabo hash funkcije BLAKE2s namesto SHA1 za mešanje entropije. Ta sprememba je omogočila povečanje varnosti generatorja naključnih števil. Za pospešitev pridobivanja naključnih števil preko sistemskega klica getrandom() je bil uporabljen mehanizem vDSO (virtual dynamic shared object), ki prenaša obdelovalec sistemskega klica iz jedra v uporabniški prostor, da se izogne preklapljanju konteksta.
- Dodana je podpora za razširitev BIG TCP, ki omogoča povečanje največje velikosti TCP paketa do 4GB za optimizacijo delovanja visokohitrostnih notranjih omrežij podatkovnih centrov. Povečanje velikosti paketa pri 16-bitnem polju v glavi se doseže z izvedbo 'jumbo' paketov, kjer je velikost v IP glavi nastavljena na 0, dejanska velikost pa se prenaša v ločenem 32-bitnem polju v pripetem naslovu.
- Za omrežne sokete je bila implementirana opcija SO_RESERVE_MEM, ki omogoča rezervacijo določenega volumna pomnilnika za soket, ki bo vedno na voljo soketu in ne bo odvzet. Uporaba te opcije omogoča povečanje zmogljivosti z zmanjšanjem operacij dodeljevanja in vračanja pomnilnika v omrežnem skladu, zlasti v pogojih pomanjkanja pomnilnika v sistemu.
- Izvedena je optimizacija zmogljivosti načrtovalnika paketa fq (Fair Queuing), ki je omogočila povečanje prepustnosti za 5% pri visokih obremenitvah v testu tcp_rr (TCP Request/Response) in za 13% pri neomejenem toku UDP paketov.
- Izvedena je reorganizacija omrežnih struktur jedra za povečanje učinkovitosti predpomnjenja podatkov s strani procesorja, kar je omogočilo povečanje zmogljivosti TCP sklada na sistemih, ki obravnavajo veliko število paralelnih zahtev.
- Dodana je podpora za knjižnico ASMLib 3 za avtomatsko upravljanje shrambe v SGBD Oracle.
- Izvedli smo delo na optimizaciji zmogljivosti in povečanju varnosti mehanizma asinhronega vnosa/izvlečka io_uring. Dodane so bile optimizacije, temelječe na io_uring, za datotečni sistem XFS in Ext4, ki omogočajo paralelno neposredno zapisovanje v datoteko v več niti.
- Izboljšana podpora za datotečni sistem Btrfs. Za naprave s podporo trim/discard je privzeto omogočena možnost montaže „discard=async“, ki omogoča izvajanje teh operacij takoj za vse FS v asinkronem načinu. Dodana je podpora za pošiljanje in prejemanje stisnjenih podatkov brez pretvorb. Dodana je podpora za zapisovanje blokov večjih od 64 KB. Poenostavljeno je spremljanje kvot. Realizirana je podpora za montažo kloniranih naprav. Izboljšane so bile preverbe zapisovanja v načinu NOCOW (prehodna kapaciteta se je povečala za 9%). Dodane so možnosti montaže „ignoremetacsums“ in „ignoresuperflags“ za ignoriranje nepravilnih kontrolnih vsot metapodatkov in superblokov. Zagaračene naloge za odstranjevanje naprav, uravnoteženje in prenovo blokov v paralelnem načinu.
- V FS XFS je omogočena uporaba velikosti bloka, ki presega velikost strani pomnilnika. Dodani so veliki števec ekstentov za zelo velike virtualne diske. Dodan je način atomske fiksacije (commit) vsebine datotek. Predlagana je eksperimentalna implementacija preverjanja (fsck) in obnavljanja FS v online-načinu.
- V NFS je privzeto omogočena uporaba operacije READ_PLUS, določene v specifikaciji NFS 4.2 in uporabljene za učinkovitejše branje podatkov iz datotek, ki vsebujejo praznine.
- Sistem upravljanja pomnilnika je bil prenesen na uporabo podatkovne strukture folios (knjige strani pomnilnika). Folios spominjajo na združene strani pomnilnika (compound pages), vendar se razlikujejo po izboljšani semantiki in bolj razumljivi organizaciji dela.
- Za operacije mapiranja pomnilnika je uporabljena podatkovna struktura „maple tree“, ki je pozicionirana kot učinkovitejša zamenjava strukture „red-black tree“. Maple tree je različica B-tree, ki podpira indeksiranje po območjih vrednosti in je zasnovana za učinkovito uporabo predpomnilnika. sodobnih procesorjev.
- V mmap so implementirane zaklepe na ravni posameznih VMA (Virtual Memory Area), ki omogočajo povečanje zmogljivosti večnitnih aplikacij.
- Dodana je podatkovna struktura ptdesc, ki optimizira delo s tabelami strani pomnilnika zaradi ločevanja struktur s podatki o metapodatkih in podatki za strani pomnilnika.
Izvor: opennet.ru
