Firma Oracle opublikowała jądro Unbreakable Enterprise Kernel 8.

Firma Oracle zaprezentowała pierwszą stabilną wersję Unbreakable Enterprise Kernel 8 (UEK R8), wariantu jądra Linux, rozwijanego do użycia w dystrybucji Oracle Linux jako alternatywy dla standardowego pakietu z jądrem z Red Hat Enterprise Linux. Jądro jest dostępne tylko dla architektur x86_64 i ARM64 (aarch64). Źródłowy kod jądra, w tym podział na oddzielne łaty, został opublikowany w publicznym repozytorium Git Oracle.

Pakiet Unbreakable Enterprise Kernel 8 oparty jest na jądrze Linux 6.12 (wydanie UEK R7 opierało się na jądrze 5.4, a w wersji beta RHEL 10 proponowano jądro 6.11), które zostało wzbogacone o nowe możliwości, optymalizacje i poprawki, a także przetestowane pod kątem zgodności z większością aplikacji działających w RHEL oraz zoptymalizowane do pracy z przemysłowym oprogramowaniem i sprzętem Oracle. Pakiety instalacyjne i src z jądrem UEK R8 zostały przygotowane dla Oracle Linux 9.5 (nie ma żadnych przeszkód w używaniu tego jądra w podobnych wersjach RHEL, CentOS, Alma Linux i Rocky Linux).

