Llançament del nucli Linux 5.3

Després de dos mesos de desenvolupament, Linus Torvalds introduït llançament del nucli Linux 5.3. Entre els canvis més destacats: suport per a GPU AMD Navi, processadors Zhaoxi i tecnologia de gestió d'energia Intel Speed ​​​​Select, la possibilitat d'utilitzar instruccions umwait per esperar sense utilitzar cicles,
Mode d'utilització de fixació que augmenta la interactivitat per a CPU asimètriques, la trucada al sistema pidfd_open, la possibilitat d'utilitzar adreces IPv4 de la subxarxa 0.0.0.0/8, la possibilitat d'acceleració de maquinari nftables, suport HDR al subsistema DRM, integració de l'ACRN hipervisor.

В anunci nova versió, Linus va recordar a tots els desenvolupadors la regla principal del desenvolupament del nucli: mantenir el mateix comportament per als components de l'espai d'usuari. Els canvis al nucli no haurien de trencar de cap manera les aplicacions que ja estan en execució ni conduir a regressió a nivell d'usuari. En aquest cas, una violació del comportament pot provocar no només un canvi en l'ABI, l'eliminació de codi obsolet o l'aparició d'errors, sinó també l'impacte indirecte de millores útils que funcionen correctament. Com a exemple il·lustratiu hi va haver descartat útil optimització al codi Ext4, que redueix el nombre d'accessos a la unitat desactivant la lectura prèvia de la taula d'inodes per a petites sol·licituds d'E/S.

L'optimització va portar al fet que, a causa d'una disminució de l'activitat del disc, l'entropia del generador de números aleatoris getrandom() va començar a acumular-se més lentament i en algunes configuracions, en determinades circumstàncies, es van poder observar congelacions durant la càrrega fins que es va establir el grup d'entropia. ple. Atès que l'optimització és realment útil, va sorgir una discussió entre els desenvolupadors en què es va proposar solucionar el problema desactivant el mode de bloqueig predeterminat de la trucada getrandom() i afegint un senyalador opcional per esperar l'entropia, però aquest canvi afectaria el qualitat dels números aleatoris en l'etapa inicial de càrrega.

La nova versió inclou 15794 correccions de 1974 desenvolupadors,
mida del pedaç: 92 MB (els canvis van afectar 13986 fitxers, s'han afegit 258419 línies de codi,
S'han eliminat 599137 files). Al voltant del 39% de tots els presentats a 5.3
els canvis estan relacionats amb els controladors de dispositiu, aproximadament el 12% dels canvis
actitud cap a l'actualització de codi específic de les arquitectures de maquinari, 11%
relacionats amb la pila de xarxa, un 3% amb sistemes de fitxers i un 3% amb interns
subsistemes del nucli.

El principal innovacions:

  • Serveis de memòria i sistema
    • Desenvolupament continuat de la funcionalitat "pidfd" per ajudar a gestionar situacions de reutilització de PID (pidfd s'associa a un procés específic i no canvia, mentre que un PID es pot associar a un altre procés després que finalitzi el procés actual associat amb aquest PID). S'ha afegit prèviament al nucli
      la crida al sistema pidfd_send_signal() i el senyalador CLONE_PIDFD a la crida clone() per obtenir un pidfd per utilitzar-lo a idfd_send_signal(). L'ús de clone() amb el senyalador CLONE_PIDFD podria provocar problemes amb els gestors de serveis o amb el sistema de terminació de la memòria sense memòria de la plataforma Android. En aquest cas, s'utilitza una crida a fork() o clone() sense CLONE_PIDFD per començar.

      El nucli 5.3 va introduir la trucada al sistema pidfd_open(), que us permet obtenir un pidfd verificable per a un procés existent arbitrari que no s'ha creat cridant a clone() amb el senyalador CLONE_PIDFD. També s'ha afegit suport per a l'enquesta pidfd mitjançant poll() i epoll(), que permet als gestors de processos fer un seguiment de la terminació de processos arbitraris sense por a una condició de carrera si s'assigna un PID a un procés nou. El mecanisme per notificar quan s'ha acabat un procés associat amb pidfd és semblant a notificar quan ha finalitzat el seu procés fill;

    • S'ha afegit suport per al mecanisme de fixació de càrrega al planificador de tasques (Subjecció d'utilització), que us permet complir amb els rangs de freqüència mínim o màxim, en funció de les tasques actives a la CPU. El mecanisme presentat accelera les tasques que afecten directament la qualitat de l'experiència de l'usuari executant aquestes tasques almenys a l'extrem inferior de la freqüència "sol·licitada". Les tasques de baixa prioritat que no afecten el treball de l'usuari s'inicien utilitzant el límit superior de la freqüència "permesa". Els límits s'estableixen mitjançant els atributs sched_uclamp_util_min i sched_uclamp_util_max a la crida al sistema sched_setattr().
    • S'ha afegit suport per a la tecnologia de gestió energètica Intel Speed ​​​​Select, disponible en servidors selectes amb processadors Intel Xeon. Aquesta tecnologia us permet establir paràmetres de rendiment i rendiment de partició per a diferents nuclis de CPU, la qual cosa us permet prioritzar el rendiment de les tasques realitzades en determinats nuclis, sacrificant el rendiment d'altres nuclis;
    • Processos a l'espai d'usuari concedit la capacitat d'esperar un temps curt sense utilitzar bucles mitjançant la instrucció umwait. Aquesta instrucció, juntament amb les instruccions umonitor i tpause, s'oferirà als propers xips "Tremont" d'Intel i permetrà la implementació de retards que siguin eficients energèticament i que no afectin el rendiment d'altres fils quan s'utilitzi Hyper Threading;
    • Per a l'arquitectura RISC-V, s'ha afegit suport per a pàgines de memòria grans;
    • El mecanisme de seguiment de kprobes ha afegit la capacitat de desreferenciar els punters del nucli a l'espai d'usuari, que es pot utilitzar, per exemple, per avaluar el contingut de les estructures passats a les trucades del sistema. També s'ha afegit la possibilitat d'instal·lar comprovacions en l'etapa d'arrencada.
    • S'ha afegit l'opció PREEMPT_RT al fitxer de configuració per al funcionament en temps real. El codi en si per donar suport al mode en temps real encara no s'ha afegit al nucli, però l'aparició de l'opció és un bon senyal que l'èpica a llarg termini integració Els pedaços de preempt en temps real estan a punt de completar-se;
    • S'ha afegit la crida al sistema clone3() amb la implementació d'una versió més extensible de la interfície clone(), que permet especificar un nombre més gran de senyaladors;
    • S'ha afegit el controlador bpf_send_signal(), que permet als programes BPF enviar senyals a processos arbitraris;
    • Per als esdeveniments de perf a l'entorn d'hipervisor KVM, s'ha afegit un nou mecanisme de filtratge d'esdeveniments, que permet a l'administrador determinar els tipus d'esdeveniments que es permeten o no per a la supervisió al costat del sistema convidat;
    • La capacitat de processar programes amb bucles s'ha afegit al mecanisme de verificació de l'aplicació eBPF si l'execució del bucle és limitada i no pot portar a superar el límit del nombre màxim d'instruccions;
  • Subsistema de disc, E/S i sistemes de fitxers
    • El sistema de fitxers XFS ara admet el bypass d'inodes multifils (per exemple, quan es comproven les quotes). S'han afegit nous ioctls BULKSTAT i INUMBERS, que ofereixen accés a les característiques que van aparèixer a la cinquena edició del format FS, com ara l'hora de naixement de l'inode i la possibilitat d'establir els paràmetres BULKSTAT i INUMBERS per a cada grup AG (Grups d'assignació);
    • A Ext4 suport afegit buits als directoris (blocs no enllaçats).
      Tramitació proporcionada marca "i" (immutable) per a fitxers oberts (l'escriptura està prohibida en una situació si la marca es va establir en un moment en què el fitxer ja estava obert);

    • Btrfs proporciona una definició d'una implementació ràpida de crc32c a totes les arquitectures;
    • A CIFS, el codi per al suport smbdirect s'ha eliminat com a desenvolupament experimental. SMB3 va afegir la possibilitat d'utilitzar algorismes criptogràfics en mode GCM. S'ha afegit una nova opció de muntatge per extreure els paràmetres de mode de les entrades ACE (Access Control Entry). S'ha optimitzat el rendiment de la crida open();
    • S'ha afegit una opció a F2FS per limitar el col·lector d'escombraries quan s'executa en mode punt de control = inhabilitar. S'ha afegit ioctl per eliminar els intervals de blocs de F2FS, permetent ajustar la mida de la partició sobre la marxa. S'ha afegit la possibilitat de col·locar un fitxer d'intercanvi a F2FS per proporcionar E/S directa. S'ha afegit suport per fixar un fitxer i assignar blocs per a fitxers similars per a tots els usuaris;
    • S'ha afegit suport per a operacions asíncrones sendmsg() i recvmsg() a la interfície per a io_uring d'entrada/sortida asíncrona;
    • S'ha afegit suport per a la compressió mitjançant l'algoritme zstd i la possibilitat de verificar imatges FS signades al sistema de fitxers UBIFS;
    • Ceph FS ara admet etiquetes de seguretat SELinux per a fitxers;
    • Per a NFSv4, s'ha implementat una nova opció de muntatge “nconnect=", que determina el nombre de connexions establertes amb el servidor. El trànsit entre aquestes connexions es distribuirà mitjançant l'equilibri de càrrega. A més, el servidor NFSv4 ara crea un directori /proc/fs/nfsd/clients amb informació sobre els clients actuals, inclosa informació sobre els fitxers que han obert;
  • Virtualització i seguretat
    • El nucli inclou un hipervisor per a dispositius incrustats ACRN, que està escrit amb l'objectiu de preparar-se per a tasques en temps real i apte per utilitzar-lo en sistemes de missió crítica. L'ACRN proporciona una sobrecàrrega mínima, garanteix una baixa latència i una resposta adequada en interactuar amb l'equip. Admet la virtualització de recursos de CPU, E/S, subsistema de xarxa, gràfics i operacions de so. L'ACRN es pot utilitzar per executar diverses màquines virtuals aïllades en unitats de control electròniques, taulers de comandament, sistemes d'informació d'automòbils, dispositius IoT de consum i altres tecnologies integrades;
    • En mode d'usuari Linux afegit Mode de viatge en el temps, que us permet alentir o accelerar el temps en un entorn UML virtual per facilitar la depuració del codi relacionat amb el temps. A més, s'ha afegit un paràmetre
      time-travel-start, que permet que el rellotge del sistema comenci des d'un moment determinat en format d'època;

    • S'han afegit noves opcions de línia d'ordres del nucli "init_on_alloc" i "init_on_free", quan s'especifica, s'ha activat la reducció a zero de les àrees de memòria assignades i alliberades (omplint zeros per a malloc i free), que permet augmentar la seguretat a causa de la sobrecàrrega d'inicialització addicional;
    • S'ha afegit un nou controlador virtio-iommu amb la implementació d'un dispositiu paravirtualitzat que permet enviar peticions IOMMU com ATTACH, DETACH, MAP i UNMAP sobre el transport virtio sense emular taules de pàgines de memòria;
    • S'ha afegit un nou controlador virtio-pmem, que representa l'accés als dispositius d'emmagatzematge assignats a l'espai d'adreces física, com ara NVDIMM;
    • S'ha implementat la possibilitat d'adjuntar claus criptogràfiques a un espai de noms d'usuari o de xarxa (les claus es tornen inaccessibles fora de l'espai de noms seleccionat), així com protegir les claus mitjançant ACL;
    • Al subsistema criptogràfic afegit suport per a un algorisme de hash no criptogràfic molt ràpid xxhash, la velocitat de la qual depèn del rendiment de la memòria;
  • Subsistema de xarxa
    • S'ha activat el processament d'adreces IPv4 en l'interval 0.0.0.0/8, que abans no es podia utilitzar. Introducció d'aquesta subxarxa permetrà distribuir 16 milions d'adreces IPv4 més;
    • A Netfilter per a nftables afegit suport per a mecanismes d'acceleració de maquinari per al filtratge de paquets mitjançant l'ús de controladors afegits API Flow Block. Es poden col·locar taules senceres de regles amb totes les cadenes al costat dels adaptadors de xarxa. L'habilitació es fa enllaçant el senyalador NFT_TABLE_F_HW a la taula. Admet metadades de protocols de capa 3 i capa 4 senzilles, accions d'acceptació/rebutjada, mapes per IP i ports de xarxa d'emissor/receptor i tipus de protocol;
    • Afegit suport de seguiment de connexió integrat per a ponts de xarxa, que no requereix l'ús de la capa d'emulació br_netfilter;
    • A nf_tables afegit També s'implementa el suport per al mòdul SYNPROXY, que replica una funcionalitat similar d'iptables, i la capacitat de registrar regles per a opcions individuals a la capçalera IPv4;
    • S'ha afegit la possibilitat d'adjuntar programes BPF a les trucades del sistema setsockopt() i getsockopt(), que, per exemple, us permeten adjuntar els vostres propis controladors d'accés a aquestes trucades. A més, s'ha afegit un nou punt de trucada (ganxo), amb el qual es pot organitzar una trucada al programa BPF una vegada per cada interval RTT (temps d'anada i tornada, temps de ping);
    • Per a IPv4 i IPv6 afegit nou mecanisme d'emmagatzematge de dades d'enrutament nexthop destinat a augmentar l'escalabilitat de les taules d'encaminament. Les proves van demostrar que quan s'utilitzava el nou sistema, es va carregar al nucli un conjunt de 743 mil rutes en només 4.3 segons;
    • Per Bluetooth implementat funcionalitat necessària per donar suport al ping de LE;
  • Оборудование
    • Afegit suport per als processadors compatibles amb x86 de l'empresa Zhaoxin, desenvolupat com a resultat d'un projecte conjunt entre VIA Technologies i l'Ajuntament de Xangai. La família de CPU ZX es basa en l'arquitectura x86-64 Isaiah, continuant el desenvolupament de la tecnologia VIA Centaure;
    • El subsistema DRM (Direct Rendering Manager), així com els controladors de gràfics amdgpu i i915, ha afegit suport per analitzar, processar i enviar metadades HDR (range dinàmic alt) a través del port HDMI, permetent l'ús de panells i pantalles HDR capaços de mostrar rangs de brillantor addicionals;
    • El controlador amdgpu ha afegit suport inicial per a la GPU AMD NAVI (RX5700), que inclou el controlador base, el codi d'interacció de pantalla (DCN2), GFX i suport informàtic (GFX10),
      SDMA 5 (Sistema DMA0), gestió d'energia i codificadors/descodificadors multimèdia (VCN2). amdgpu també millora el suport per a targetes basades en GPU Vega12 i Vega20, per a les quals s'han afegit capacitats addicionals de gestió de memòria i energia;

    • S'ha afegit suport per a targetes basades en GPU VegaM al controlador amdkfd (per a GPU discretes, com ara Fiji, Tonga, Polaris);
    • Al controlador DRM per a targetes de vídeo Intel per a xips Icelake implementat nou mode de correcció gamma multisegment. S'ha afegit la possibilitat de sortir a través de DisplayPort en el format YCbCr4:2:0. S'ha afegit un nou firmware GuC per a SKL, BXT, KBL, GLK i ICL. S'ha implementat la possibilitat d'apagar l'alimentació de la pantalla en mode asíncron. Afegit suport per desar i restaurar el context de renderització dels xips Ironlake (gen5) i gen4 (Broadwater - Cantiga), que us permet restaurar l'estat de la GPU des de l'espai de l'usuari quan passeu d'una operació per lots a una altra;
    • El controlador Nouveau proporciona la detecció del chipset NVIDIA Turing TU116;
    • S'han ampliat les capacitats del controlador DRM/KMS per als acceleradors de pantalla ARM Komeda (Mali D71), suport per a l'escalat, capes dividides/fusionades, rotació, escriptura diferida, AFBC, SMMU i formats de codificació de color Y0L2, P010, YUV420_8/10BIT. s'ha afegit;
    • El controlador MSM afegeix suport per a la sèrie A540 GPU Adreno utilitzada en processadors Qualcomm, així com suport per al controlador MSM8998 DSI per a Snapdragon 835;
    • S'han afegit controladors per als panells LCD Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 i VXT VL050-8048NT-C01;

    • Afegit controlador per habilitar eines d'acceleració de descodificació
      vídeos disponibles a Amlogic Meson SoC;

    • Al controlador v3d (per a la GPU Broadcom Video Core V utilitzada al Raspberry Pi) va aparèixer donar suport enviament d'ombrejats informàtics;
    • Afegit controlador per a teclats i trackpads SPI utilitzats en models moderns d'ordinadors portàtils Apple MacBook i MacBookPro;
    • Afegit protecció addicional per a les trucades ioctl associades amb el controlador de disquet, i el propi controlador està marcat com a no mantingut
      (“orfes”), que implica la finalització de la seva prova. El controlador encara està emmagatzemat al nucli, però el seu correcte funcionament no està garantit. El controlador es considera obsolet, ja que és difícil trobar equips de treball per provar-lo: totes les unitats externes actuals, per regla general, utilitzen la interfície USB.

    • Afegit Controlador cpufreq per a plaques Raspberry Pi, que us permet controlar de forma dinàmica els canvis en la freqüència del processador;
    • S'ha afegit suport per al nou SoC ARM Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) i Amlogic G12B (4x Cortex-A73 + 2x Cortex- A53 ), així com taulers:
      • Purisme Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Caixa de televisió Hugsun X99 (Rockchip RK3399),
      • Khadas Edge/Edge-V/Capità (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Paral·lelament, la Fundació Llatinoamericana de Programari Lliure format
вариант nucli completament lliure 5.3 - Linux-libre 5.3-gnu, eliminada dels elements de microprogramari i controladors que contenen components o seccions de codi no lliures, l'abast dels quals està limitat pel fabricant. A la nova versió, la càrrega de blob està desactivada als controladors qcom, hdcp drm, allegro-dvt i meson-vdec.
Codi de neteja de blob actualitzat als controladors i subsistemes amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, controlador de so per a Skylake, així com a la documentació del microcodi.

Font: opennet.ru

Afegeix comentari