Linux 5.19 kernel udgivelse

Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af ​​Linux-kernen 5.19. Blandt de mest bemærkelsesværdige ændringer: understøttelse af LoongArch-processorarkitekturen, integration af "BIG TCP" patches, on-demand-tilstand i fscache, fjernelse af kode for at understøtte a.out-formatet, muligheden for at bruge ZSTD til firmwarekomprimering, en grænseflade til håndtering af hukommelsesfordrivelse fra brugerplads, øget pålidelighed og ydeevne af pseudo-tilfældige talgeneratoren, understøttelse af Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) og ARM SME (Scalable Matrix Extension) udvidelser.

I meddelelsen sagde Linus, at den næste kerneudgivelse højst sandsynligt bliver nummereret 6.0, da 5.x-grenen har akkumuleret nok udgivelser til at ændre det første nummer i versionsnummeret. Nummerændringen udføres af æstetiske årsager og er et formelt skridt, der lindrer ubehag på grund af ophobningen af ​​et stort antal problemstillinger i serien.

Linus nævnte også, at han brugte en Apple-laptop baseret på ARM64-arkitektur (Apple Silicon) med et Linux-miljø baseret på Asahi Linux-distributionen til at skabe udgivelsen. Det er ikke Linus' primære arbejdsstation, men han brugte platformen til at teste dens egnethed til kernearbejde og for at sikre, at han kunne producere kerneudgivelser, mens han rejste med en letvægts bærbar computer ved hånden. Tidligere, for mange år siden, havde Linus erfaring med at bruge Apple-udstyr til udvikling – han brugte engang en pc baseret på ppc970 CPU'en og en bærbar Macbook Air.

Den nye version indeholder 16401 rettelser fra 2190 udviklere (i den sidste udgivelse var der 16206 rettelser fra 2127 udviklere), patchstørrelsen er 90 MB (ændringerne påvirkede 13847 filer, 1149456 linjer kode blev tilføjet, 349177 linjer blev slettet). Omkring 39 % af alle ændringer, der er introduceret i 5.19, er relateret til enhedsdrivere, ca. 21 % af ændringerne er relateret til opdatering af kode, der er specifik for hardwarearkitekturer, 11 % er relateret til netværksstakken, 4 % er relateret til filsystemer og 3 % er relateret til interne kerneundersystemer.

Vigtigste innovationer i kerne 5.19:

  • Diskundersystem, I/O og filsystemer
    • EROFS-filsystemet (Enhanced Read-Only File System), beregnet til brug på skrivebeskyttede partitioner, er blevet konverteret til at bruge fscache-undersystemet, som giver datacache. Ændringen forbedrede ydelsen markant af systemer, hvor et stort antal containere lanceres fra et EROFS-baseret image.
    • En on-demand læsetilstand er blevet tilføjet til fscache-undersystemet, som bruges til at optimere EROFS. Den nye tilstand giver dig mulighed for at organisere læsning af caching fra FS-billeder placeret i det lokale system. I modsætning til den oprindeligt tilgængelige driftstilstand, som er fokuseret på caching i det lokale filsystem af data, der overføres gennem netværksfilsystemer, uddelegerer "on-demand"-tilstanden funktionerne med at hente data og skrive dem til cachen til en separat baggrundsproces, der kører i brugerrummet.
    • XFS giver mulighed for at gemme milliarder af udvidede attributter i en i-node. Det maksimale antal omfang for én fil er blevet øget fra 4 milliarder til 247. Der er implementeret en tilstand til atomisk opdatering af flere udvidede filattributter på én gang.
    • Btrfs-filsystemet har optimeret arbejde med låse, hvilket muliggjorde en stigning på cirka 7 % i ydeevnen, når du skriver direkte i nowait-tilstand. Ydeevnen af ​​operationer i NOCOW-tilstand (uden copy-on-write) øges med ca. 3%. Belastningen på sidecachen, når du kører "send"-kommandoen, er blevet reduceret. Minimumsstørrelsen på undersider er blevet reduceret fra 64K til 4K (undersider mindre end kernesider kan bruges). Der er lavet en overgang fra at bruge et radix-træ til XArrays-algoritmen.
    • En tilstand er blevet tilføjet til NFS-serveren for at udvide bevarelsen af ​​låsetilstanden indstillet af en klient, der er holdt op med at svare på anmodninger. Den nye tilstand giver dig mulighed for at forsinke låserydning i op til en dag, medmindre en anden klient anmoder om en konkurrerende lås. I normal tilstand fjernes blokeringen 90 sekunder efter, at klienten holder op med at svare.
    • Hændelsessporingsundersystemet i fanotify FS implementerer flaget FAN_MARK_EVICTABLE, hvormed du kan deaktivere fastgørelse af mål i-noder i cachen, for eksempel for at ignorere undergrene uden at fastgøre deres dele i cachen.
    • Driveren til FAT32-filsystemet har tilføjet understøttelse til at indhente information om tidspunktet for filoprettelse gennem statx-systemkaldet med implementering af en mere effektiv og funktionel version af stat(), som returnerer udvidet information om filen.
    • Der er foretaget betydelige optimeringer af exFAT-driveren for at tillade samtidig clearing af en gruppe af sektorer, når 'dirsync'-tilstanden er aktiv, i stedet for sekventiel sektor-for-sektor clearing. Ved at reducere antallet af blokanmodninger efter optimering steg ydeevnen ved at oprette et stort antal mapper på SD-kortet med mere end 73-85%, afhængigt af klyngestørrelsen.
    • Kernen inkluderer den første korrigerende opdatering til ntfs3-driveren. Siden ntfs3 blev inkluderet i 5.15-kernen i oktober sidste år, er driveren ikke blevet opdateret, og kommunikationen med udviklerne er gået tabt, men udviklerne har nu genoptaget udgivelsesændringer. De foreslåede patches eliminerede fejl, der førte til hukommelseslækager og nedbrud, løste problemer med udførelse af xfstests, ryddede op i ubrugt kode og rettede slåfejl.
    • For OverlayFS er muligheden for at kortlægge bruger-id'er for monterede filsystemer blevet implementeret, som bruges til at matche filerne fra en specifik bruger på en monteret fremmed partition med en anden bruger på det aktuelle system.
  • Hukommelse og systemtjenester
    • Tilføjet indledende understøttelse af LoongArch-instruktionssæt-arkitekturen brugt i Loongson 3 5000-processorerne, som implementerer den nye RISC ISA, der ligner MIPS og RISC-V. LoongArch-arkitekturen er tilgængelig i tre varianter: strippet 32-bit (LA32R), almindelig 32-bit (LA32S) og 64-bit (LA64).
    • Fjernet kode for at understøtte det eksekverbare a.out-filformat, som blev forældet i version 5.1. A.out-formatet har længe været forældet på Linux-systemer, og generering af a.out-filer understøttes ikke af moderne værktøjer i standard Linux-konfigurationer. Indlæseren til a.out-filer kan implementeres helt i brugerrummet.
    • Understøttelse af x86-specifikke opstartsmuligheder er afbrudt: nosp, nosmap, nosmep, noexec og noclflush).
    • Understøttelse af den forældede CPU h8300-arkitektur (Renesas H8/300), som længe har stået uden support, er afbrudt.
    • Udvidede muligheder relateret til at reagere på detektering af splitlåse ("splitlåse"), der opstår ved adgang til ikke-justerede data i hukommelsen på grund af det faktum, at dataene krydser to CPU-cache-linjer, når der udføres en atominstruktion. Sådanne blokeringer fører til et betydeligt fald i ydeevnen. Hvis kernen tidligere som standard ville udsende en advarsel med information om processen, der forårsagede blokeringen, vil den problematiske proces nu blive yderligere bremset for at bevare ydeevnen af ​​resten af ​​systemet.
    • Tilføjet understøttelse af IFS (In-Field Scan)-mekanismen implementeret i Intel-processorer, som giver dig mulighed for at køre CPU-diagnosticeringstests på lavt niveau, der kan identificere problemer, der ikke opdages af standardværktøjer baseret på fejlkorrektionskoder (ECC) eller paritetsbit . De udførte tests er i form af firmware, der kan downloades, designet på samme måde som mikrokodeopdateringer. Testresultater er tilgængelige via sysfs.
    • Tilføjet muligheden for at indlejre en bootconfig-fil i kernen, som tillader, ud over kommandolinjeindstillinger, at bestemme kernens parametre gennem en indstillingsfil. Indlejring udføres ved at bruge samlingsmuligheden 'CONFIG_BOOT_CONFIG_EMBED_FILE=»/PATH/TO/BOOTCONFIG/FILE»'. Tidligere blev bootconfig bestemt ved at vedhæfte til initrd-billedet. Integration i kernen tillader bootconfig at blive brugt i konfigurationer uden en initrd.
    • Muligheden for at downloade firmware komprimeret ved hjælp af Zstandard-algoritmen er blevet implementeret. Et sæt kontrolfiler /sys/class/firmware/* er blevet tilføjet til sysfs, så du kan starte firmwareindlæsning fra brugerpladsen.
    • Den io_uring asynkrone I/O-grænseflade tilbyder et nyt flag, IORING_RECVSEND_POLL_FIRST, som, når det er indstillet, først vil sende en netværksoperation, der skal behandles ved hjælp af polling, hvilket kan spare ressourcer i situationer, hvor behandling af operationen med en vis forsinkelse er acceptabel. io_uring tilføjede også understøttelse af socket()-systemkaldet, foreslog nye flag for at forenkle håndteringen af ​​filbeskrivelser, tilføjede en "multi-shot"-tilstand til at acceptere flere forbindelser på én gang i accept()-kaldet og tilføjede operationer til videresendelse af NVMe kommandoer direkte til enheden.
    • Xtensa-arkitekturen giver understøttelse af KCSAN (Kernel Concurrency Sanitizer) debugging-værktøjet, designet til dynamisk at detektere raceforhold i kernen. Også tilføjet understøttelse af dvaletilstand og coprocessorer.
    • Til m68k-arkitekturen (Motorola 68000) er en virtuel maskine (platformsimulator) baseret på Android Goldfish-emulatoren blevet implementeret.
    • For AArch64-arkitekturen er understøttelse af Armv9-A SME (Scalable Matrix Extension)-udvidelser blevet implementeret.
    • eBPF-undersystemet tillader lagring af indtastede pointere i kortstrukturer og tilføjer også understøttelse af dynamiske pointere.
    • En ny proaktiv hukommelsesgenvindingsmekanisme er foreslået, der understøtter brugerpladskontrol ved hjælp af memory.reclaim-filen. At skrive et nummer til den angivne fil vil forsøge at fjerne det tilsvarende antal bytes fra det sæt, der er knyttet til cgroup.
    • Forbedret nøjagtighed af hukommelsesbrug ved komprimering af data i swap-partitionen ved hjælp af zswap-mekanismen.
    • Til RISC-V-arkitekturen tilbydes der understøttelse for at køre 32-bit eksekverbare filer på 64-bit systemer, en tilstand tilføjes til at binde restriktive attributter til hukommelsessider (for eksempel for at deaktivere caching), og funktionen kexec_file_load() implementeres .
    • Implementeringen af ​​understøttelse af 32-bit Armv4T og Armv5 systemer er tilpasset til brug i universelle multi-platform kernel builds velegnet til forskellige ARM systemer.
  • Virtualisering og sikkerhed
    • EFI-undersystemet implementerer muligheden for fortroligt at overføre hemmelige oplysninger til gæstesystemer uden at afsløre det til værtssystemet. Dataene leveres gennem sikkerheds-/coco-kataloget i securityfs.
    • Lockdown-beskyttelsestilstand, som begrænser root-brugeradgang til kernen og blokerer UEFI Secure Boot-bypass-stier, har elimineret et smuthul, der gjorde det muligt at omgå beskyttelsen ved at manipulere kernel-debuggeren.
    • Inkluderet er patches, der har til formål at forbedre pålideligheden og ydeevnen af ​​pseudo-tilfældige tal-generatoren.
    • Når man bygger ved hjælp af Clang 15, er understøttelse af mekanismen til randomisering af kernestrukturer implementeret.
    • Landlock-mekanismen, som giver dig mulighed for at begrænse interaktionen af ​​en gruppe af processer med det eksterne miljø, giver støtte til regler, der giver dig mulighed for at kontrollere udførelsen af ​​filomdøbningsoperationer.
    • IMA-undersystemet (Integrity Measurement Architecture), designet til at verificere integriteten af ​​operativsystemkomponenter ved hjælp af digitale signaturer og hashes, er blevet skiftet til at bruge fs-verity-modulet til filverifikation.
    • Handlingslogikken ved deaktivering af uprivilegeret adgang til eBPF-undersystemet er blevet ændret - tidligere var alle kommandoer forbundet med bpf()-systemkaldet deaktiveret, og fra version 5.19 er adgang til kommandoer, der ikke fører til oprettelse af objekter, tilbage. . Denne adfærd kræver en privilegeret proces for at indlæse et BPF-program, men så kan uprivilegerede processer interagere med programmet.
    • Tilføjet understøttelse af AMD SEV-SNP (Secure Nested Paging)-udvidelsen, som giver sikkert arbejde med indlejrede hukommelsessidetabeller og beskytter mod "undeSERVed" og "SEVerity"-angreb på AMD EPYC-processorer, som gør det muligt at omgå AMD SEV (Secure Encrypted Virtualization). ) beskyttelsesmekanisme.
    • Tilføjet understøttelse af Intel TDX (Trusted Domain Extensions) mekanismen, som giver dig mulighed for at blokere tredjeparters forsøg på at få adgang til den krypterede hukommelse på virtuelle maskiner.
    • Virtio-blk-driveren, der bruges til at emulere blokenheder, har tilføjet understøttelse af I/O ved hjælp af polling, som ifølge test har reduceret latenstiden med omkring 10 %.
  • Netværks undersystem
    • Pakken indeholder en række STORE TCP-patches, der giver dig mulighed for at øge den maksimale pakkestørrelse for en TCP-pakke til 4 GB for at optimere driften af ​​højhastigheds-interne datacenternetværk. En lignende stigning i pakkestørrelse med en 16-bit headerfeltstørrelse opnås gennem implementering af "jumbo"-pakker, hvis størrelse i IP-headeren er sat til 0, og den faktiske størrelse transmitteres i en separat 32-bit felt i en separat vedhæftet overskrift. Ved ydelsestestning øgede indstilling af pakkestørrelsen til 185 KB gennemløbet med 50 % og reducerede dataoverførselsforsinkelsen markant.
    • Arbejdet fortsatte med at integrere værktøjer i netværksstakken for at spore årsagerne til at droppe pakker (årsagskoder). Årsagskoden sendes, når den hukommelse, der er knyttet til pakken, frigøres og giver mulighed for situationer som f.eks. kassering af pakke på grund af header-fejl, rp_filter-spoofing-detektering, ugyldig kontrolsum, tom for hukommelse, IPSec XFRM-regler udløst, ugyldigt sekvensnummer TCP osv.
    • Tilføjet understøttelse for at falde tilbage til MPTCP (MultiPath TCP) forbindelser til at bruge almindelig TCP i situationer, hvor visse MPTCP funktioner ikke kan bruges. MPTCP er en udvidelse af TCP-protokollen til at organisere driften af ​​en TCP-forbindelse med levering af pakker samtidigt langs flere ruter gennem forskellige netværksgrænseflader forbundet med forskellige IP-adresser. Tilføjet API til at kontrollere MPTCP-streams fra brugerplads.
  • Оборудование
    • Tilføjet over 420 linjer kode relateret til amdgpu-driveren, hvoraf omkring 400 linjer er autogenererede header-filer til ASIC-registerdata i AMD GPU-driveren, og yderligere 22.5k linjer giver den første implementering af understøttelse af AMD SoC21. Den samlede driverstørrelse for AMD GPU'er oversteg 4 millioner linjer kode. Ud over SoC21 inkluderer AMD-driveren understøttelse af SMU 13.x (System Management Unit), opdateret understøttelse af USB-C og GPUVM og er forberedt til at understøtte de næste generationer af RDNA3 (RX 7000) og CDNA (AMD Instinct) platforme.
    • i915-driveren (Intel) har udvidede muligheder relateret til strømstyring. Tilføjede identifikatorer til Intel DG2 (Arc Alchemist) GPU'er brugt på bærbare computere, gav indledende support til Intel Raptor Lake-P (RPL-P) platformen, tilføjede oplysninger om Arctic Sound-M grafikkort), implementeret ABI til computermotorer, tilføjet for DG2-kort understøtter Tile4-formatet; for systemer baseret på Haswell-mikroarkitekturen er DisplayPort HDR-understøttelse implementeret.
    • Nouveau-driveren er skiftet til at bruge drm_gem_plane_helper_prepare_fb-handleren; statisk hukommelsesallokering er blevet anvendt på nogle strukturer og variabler. Hvad angår brugen af ​​kernemoduler open source af NVIDIA i Nouveau, handler arbejdet indtil videre om at identificere og eliminere fejl. I fremtiden er den offentliggjorte firmware planlagt til at blive brugt til at forbedre driverens ydeevne.
    • Tilføjet en driver til NVMe-controlleren brugt i Apple-computere baseret på M1-chippen.

Samtidig dannede Latin American Free Software Foundation en version af den helt gratis kerne 5.19 - Linux-libre 5.19-gnu, renset for elementer af firmware og drivere indeholdende ikke-frie komponenter eller kodesektioner, hvis omfang er begrænset af producenten. Den nye udgivelse rydder op i driverne til pureLiFi X/XL/XC og TI AMx3 Wkup-M3 IPC. Opdateret blob-rensningskode i Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu-drivere og undersystemer. Behandling af Qualcomm AArch64 devicetree-filer er blevet implementeret. Tilføjet understøttelse af det nye Sound Open Firmware-komponentnavneskema. Stoppet med at rense ATM Ambassador-driveren, som blev fjernet fra kernen. Håndtering af blob-rensning i HDCP og Mellanox Core er blevet flyttet til separate kconfig-tags.

Kilde: opennet.ru

Tilføj en kommentar