Linux-kernen 5.14

Linux-kernen 5.14

Efter to måneders udvikling præsenterede Linus Torvalds den kerneleudgivelse Linux 5.14. Blandt de mest bemærkelsesværdige ændringer er: nye systemopkald quotactl_fd() og memfd_secret(), fjernelse af ide- og raw-drivere, en ny input/output-prioritetskontrol for cgroup, opgaveplanlægningsmetoden SCHED_CORE og infrastrukturen til at skabe bootere for verificerede BPF-programmer.

I den nye version er der implementeret 15883 rettelser af 2002 udviklere, patchstørrelsen er 69 MB (ændringerne berørte 12580 filer, tilføjet 861501 linjer kode, fjernet 321654 linjer). Ca. 47% af alle ændringerne i 5.14 relaterer sig til enhedsdrivere, omkring 14% vedrører opdatering af hardware-specifik kode, 13% relaterer sig til netværksstakken, 3% til filsystemer og 3% til interne kerneundersystemer.

Vigtige nyheder:

  • disk subsystem, input/output og filsystemer:
    • for cgroup implementeret ny input/output-prioriteringskontrol — rq-qos, som kan administrere behandlingsprioriteten for forespørgsler til blokenheder, genereret af deltagerne hver cgroup. Understøttelse af den nye prioriteringskontrol er blevet tilføjet til input/output-planlæggeren mq-deadline;
    • i filsystemet ext4 er implementeret ny ioctl-kommando EXT4_IOC_CHECKPOINT, der tvangsmæssigt skriver alle ventende transaktioner fra journalen og relaterede buffere til disken samt overskriver det område, der bruges af journalen i lageret. Ændringen er blevet forberedt som led i en initiativ for at forhindre lækage af information fra filsystemer;
    • i Btrfs er indført ydelsesoptimeringer: ved at undgå unødvendig journalisering af udvidede attributter under fsync-udførelsen er ydeevnen for intensive operationer med udvidede attributter blevet forbedret med op til 17%. Derudover er fuld synkronisering blevet deaktiveret under skæringsoperationer, der ikke påvirker extent, hvilket har reduceret operationens udførelsestid med 12%. Der er tilføjet en opsætning i sysfs til at begrænse input/output-båndbredden under filsystemkontrol. ioctl-opkald er blevet tilføjet for at annullere ændringer i størrelse og sletning af enheder;
    • i XFS genarbejdet implementering af buffer cache, som er blevet overført til sideallokering i batchmode. Effektiviteten af cachen er blevet forbedret;
    • I F2FS er der tilføjet en mulighed for at arbejde i skrivebeskyttet tilstand, og der er implementeret en cache til komprimerede blokke (compress_cache) for at øge ydelsen ved tilfældig læsning. Der er implementeret support til komprimering af filer, der afspejles i hukommelsen ved hjælp af mmap()-operationen. For selektivt at deaktivere komprimering af filer efter maske er der foreslået et nyt monteringstype nocompress;
    • I exFAT-driveren er der udført arbejde for at forbedre kompatibiliteten med lagerenheder fra visse digitale kameraer;
    • et systemopkald er tilføjet quotactl_fd(), som gør det muligt at styre kvoter ikke via en speciel enhedsfil, men gennem angivelse af en filbeskrivelse, der er knyttet til det filsystem, hvormed kvoten anvendes;
    • Gamle drivere til blokenheder med IDE-interface er fjernet fra kernen, som længe er blevet erstattet af libata-subsystemet. Støtten til gamle enheder er bevareret fuldt ud, ændringerne vedrører kun muligheden for at bruge gamle drivere, hvorved lagringsenheder blev navngivet /dev/hd* og ikke /dev/sd*;
    • Driveren 'raw', der giver ubufferet adgang til blokkenheder via /dev/raw-interface, er fjernet fra kernen. Den nævnte funktionalitet er længe blevet implementeret i applikationer ved hjælp af flaget O_DIRECT;
  • Hukommelse og systemtjenester:
    • I taskplanlæggeren er der implementeret en ny planlægningsmode SCHED_CORE, som gør det muligt at styre, hvilke processer der kan køre samtidig på et enkelt CPU-kerne. Hver proces kan tildeles et cookie-id, der definerer tillidsområdet mellem processerne (for eksempel tilhørighed til en bruger eller container). Ved organisering af kodeudførelse kan planlæggeren sikre, at et CPU-kerne kun deles mellem processer relateret til en ejer, hvilket kan bruges til at blokere visse Spectre-type angreb ved at forhindre udførelsen af betroede og ikke-betroede opgaver i en enkelt tråd SMT (Hyper Threading);
    • For cgroup-mekanismen er der implementeret support til kill-operationen, der gør det muligt at afslutte alle processer knyttet til gruppen på én gang (afsend SIGKILL) ved at skrive '1' i den virtuelle fil cgroup.kill;
    • Mulighederne for reagere på identificeringen af split locks, der opstår ved adgang til ikke-alignerede data i hukommelsen, er udvidet. Dette sker, fordi dataene ved udførelse af en atomar instruktion krydser to CPU-cachelinjer. Sådanne låse medfører betydeligt fald i ydelse, og tidligere gav systemet mulighed for at tvinge afslutning af den applikation, der forårsagede låsen. I den nye version er der tilføjet en kerne-kommando parameter 'split_lock_detect=ratelimit:N', som gør det muligt at bestemme det overordnede systemgrænse for intensiteten af låseoperationer pr. sekund, hvorefter enhver proces, der er kilde til en split lås, i stedet for at blive afsluttet, vil blive tvunget stoppet i 20 ms.
    • I CFS-båndbreddekontrolsystemet, der bestemmer, hvor meget CPU-tid der kan tildeles hver cgroup, er muligheden for at definere tidsbegrænsede grænser implementeret, hvilket muliggør bedre regulering af belastninger, der er følsomme over for forsinkelser. For eksempel vil opsætning af cpu.cfs_quota_us til 50000 og cpu.cfs_period_us til 100000 tillade en gruppe processer at bruge 50 ms CPU-tid hver 100 ms.
    • tilføjet Den indledende infrastruktur til oprettelse af BPF-program-loader, som senere vil muliggøre indlæsning af kun BPF-programmer, der er underskrevet med en betroet digital nøgle.
    • En ny futex-operation FUTEX_LOCK_PI2 er blevet tilføjet, der bruger en monoton timer til at beregne timeout, som tager højde for den tid, systemet har været i dvaletilstand.
    • Der er implementeret støtte til store hukommelsessider (Transparent Huge-Pages) for RISC-V-arkitekturen og muligheden for at anvende mekanismen KFENCE til at opdage fejl i arbejdet med hukommelse. KFENCE til at opdage fejl under arbejdet med hukommelsen.
    • I systemopkaldet madvise(), der tilbyder midler til at optimere hukommelsesadministrationen i processen, er tilføjet er der tilføjet flagene MADV_POPULATE_READ og MADV_POPULATE_WRITE til at generere 'page fault' for alle hukommelsessider, der er markeret til læse- eller skriveoperationer, uden at udføre faktisk læsning eller skrivning (prefault). Anvendelse af flagene kan være nyttigt for at reducere forsinkelser under programmets drift ved at forudse udførelsen af 'page fault'-handleren for alle ikke-allokerede sider på én gang uden at vente på faktisk adgang til dem.
    • i unit-testningssystemet kunit tilføjet understøttelse af testkørsler i QEMU-miljøet;
    • tilføjet nye sporingsværktøjer: «osnoise» til at overvåge forsinkelser i applikationer forårsaget af afbrydelseshåndtering, samt «timerlat» til at give detaljerede informationer om forsinkelser ved vækninger fra timer-signaler;
  • virtualisering og sikkerhed:
    • tilføjet systemopkaldet memfd_secret(), der muliggør oprettelse af et privat hukommelsesområde i et isoleret adresseområde, der kun er synligt for ejerprocessen, ikke synligt for andre processer og direkte utilgængeligt for kernen;
    • i seccomp systemkaldfilteret er det blevet muligt at bruge en atomar operation til at oprette en filbeskrivelse for den isolerede opgave og returnere den ved håndtering af systemkaldet. Den foreslåede operation løser problemet med afbrydelsen af håndtereren i brugerens rum ved modtagelse af et signal;
    • tilføjet en ny mekanisme til at styre ressourcebegrænsninger i brugernavnsrum, som binder separate rlimit tællere til brugeren i «user namespace». Ændringen løser problemet med anvendelse af fælles ressourcetællere, når en bruger kører processer i forskellige containere;
    • i KVM-hypervisoren for ARM64-systemer er muligheden for at bruge MTE (MemTag, Memory Tagging Extension) blevet tilføjet i gæstesystemer, hvilket muliggør binding af tags til hver hukommelsesallokeringsoperation og organisering af validering af korrekt brug af pointers for at blokere udnyttelse af sårbarheder forårsaget af adgang til allerede frigjorte hukommelsesblokke, buffer overflow, adgang før initialisering og brug uden for den aktuelle kontekst;
    • deværktøjer til pointerautentifikation (Pointer Authentication) leveret af ARM64-platformen kan nu konfigureres separat for kernen og brugerummet. Teknologien muliggør brug af specialiserede ARM64-instruktioner til at verificere returadresser ved hjælp af digitale signaturer, der er gemt i de ubrugte øverste bits af selve pointeren;
    • i User-mode Linux tilføjet understøttelse af brugen af drivere til PCI-enheder med en virtuel PCI-bus implementeret af PCI-over-virtio driveren;
    • For x86 systems, support has been added for the paravirtualized device virtio-iommu, allowing IOMMU requests such as ATTACH, DETACH, MAP, and UNMAP to be sent over the virtio transport without emulating memory page tables;
    • For Intel CPUs, starting from the Skylake family up to Coffee Lake, the use of Intel TSX (Transactional Synchronization Extensions) is disabled by default, as it provides means to improve the performance of multi-threaded applications by dynamically eliminating unnecessary synchronization operations. The extensions are disabled due to the possibility of attacks Zombieload, manipulating the information leakage through side channels that occurs during the operation of the asynchronous interrupt mechanism (TAA, TSX Asynchronous Abort);
  • Network subsystem:
    • The integration into the MPTCP (MultiPath TCP) kernel continues, which is an extension of the TCP protocol to enable TCP connection operations for packet delivery simultaneously over multiple routes through different network interfaces associated with different IP addresses. In the new release, tilføjet a mechanism for defining custom traffic hash policies for IPv4 and IPv6 (multipath hash policy) has been added, allowing user space to determine which fields in packets, including encapsulated ones, will be used in the hash calculation that determines the path choice for the packet;
    • Support for sockets has been added to the virtio transport SOCK_SEQPACKET (ordered and reliable delivery of datagrams);
    • The capabilities of the SO_REUSEPORT socket mechanism have been expanded, allowing multiple listening sockets to connect to a single port for accepting connections, distributing incoming requests across all sockets connected through SO_REUSEPORT, which simplifies the creation of multi-threaded server applications. In the new version, er tilføjet tools for transferring control to another socket in case of a failure when processing a request by the initially selected socket (solving the issue of losing individual connections when restarting services);
  • Hardware:
    • in the amdgpu driver er implementeret support for new series of AMD Radeon RX 6000 GPUs, developed under the code names "Beige Goby" (Navi 24) and "Yellow Carp", as well as improved support for the Aldebaran GPU (gfx90a) and Van Gogh APU. Added the ability to work simultaneously with multiple eDP panels. For the Renoir APU, support for working with encrypted buffers in video memory (TMZ, Trusted Memory Zone) has been implemented. Support for hot-unplugging of graphics cards has been added. Default support for the ASPM (Active State Power Management) power-saving mechanism is included for Radeon RX 6000 (Navi 2x) and older AMD GPUs, which was previously activated only for Navi 1x, Vega, and Polaris GPUs;
    • support for shared virtual memory (SVM) has been added for AMD chips, based on the HMM (Heterogeneous memory management) subsystem, allowing the use of devices with their own memory management units (MMU) that can access main memory. In particular, HMM can organize a shared address space between the GPU and CPU, in which the GPU can access the main memory of the process;
    • initial support for the technology AMD Smart Shift, which dynamically adjusts power consumption parameters for CPU and GPU on laptops with AMD chipset and graphics card to boost performance during gaming, video editing, and 3D rendering;
    • in the i915 driver for Intel graphics cards er support for Intel Alder Lake P chips;
    • added drm/hyperv driver for the Hyper-V virtual graphics adapter;
    • tilføjet the simpledrm graphics driver uses the EFI-GOP or VESA framebuffer provided by UEFI firmware or BIOS. The primary purpose of the driver is to provide graphics output at the early stages of booting, before a full DRM driver can be used. The driver can also be used as a temporary solution for hardware for which native DRM drivers are not yet available;
    • tilføjet support for the all-in-one computer Raspberry Pi 400;
    • added dell-wmi-privacy driver for supporting hardware camera and microphone switches supplied in Dell laptops;
    • for Lenovo laptops tilføjet WMI interface for changing BIOS settings via sysfs /sys/class/firmware-attributes/;
    • expanded support for devices with USB4 interface;
    • tilføjet understøttelse af lydkort og codecs AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 og Texas Instruments TAS2505. Forbedret lydsupport på bærbare computere fra HP og ASUS. Tilføjet patches til at reducere forsinkelser før lydafspilning på enheder med USB-grænseflade.

Kilde – opennet.ru.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster