Compania Oracle a lansat prima versiune stabilă a Unbreakable Enterprise Kernel 8 (UEK R8), o variantă a kernel-ului Linux dezvoltată pentru utilizare în distribuția Oracle Linux ca alternativă la pachetul standard cu kernel din Red Hat Enterprise Linux. Kernel-ul este disponibil doar pentru arhitecturi x86_64 și ARM64 (aarch64). Codul sursă al kernel-ului, inclusiv împărțirea în patch-uri separate, este publicat în repositoul Git public al Oracle.
Pachetul Unbreakable Enterprise Kernel 8 se bazează pe kernel-ul Linux 6.12 (versiunea UEK R7 s-a bazat pe kernel-ul 5.4, iar în versiunea beta a RHEL 10 a fost propus kernel-ul 6.11), care este îmbogățit cu noi funcționalități, optimizări și corecturi, fiind de asemenea testat pentru compatibilitate cu majoritatea aplicațiilor care rulează pe RHEL, și optimizat pentru a funcționa cu software-ul și hardware-ul industrial Oracle. Pachetele de instalare și cele sursă ale kernel-ului UEK R8 sunt pregătite pentru Oracle Linux 9.5 (nu există obstacole în utilizarea acestui kernel în versiuni similare RHEL, CentOS, Alma Linux și Rocky Linux).
Noutăți cheie ale Unbreakable Enterprise Kernel 8:
- Împărțirea componentelor kernel-ului UEK a fost modificată în pachete separate. Modulele kernel-ului au fost separate de imaginea de bază a kernel-ului și sunt livrate în colecții incluse în pachete separate: kernel-uek-modules-core (minim de bază), kernel-uek-modules (pentru servere), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb și kernel-uek-modules-wireless. Utilitarele aferente au fost separate din pachetul de bază kernel-uek-core în pachetul separat kernel-uek-tools. Fișierele de configurare cu lista modulelor interzise la încărcare au fost redenumite din ‘blacklist’ în ‘denylist’ în cadrul inițiativei de utilizare a terminologiei incluzive.
- Pentru sistemele ARM Ampere, utilizate în Oracle Cloud, a fost formată o construcție separată a kernel-ului kernel-uek64k, în care dimensiunea de bază a paginilor de memorie a fost crescută de la 4 la 64 KB.
- A fost adăugată suportul pentru implementarea hardware oferită de Intel SGX2 (Software Guard Extensions) a mecanismului EDMM (Enclave Dynamic Memory Management), care permite gestionarea accesului la paginile de memorie ale enclavei și adăugarea/ștergerea dinamică a paginilor de memorie pentru enclavă.
- În driverul Intel QAT cu suport pentru dispozitivele Intel Quick Assist Technology (QAT) a fost adăugat suportul pentru a patra generație de procesoare Intel Xeon.
- A fost adăgât un sistem de detectare a blocajelor `split-lock`, care apar atunci când se accesează date nealiniate în memorie, din cauza faptului că, în timpul execuției unei instrucțiuni atomice, datele traversează două linii de cache CPU. Aceste blocaje conduc la o scădere semnificativă a performanței (cu 1000 de cicluri mai lente decât o operațiune atomică cu date care cad într-o singură linie de cache).
- A fost implementată o nouă metodă de protecție împotriva vulnerabilității Retbleed în CPU Intel și AMD, folosind urmărirea adâncimii apelurilor, care nu încetinește procesul de lucru atât de mult ca protecția anterioară împotriva Retbleed.
- Pe sistemele x86, au fost activate simultan nucleele secundare ale CPU, ceea ce a permis reducerea timpului de încărcare a nucleului pe sistemele cu un număr mare de nuclee.
- A fost adăugat un parametru pentru linia de comandă a nucleului `ia32_emulation`, care permite, în timpul procesului de boot, activarea și dezactivarea suportului pentru emularea modului pe 32 de biți în nucleele compilate pentru arhitectura x86-64.
- În mod implicit, scheduler-ul CFS (Completely Fair Scheduler) a fost înlocuit cu scheduler-ul EEVDF (Earliest Eligible Virtual Deadline First). Când alege următorul proces de predat execuția, noul scheduler ia în considerare procesele care nu au primit resurse procesor sau care au primit prea mult timp de procesor fără a merita. În primul caz, se forțează transferul controlului către acel proces, iar în al doilea caz, se amână. Scheduler-ul vechi CFS folosea o abordare euristică și ajustări fine pentru a determina procesele care necesitau atenție separată, în timp ce noul scheduler le urmărește mai explicit și nu necesită ajustări fine. EEVDF va reduce întârzierile în execuția sarcinilor cu care CFS s-a confruntat cu probleme de programare.
- Continua livrarea sistemului de depanare dinamică DTrace 2.0, care a fost adaptat pentru a utiliza subsistemul de kernel eBPF. DTrace 2.0 funcționează deasupra eBPF, similar cu modul în care instrumentele de depanare existente din Linux funcționează deasupra eBPF.
- În hipervizorul KVM, este permisă utilizarea a până la 4096 de CPU virtuali (VCPU).
- S-a continuat utilizarea KTLS, implementarea protocalului TLS la nivel de nucleu.
- A fost actualizată implementarea generatorului de numere aleatoare RDRAND, responsabil pentru funcționarea dispozitivului /dev/random, care a fost convertit pentru a utiliza funcția hash BLAKE2s în loc de SHA1 pentru operațiile de amestecare a entropiei. Această modificare a permis creșterea nivelului de securitate al generatorului de numere aleatoare. Pentru a accelera obținerea numerelor aleatoare prin apelul de sistem getrandom(), a fost utilizat mecanismul vDSO (obiect dinamic partajat virtual), care mută gestionarea apelului de sistem din kernel în spațiul utilizatorului pentru a evita comutările de context.
- A fost adăugată suportul pentru extensia BIG TCP, care permite creșterea dimensiunii maxime a pachetului TCP la 4GB pentru optimizarea funcționării rețelelor interne de mare viteză în centrele de date. Această creștere a dimensiunii pachetului cu un câmp de 16 biți în antet se realizează prin implementarea pachetelor 'jumbo', a căror dimensiune în antetul IP este setată la 0, iar dimensiunea reală este transmisă într-un câmp de 32 de biți separat în antetul atașat.
- Pentru socket-urile de rețea a fost implementată opțiunea SO_RESERVE_MEM, care permite rezervarea unei anumite cantități de memorie pentru socket, care va rămâne întotdeauna disponibilă și nu va fi confiscată. Utilizarea acestei opțiuni permite îmbunătățirea performanței prin reducerea operațiunilor de alocare și eliberare a memoriei din stiva de rețea, în special în condiții de deficit de memorie în sistem.
- A fost optimizată performanța planificatorului de pachete fq (Fair Queuing), ceea ce a crescut lățimea de bandă cu 5% sub sarcini mari în testul tcp_rr (TCP Request/Response) și cu 13% în fluxurile de pachete UDP nelimitate.
- A fost reorganizată structura rețea a kernel-ului pentru a îmbunătăți eficiența cache-ului de date al procesorului, ceea ce a dus la creșterea performanței stivei TCP în sistemele care gestionează un număr mare de cereri paralele.
- A fost adăugat suportul pentru biblioteca ASMLib 3 pentru gestionarea automată a stocării în SGBD Oracle.
- Au fost efectuate lucrări de optimizare a performanței și de creștere a securității mecanismului de I/O asincron io_uring. Au fost adăugate optimizări bazate pe io_uring pentru sistemele de fișiere XFS și Ext4, care permit scrierea directă în fișiere în mai multe firuri de execuție în paralel.
- Suportul pentru sistemul de fișiere Btrfs a fost îmbunătățit. Pentru dispozitivele care acceptă trim/discard, opțiunea de montare „discard=async” este activată în mod implicit, permițând executarea acestor operațiuni simultan pentru toate sistemele de fișiere în mod asincron. A fost adăugat suport pentru trimiterea și primirea datelor comprimate fără conversii. S-a adăugat suport pentru scrierea în blocuri mai mari de 64 KB. Gestionarea cotelor a fost simplificată. A fost implementat suportul pentru montarea dispozitivelor clone. Verificările de scriere în modul NOCOW au fost îmbunătățite (capacitatea a crescut cu 9%). Au fost adăugate opțiuni de montare „ignoremetacsums” și „ignoresuperflags” pentru a ignora sumele de control incorecte ale metadatelor și steagurile superblocului. S-au asigurat execuții de sarcini pentru eliminarea dispozitivelor, echilibrarea și redistribuirea blocurilor în mod paralel.
- În FS XFS, este permisă utilizarea dimensiunii blocului care depășește dimensiunea paginii de memorie. Au fost adăugați contori extinși pentru discuri virtuale foarte mari. A fost adăugat modul de angajare atomică (commit) a conținutului fișierelor. A fost propusă o implementare experimentală pentru verificarea (fsck) și recuperarea FS în mod online.
- În NFS, utilizarea operației READ_PLUS, definită în specificația NFS 4.2 și utilizată pentru o citire mai eficientă a datelor din fișierele cu spații goale, este activată în mod implicit.
- Sistemul de gestionare a memoriei a fost mutat pe utilizarea unei structuri de date folios (portfolio-uri de pagini de memorie). Folios-urile seamănă cu paginile de memorie combinate (compound pages), dar se diferențiază printr-o semnificație îmbunătățită și o organizare mai clară a funcționării.
- Pentru operațiunile de mapare a memoriei, a fost utilizată o structură de date „maple tree”, care este poziționată ca o înlocuire mai eficientă pentru structura „red-black tree”. Maple tree este o variantă a B-tree, care suportă indexarea pe intervale de valori și este proiectată pentru a folosi eficient memoria cache. procesorilor moderni.
- În mmap, au fost implementate blocări la nivelul fiecărui VMA (Virtual Memory Area), permițând creșterea performanței aplicațiilor multithreaded.
- A fost adăugată o structură de date ptdesc, care optimizează lucrul cu tabelele de pagini de memorie prin separarea structurilor cu metadate și date pentru paginile de memorie.
Sursa: opennet.ro