Kluczowe nowości Unbreakable Enterprise Kernel 8:

  • Zmieniono podział komponentów jądra UEK na oddzielne pakiety. Moduły jądra zostały oddzielone od podstawowego obrazu jądra i przeniesione do kolekcji dostarczanych w oddzielnych pakietach: kernel-uek-modules-core (podstawowy minimum), kernel-uek-modules (dla serwerów), kernel-uek-modules-desktop, kernel-uek-modules-extra-netfilter, kernel-uek-modules-usb i kernel-uek-modules-wireless. Powiązane narzędzia zostały przeniesione z podstawowego pakietu kernel-uek-core do oddzielnego pakietu kernel-uek-tools. Pliki konfiguracyjne z listą modułów zabronionych do ładowania zostały przemianowane z 'blacklist' na 'denylist' w ramach inicjatywy stosowania terminologii integracyjnej.
  • Dla systemów ARM Ampere stosowanych w Oracle Cloud stworzono oddzielne wydanie jądra kernel-uek64k, w którym podstawowy rozmiar stron pamięci zwiększono z 4 do 64 KB.
  • Dodano wsparcie dla sprzętowej realizacji mechanizmu EDMM (Enclave Dynamic Memory Management) oferowanej przez Intel SGX2 (Software Guard Extensions), umożliwiającego zarządzanie dostępem do oddzielnych stron pamięci enklawy oraz dynamiczne dodawanie/usuwanie stron pamięci dla enklawy.
  • W sterowniku Intel QAT, wspierającym urządzenia Intel Quick Assist Technology (QAT), dodano wsparcie dla 4. generacji procesorów Intel Xeon.
  • Dodano systemę wykrywania blokad «split-lock», które występują podczas dostępu do niezsynchronizowanych danych w pamięci, ponieważ podczas wykonywania atomowej instrukcji dane przecinają dwie linie pamięci podręcznej CPU. Takie blokady prowadzą do znacznego spadku wydajności (o 1000 cykli wolniej niż atomowa operacja z danymi mieszczącymi się w jednej linii pamięci podręcznej).
  • Wdrożono nową metodę zabezpieczenia przed podatnością Retbleed w CPU Intel i AMD, wykorzystującą śledzenie głębokości wywołań, co nie spowalnia działania tak bardzo, jak wcześniejsze zabezpieczenie przed Retbleed.
  • Na systemach x86 zapewniono jednoczesną aktywację drugorzędnych rdzeni CPU, co pozwoliło skrócić czas ładowania rdzenia na systemach z dużą liczbą rdzeni.
  • Dodano parametr linii poleceń jądra «ia32_emulation», który umożliwia włączanie i wyłączanie wsparcia dla emulacji trybu 32-bitowego w jądrach zbudowanych dla architektury x86-64 podczas etapu uruchamiania.
  • Domyślnie zamiast CFS (Completely Fair Scheduler) stosowany jest harmonogram zadań EEVDF (Earliest Eligible Virtual Deadline First). Przy wyborze następnego procesu do wykonania nowy harmonogram uwzględnia procesy, które nie otrzymały wystarczających zasobów CPU lub otrzymały niesprawiedliwie dużo czasu procesora. W pierwszym przypadku wymusza przełączenie kontroli do procesu, a w drugim przeciwnie, opóźnia ją. Stary harmonogram CFS stosował heurystyki i drobne dostosowania do określenia procesów wymagających szczególnej uwagi, podczas gdy nowy harmonogram śledzi je bardziej bezpośrednio i nie wymaga drobnych ustawień. EEVDF pozwoli na zmniejszenie opóźnień w wykonywaniu zadań, w których CFS miał problemy z planowaniem.
  • Kontynuowana jest dostawa systemu dynamicznego debugowania DTrace 2.0, który przeszedł na wykorzystanie podsystemu jądra eBPF. DTrace 2.0 działa na bazie eBPF, podobnie jak istniejące w Linuxie narzędzia do śledzenia.
  • W hyperwizorze KVM dozwolone jest użycie do 4096 wirtualnych CPU (VCPU).
  • Kontynuowane jest wykorzystanie KTLS, implementacji protokołu TLS na poziomie jądra.
  • Zaktualizowano implementację generatora liczb pseudolosowych RDRAND, odpowiedzialnego za działanie urządzenia /dev/random, który został przerobiony na wykorzystanie funkcji skrótu BLAKE2s zamiast SHA1 do operacji mieszania entropii. Zmiana ta pozwoliła zwiększyć bezpieczeństwo generatora liczb pseudolosowych. W celu przyspieszenia uzyskiwania liczb losowych poprzez wywołanie systemowe getrandom() zastosowano mechanizm vDSO (virtual dynamic shared object), przenosząc obsługę wywołania systemowego z jądra do przestrzeni użytkownika, aby uniknąć przełączeń kontekstu.
  • Dodano wsparcie dla rozszerzenia BIG TCP, które pozwala zwiększyć maksymalny rozmiar pakietu TCP do 4 GB w celu optymalizacji działania szybkich wewnętrznych sieci centrów danych. Podobne zwiększenie rozmiaru pakietu przy 16-bitowym rozmiarze pola w nagłówku osiąga się poprzez realizację pakietów „jumbo”, których rozmiar w nagłówku IP ustawiany jest na 0, a rzeczywisty rozmiar przekazywany jest w oddzielnym 32-bitowym polu w osobnym dołączonym nagłówku.
  • Dla gniazd sieciowych zaimplementowano opcję SO_RESERVE_MEM, która pozwala zarezerwować dla gniazda określoną ilość pamięci, która zawsze pozostanie dostępna dla gniazda i nie będzie zabierana. Użycie tej opcji pozwala zwiększyć wydajność poprzez zmniejszenie w sieci operacji przydzielania i zwracania pamięci, szczególnie w warunkach niedoboru pamięci w systemie.
  • Przeprowadzono optymalizację wydajności planowania pakietów fq (Fair Queuing), co pozwoliło zwiększyć przepustowość o 5% przy dużym obciążeniu w teście tcp_rr (TCP Request/Response) oraz o 13% przy nieograniczonym strumieniu pakietów UDP.
  • Przeprowadzono reorganizację struktur sieciowych jądra w celu zwiększenia efektywności cache'owania danych przez procesor, co pozwoliło zwiększyć wydajność stosu TCP w systemach obsługujących wiele równoległych żądań.
  • Dodano wsparcie dla biblioteki ASMLib 3 do automatycznego zarządzania pamięcią masową w systemie DB Oracle.
  • Podjęto prace nad optymalizacją wydajności i zwiększeniem bezpieczeństwa mechanizmu asynchronicznego wejścia/wyjścia io_uring. Dodano oparte na io_uring optymalizacje dla systemów plików XFS i Ext4, umożliwiające jednoczesne bezpośrednie zapisywanie do pliku w wielu wątkach.
  • Ulepszono wsparcie dla systemu plików Btrfs. Włączono domyślnie opcję montowania „discard=async” dla urządzeń obsługujących trim/discard, co umożliwia wykonywanie tych operacji natychmiastowo dla wszystkich systemów plików w trybie asynchronicznym. Dodano wsparcie dla przesyłania i odbierania skompresowanych danych bez konwersji. Wprowadzono wsparcie zapisu blokami większymi niż 64 KB. Uproszczono monitorowanie limitów. Zrealizowano wsparcie dla montowania sklonowanych urządzeń. Udoskonalono kontrole zapisu w trybie NOCOW (przepustowość wzrosła o 9%). Dodano opcje montowania „ignoremetacsums” oraz „ignoresuperflags” w celu ignorowania niepoprawnych sum kontrolnych metadanych i flag superbloku. Zapewniono realizację zadań usuwania urządzeń, bilansowania i redistribucji bloków w trybie równoległym.
  • W systemie plików XFS zezwolono na użycie rozmiaru bloku przekraczającego rozmiar strony pamięci. Dodano duże liczniki ekstentów dla bardzo dużych wirtualnych dysków. Wprowadzono tryb atomowego zatwierdzania (commit) zawartości plików. Zaproponowano eksperymentalną implementację weryfikacji (fsck) oraz przywracania systemu plików w trybie online.
  • W NFS domyślnie włączono operację READ_PLUS, określoną w specyfikacji NFS 4.2 i stosowaną do efektywniejszego odczytu danych z plików zawierających puste obszary.
  • System zarządzania pamięcią przeszedł na użycie struktury danych folios (zbiorów stron pamięci). Folios przypominają połączone strony pamięci (compound pages), ale charakteryzują się lepszą semantyką i bardziej zrozumiałą organizacją pracy.
  • Dla operacji mapowania pamięci zastosowano strukturę danych „maple tree”, która jest postulowana jako bardziej wydajna alternatywa dla struktury „red-black tree”. Maple tree to wariant B-tree, wspierający indeksację według zakresów wartości i zaprojektowany dla efektywnego wykorzystania pamięci podręcznej. nowoczesnych procesorów.
  • W mmap wprowadzono blokady na poziomie pojedynczych VMA (Virtual Memory Area), co pozwoliło na zwiększenie wydajności aplikacji wielowątkowych.
  • Dodano strukturę danych ptdesc, optymalizującą pracę z tabelami stron pamięci poprzez oddzielenie struktur z metadanymi i danymi dla stron pamięci.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster