Llançament del nucli Linux 5.14

Després de dos mesos de desenvolupament, Linus Torvalds va presentar el llançament del nucli Linux 5.14. Entre els canvis més destacats: noves trucades al sistema quotactl_fd() i memfd_secret(), eliminació de controladors ide i en brut, nou controlador de prioritat d'E/S per a cgroup, mode de programació de tasques SCHED_CORE, infraestructura per crear carregadors de programes BPF verificats.

La nova versió inclou 15883 correccions de 2002 desenvolupadors, la mida del pedaç és de 69 MB (els canvis van afectar 12580 fitxers, s'han afegit 861501 línies de codi, s'han suprimit 321654 línies). Al voltant del 47% de tots els canvis introduïts a 5.14 estan relacionats amb controladors de dispositiu, aproximadament el 14% dels canvis estan relacionats amb l'actualització de codi específic de les arquitectures de maquinari, el 13% estan relacionats amb la pila de xarxa, el 3% estan relacionats amb sistemes de fitxers i el 3% estan relacionats amb subsistemes interns del nucli.

Principals innovacions:

  • Subsistema de disc, E/S i sistemes de fitxers
    • S'ha implementat un nou controlador de priorització d'E/S per als cgroups, rq-qos, que pot controlar la prioritat de processament de les sol·licituds per bloquejar els dispositius generats pels membres de cada cgroup. S'ha afegit un nou suport de controlador de prioritat al planificador d'E/S de mq-deadline.
    • El sistema de fitxers ext4 implementa una nova ordre ioctl, EXT4_IOC_CHECKPOINT, que obliga a esborrar al disc totes les transaccions pendents del diari i els seus búfers associats, i també sobreescriu l'àrea utilitzada pel diari a l'emmagatzematge. El canvi es va preparar com a part d'una iniciativa per evitar filtracions d'informació dels sistemes de fitxers.
    • S'han fet optimitzacions de rendiment a Btrfs: en eliminar el registre innecessari d'atributs ampliats durant l'execució de fsync, el rendiment de les operacions intensives amb atributs ampliats ha augmentat fins a un 17%. A més, quan es realitzen operacions de retall que no afecten les extensions, la sincronització completa està desactivada, fet que va reduir el temps d'operació en un 12%. S'ha afegit una configuració a sysfs per limitar l'amplada de banda d'E/S quan comproveu l'FS. S'han afegit trucades ioctl per cancel·lar el canvi de mida i les operacions de supressió del dispositiu.
    • A XFS, s'ha redissenyat la implementació de la memòria cau de memòria intermèdia, que s'ha canviat a l'assignació de pàgines de memòria en mode per lots. Millora de l'eficiència de la memòria cau.
    • F2FS afegeix una opció per funcionar en mode de només lectura i implementa un mode de memòria cau de blocs comprimits (compress_cache) per millorar el rendiment de lectura aleatòria. S'ha implementat suport per comprimir fitxers assignats a la memòria mitjançant l'operació mmap(). Per desactivar selectivament la compressió de fitxers basada en una màscara, s'ha proposat una nova opció de muntatge nocompress.
    • S'ha treballat en el controlador exFAT per millorar la compatibilitat amb algun emmagatzematge de càmeres digitals.
    • S'ha afegit la crida al sistema quotactl_fd(), que us permet gestionar les quotes no mitjançant un fitxer de dispositiu especial, sinó especificant un descriptor de fitxer associat al sistema de fitxers al qual s'aplica la quota.
    • Els controladors antics per a dispositius de bloc amb la interfície IDE s'han eliminat del nucli; fa temps que s'han substituït pel subsistema libata.
    • El controlador "raw" s'ha eliminat del nucli, proporcionant accés sense búfer als dispositius de bloqueig mitjançant la interfície /dev/raw. Aquesta funcionalitat s'ha implementat durant molt de temps a les aplicacions que utilitzen el senyalador O_DIRECT.
  • Serveis de memòria i sistema
    • El planificador de tasques implementa un nou mode de programació, SCHED_CORE, que us permet controlar quins processos es poden executar junts al mateix nucli de CPU. A cada procés se li pot assignar un identificador de galeta que defineix l'àmbit de confiança entre processos (per exemple, pertànyer al mateix usuari o contenidor). Quan s'organitza l'execució del codi, el planificador pot assegurar-se que un nucli de CPU només es comparteix entre els processos associats amb el mateix propietari, que es pot utilitzar per bloquejar alguns atacs de Spectre evitant que les tasques de confiança i no s'executin al mateix fil SMT (Hyper Threading). .
    • Per a cgroup, s'ha implementat el suport per a l'operació kill, que us permet matar tots els processos associats al grup alhora (envieu SIGKILL) escrivint "1" al fitxer virtual cgroup.kill.
    • Capacitats ampliades relacionades amb la resposta a la detecció de bloquejos dividits ("bloquejos dividits") que es produeixen quan s'accedeix a dades no alineades a la memòria a causa del fet que quan s'executa una instrucció atòmica, les dades creuen dues línies de memòria cau de la CPU. Aquest bloqueig comporta una caiguda important del rendiment, de manera que anteriorment era possible cancel·lar per força l'aplicació que va provocar el bloqueig. La nova versió afegeix un paràmetre de línia d'ordres del nucli "split_lock_detect=ratelimit:N", que us permet definir un límit per a tot el sistema de la velocitat d'operacions de bloqueig per segon, després de superar qualsevol procés que s'hagi convertit en l'origen d'un bloqueig dividit. es veurà forçat a aturar-se durant 20 ms en lloc d'acabar.
    • El controlador d'amplada de banda de cgroup CFS (controlador d'amplada de banda CFS), que determina quant temps de processador es pot assignar a cada grup c, implementa la capacitat de definir límits de temps limitats, cosa que permet una millor regulació de les càrregues de treball sensibles a la latència. Per exemple, establir cpu.cfs_quota_us a 50000 i cpu.cfs_period_us a 100000 permetrà que un grup de processos perdi 100 ms de temps de CPU cada 50 ms.
    • S'ha afegit una infraestructura inicial per crear carregadors de programes BPF, que permetrà a més carregar només programes BPF signats amb una clau digital de confiança.
    • S'ha afegit una nova operació futex FUTEX_LOCK_PI2, que utilitza un temporitzador monòton per calcular un temps d'espera que té en compte el temps que passa el sistema en mode de repòs.
    • Per a l'arquitectura RISC-V, s'implementa el suport per a pàgines de memòria grans (Transparent Huge-Pages) i la capacitat d'utilitzar el mecanisme KFENCE per detectar errors quan es treballa amb memòria.
    • La crida al sistema madvise(), que proporciona un mitjà per optimitzar la gestió de la memòria d'un procés, ha afegit els senyaladors MADV_POPULATE_READ i MADV_POPULATE_WRITE per generar un "error de pàgina" a totes les pàgines de memòria assignades per a operacions de lectura o escriptura, sense realitzar una lectura o escriptura real. (predeterminat). L'ús de senyaladors pot ser útil per reduir els retards en l'execució del programa, a causa de l'execució proactiva del gestor d'errors de pàgina per a totes les pàgines no assignades alhora, sense esperar l'accés real a elles.
    • El sistema de proves d'unitats kunit ha afegit suport per executar proves a l'entorn QEMU.
    • S'han afegit nous traçadors: "osnoise" per fer un seguiment dels retards de les aplicacions causats pel maneig d'interrupcions i "timerlat" per mostrar informació detallada sobre els retards en despertar-se d'un senyal de temporitzador.
  • Virtualització i seguretat
    • S'ha afegit la crida al sistema memfd_secret() per crear una àrea de memòria privada en un espai d'adreces aïllat, visible només per al procés propietari, no reflectida en altres processos i no accessible directament al nucli.
    • Al sistema de filtratge de trucades del sistema seccomp, quan es mou els controladors de bloqueig a l'espai d'usuari, és possible utilitzar una única operació atòmica per crear un descriptor de fitxer per a una tasca aïllada i retornar-lo quan es processa una trucada al sistema. L'operació proposada resol el problema d'interrompre un controlador a l'espai d'usuari quan arriba un senyal.
    • S'ha afegit un nou mecanisme per gestionar els límits de recursos a l'espai de noms d'ID d'usuari, que uneix comptadors individuals de rlimit a un usuari a l'"espai de noms d'usuari". El canvi soluciona el problema amb l'ús de comptadors de recursos comuns quan un usuari executa processos en diferents contenidors.
    • L'hipervisor KVM per a sistemes ARM64 ha afegit la possibilitat d'utilitzar l'extensió MTE (MemTag, Memory Tagging Extension) als sistemes convidats, que permet vincular etiquetes a cada operació d'assignació de memòria i organitzar la comprovació de l'ús correcte dels punters per bloquejar l'explotació de vulnerabilitats causades per l'accés a blocs de memòria ja alliberats, desbordaments de memòria intermèdia, accessos abans de la inicialització i ús fora del context actual.
    • Les instal·lacions d'autenticació de punter de la plataforma ARM64 ara es poden configurar per separat per al nucli i l'espai d'usuari. La tecnologia us permet utilitzar instruccions especialitzades ARM64 per verificar les adreces de retorn mitjançant signatures digitals que s'emmagatzemen als bits superiors no utilitzats del propi punter.
    • El mode d'usuari Linux ha afegit suport per a l'ús de controladors per a dispositius PCI amb un bus PCI virtual, implementat pel controlador PCI-over-virtio.
    • Per als sistemes x86, s'ha afegit suport per al dispositiu paravirtualitzat virtio-iommu, permetent que les sol·licituds IOMMU com ATTACH, DETACH, MAP i UNMAP s'enviïn a través del transport virtio sense emular taules de pàgines de memòria.
    • Per a les CPU Intel, des de la família Skylake fins a Coffee Lake, l'ús d'Intel TSX (Extensions de sincronització transaccional), que proporcionen eines per millorar el rendiment de les aplicacions multiprocés eliminant dinàmicament les operacions de sincronització innecessàries, està desactivat per defecte. Les extensions es desactiven a causa de la possibilitat d'atacs de Zombieload que manipulin la filtració d'informació a través de canals de tercers que es produeix durant el funcionament del mecanisme TAA (TSX Asynchronous Abort).
  • Subsistema de xarxa
    • Integració al nucli de MPTCP (MultiPath TCP), una extensió del protocol TCP per organitzar el funcionament d'una connexió TCP amb el lliurament de paquets simultàniament al llarg de diverses rutes a través de diferents interfícies de xarxa associades a diferents adreces IP. La nova versió afegeix un mecanisme per establir les vostres pròpies polítiques de hash de trànsit per a IPv4 i IPv6 (política de hash multipath), que permet determinar des de l'espai d'usuari quins camps dels paquets, inclosos els encapsulats, s'utilitzaran quan es calculi el hash que determina el elecció del camí per al paquet.
    • S'ha afegit suport per a sockets SOCK_SEQPACKET (transmissió ordenada i fiable de datagrames) al transport virtual de virtio.
    • S'han ampliat les capacitats del mecanisme de socket SO_REUSEPORT, que permet que diversos endolls d'escolta es connectin a un port alhora per rebre connexions amb la distribució de sol·licituds entrants simultàniament a tots els endolls connectats mitjançant SO_REUSEPORT, la qual cosa simplifica la creació d'aplicacions de servidor multiprocés. . La nova versió afegeix eines per transferir el control a un altre sòcol en cas de fallada en processar una sol·licitud del sòcol seleccionat inicialment (resol el problema de la pèrdua de connexions individuals en reiniciar els serveis).
  • Оборудование
    • El controlador amdgpu proporciona suport per a la nova sèrie de GPU AMD Radeon RX 6000, amb el nom en clau "Beige Goby" (Navi 24) i "Yellow Carp", així com un suport millorat per a la GPU Aldebaran (gfx90a) i Van Gogh APU. S'ha afegit la possibilitat de treballar simultàniament amb diversos panells eDP. Per a APU Renoir, s'ha implementat el suport per treballar amb buffers xifrats a la memòria de vídeo (TMZ, Trusted Memory Zone). S'ha afegit suport per a targetes gràfiques desconnectades en calent. Per a les GPU Radeon RX 6000 (Navi 2x) i les GPU AMD anteriors, el suport ASPM (Active State Power Management) està activat de manera predeterminada, que abans només estava habilitat per a les GPU Navi 1x, Vega i Polaris.
    • Per als xips AMD, s'ha afegit suport per a memòria virtual compartida (SVM, memòria virtual compartida) basat en el subsistema HMM (gestió de memòria heterogènia), que permet l'ús de dispositius amb unitats de gestió de memòria pròpies (MMU, unitat de gestió de memòria), que pot accedir a la memòria principal. En particular, amb HMM, podeu organitzar un espai d'adreces compartit entre la GPU i la CPU, en el qual la GPU pot accedir a la memòria principal del procés.
    • S'ha afegit suport inicial per a la tecnologia AMD Smart Shift, que canvia dinàmicament la configuració d'alimentació de la CPU i la GPU en ordinadors portàtils amb un chipset AMD i una targeta gràfica per augmentar el rendiment dels jocs, l'edició de vídeo i la representació 3D.
    • El controlador i915 per a targetes gràfiques Intel inclou suport per a xips Intel Alderlake P.
    • S'ha afegit el controlador drm/hyperv per a l'adaptador de gràfics virtuals Hyper-V.
    • S'ha afegit suport per a l'ordinador tot en un Raspberry Pi 400.
    • S'ha afegit el controlador dell-wmi-privacy per donar suport als interruptors de càmera i micròfon de maquinari inclosos als ordinadors portàtils Dell.
    • Per als portàtils Lenovo, s'ha afegit una interfície WMI per canviar la configuració de la BIOS mitjançant sysfs /sys/class/firmware-attributes/.
    • Suport ampliat per a dispositius amb interfície USB4.
    • S'ha afegit suport per a targetes de so i còdecs AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 i Texas Instruments TAS2505. Suport d'àudio millorat en portàtils HP i ASUS. S'han afegit pegats per reduir els retards abans que l'àudio comenci a reproduir-se als dispositius USB.

Font: opennet.ru

Afegeix comentari