Nucli Linux 5.14

Nucli Linux 5.14

Després de dos mesos de desenvolupament, Linus Torvalds introduït 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.

El principal innovacions:

  • subsistema de disc, sistemes d'entrada/sortida i fitxers:
    • per a cgroup implementat nou controlador de prioritat d'E/S - rq-qos, que pot controlar la prioritat de processament de les sol·licituds per bloquejar els dispositius generats pels membres de cada grup c. S'ha afegit un nou suport de controlador de prioritat al planificador d'E/S de mq-deadline;
    • al sistema de fitxers ext4 implementat nova ordre ioctl EXT4_IOC_CHECKPOINT, que força totes les transaccions pendents del registre i els buffers associats al disc, i també sobreescriu l'àrea utilitzada pel registre a l'emmagatzematge. El canvi es va preparar com a part d'una iniciativa per evitar filtracions d'informació dels sistemes de fitxers;
    • en Btrfs introduït Optimitzacions de rendiment: en eliminar el registre innecessari d'atributs ampliats durant l'execució de fsync, el rendiment de les operacions intensives amb atributs ampliats va augmentar 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 d'eliminació del dispositiu;
    • en XFS reelaborat implementació d'una memòria cau de memòria intermèdia, que es transfereix a l'assignació de pàgines de memòria en mode per lots. Millora de l'eficiència de la memòria cau;
    • F2FS va afegir una opció per treballar en mode de només lectura i va implementar 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 per màscara, s'ha proposat una nova opció de muntatge nocompress;
    • s'ha treballat en el controlador exFAT per millorar la compatibilitat amb l'emmagatzematge d'algunes càmeres digitals;
    • trucada al sistema afegida 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 suport per a dispositius antics s'ha mantingut totalment, els canvis només es refereixen a la capacitat d'utilitzar controladors antics, quan s'utilitzaven les unitats s'anomenaven /dev/hd*, i no /dev/sd*;
    • 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:
    • s'ha implementat un nou mode de programació al planificador de tasques 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 la 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 s'executin tasques fiables i poc fiables al mateix fil SMT (Hyper Threading). ;
    • per al mecanisme cgroup, s'ha implementat el suport per a l'operació kill, que permet matar tots els processos associats al grup alhora (enviar 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 en accedir 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 el paràmetre de línia d'ordres del nucli "split_lock_detect=ratelimit:N", que us permet definir un límit a tot el sistema de la velocitat d'operacions de bloqueig per segon, després de superar el qual qualsevol procés que es converteixi en l'origen d'un bloqueig dividit. ser obligat 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, té la capacitat de definir límits limitats per una durada d'acció determinada, cosa que permet una millor regulació de les càrregues 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;
    • afegit infraestructura inicial per a la creació de carregadors de programes BPF, que permetran a més la descàrrega només de programes BPF signats amb una clau digital fiable;
    • s'ha afegit una nova operació futex FUTEX_LOCK_PI2, que utilitza un temporitzador monòton per calcular el temps d'espera, que té en compte el temps que passa el sistema en mode de suspensió;
    • per a l'arquitectura RISC-V, suport per a pàgines de memòria grans (Transparent Huge-Pages) i la capacitat d'utilitzar el KFENCE identificar errors quan es treballa amb memòria;
    • a la crida al sistema madvise(), que proporciona un mitjà per optimitzar la gestió de la memòria del procés, afegit Les marques 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 (predeterminació). L'ús de flags pot ser útil per reduir els retards en l'execució del programa, gràcies a l'execució proactiva del gestor de "error de pàgina" per a totes les pàgines no assignades alhora, sense esperar l'accés real a elles;
    • en un sistema de proves unitàries kunit afegit suport per executar proves a l'entorn QEMU;
    • nous traçadors afegits: "osnoise" per fer un seguiment dels retards de l'aplicació 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:
    • afegit trucada al sistema memfd_secret(), que permet crear una àrea de memòria privada en un espai d'adreces aïllat, visible només pel 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 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 amb interrupció del gestor a l'espai d'usuari quan arriba un senyal;
    • afegit nou mecanisme per gestionar la limitació de recursos a l'espai de noms de l'ID d'usuari, que uneix comptadors individuals de límit a un usuari a l'"espai de noms d'usuari". El canvi resol 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;
    • L'autenticació de punter proporcionada per la plataforma ARM64 ara es pot 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;
    • en mode d'usuari Linux 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, que permet enviar sol·licituds IOMMU, com ara ATTACH, DETACH, MAP i UNMAP, 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 estan desactivades a causa de la possibilitat d'atacs Zombieload, manipulant la fuga d'informació per canals de tercers que es produeix durant el funcionament del mecanisme d'interrupció asíncrona de les operacions (TAA, TSX Asynchronous Abort);
  • subsistema de xarxa:
    • integració continuada 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. En el nou número afegit un mecanisme per establir les teves 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 calcula el hash que determina l'elecció del camí. per al paquet;
    • S'ha afegit suport de socket al virtio de transport virtual SOCK_SEQPACKET (transmissió ordenada i fiable de datagrames);
    • 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. . En la nova versió afegit mitjans per transferir el control a un altre sòcol en cas d'error en processar una sol·licitud del sòcol seleccionat inicialment (resol el problema amb la pèrdua de connexions individuals en reiniciar els serveis);
  • equipament:
    • al controlador amdgpu implementat 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 suport millorat per a la GPU Aldebaran (gfx90a) i l'APU Van Gogh. 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 més antigues, el suport per al mecanisme d'estalvi d'energia ASPM (Active State Power Management) està habilitat per defecte, 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. Incloent l'ús de 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;
    • suport tecnològic inicial afegit AMD Smart Shift, que canvia dinàmicament els paràmetres de consum d'energia de la CPU i la GPU en ordinadors portàtils amb un chipset i una targeta gràfica AMD per augmentar el rendiment en jocs, edició de vídeo i renderització 3D;
    • al controlador i915 per a targetes de vídeo Intel inclòs suport per a xips Intel Alderlake P;
    • controlador drm/hyperv afegit per a l'adaptador de gràfics virtual Hyper-V;
    • afegit Controlador de gràfics simpledrm que utilitza el framebuffer EFI-GOP o VESA proporcionat pel microprogramari UEFI o la BIOS per a la sortida. L'objectiu principal del controlador és proporcionar capacitats de sortida gràfica durant les etapes inicials de l'arrencada, abans que es pugui utilitzar un controlador DRM complet. El controlador també es pot utilitzar com a solució temporal per a equips que encara no tenen controladors DRM natius;
    • afegit suport informàtic tot en un Gerd Pi 400;
    • S'ha afegit el controlador dell-wmi-privacy per donar suport als interruptors de maquinari de la càmera i el micròfon inclosos als portàtils Dell;
    • per a portàtils Lenovo afegit Interfície WMI per canviar els paràmetres de la BIOS mitjançant sysfs /sys/class/firmware-attributes/;
    • expandit suport per a dispositius amb interfície USB4;
    • 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. Afegit pedaços per reduir els retards abans que l'àudio comenci a reproduir-se en dispositius amb una interfície USB.

Font - opennet.ru.

Font: linux.org.ru