Linux 5.19 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, ipinakita ni Linus Torvalds ang paglabas ng Linux kernel 5.19. Kabilang sa mga pinaka-kapansin-pansing pagbabago: suporta para sa arkitektura ng processor ng LoongArch, pagsasama ng "BIG TCP" na mga patch, on-demand na mode sa fscache, pag-alis ng code upang suportahan ang a.out na format, ang kakayahang gumamit ng ZSTD para sa firmware compression, isang interface para sa pamamahala ng memory eviction mula sa user space , pagtaas ng reliability at performance ng pseudo-random number generator, suporta para sa Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) at ARM Mga extension ng SME (Scalable Matrix Extension).

Sa anunsyo, sinabi ni Linus na malamang na ang susunod na pagpapalabas ng kernel ay may bilang na 6.0, dahil ang sangay ng 5.x ay nakaipon ng sapat na mga paglabas upang baguhin ang unang numero sa numero ng bersyon. Ang pagpapalit ng numero ay isinasagawa para sa aesthetic na mga kadahilanan at ito ay isang pormal na hakbang na nagpapagaan ng kakulangan sa ginhawa dahil sa akumulasyon ng malaking bilang ng mga isyu sa serye.

Binanggit din ni Linus na gumamit siya ng Apple laptop batay sa ARM64 architecture (Apple Silicon) na may Linux environment na nakabatay sa Asahi Linux distribution para gawin ang release. Hindi ito ang pangunahing workstation ni Linus, ngunit ginamit niya ang platform upang subukan ang pagiging angkop nito para sa kernel work at upang matiyak na makakagawa siya ng mga kernel release habang naglalakbay na may hawak na magaan na laptop. Dati, maraming taon na ang nakalilipas, nagkaroon ng karanasan si Linus sa paggamit ng kagamitan ng Apple para sa pag-unlad - minsan ay gumamit siya ng PC batay sa ppc970 CPU at isang Macbook Air laptop.

Kasama sa bagong bersyon ang 16401 na pag-aayos mula sa 2190 developer (sa huling release ay mayroong 16206 na pag-aayos mula sa 2127 developer), ang laki ng patch ay 90 MB (naapektuhan ng mga pagbabago ang 13847 file, 1149456 na linya ng code ang idinagdag, 349177 linya ang tinanggal). Humigit-kumulang 39% ng lahat ng mga pagbabagong ipinakilala sa 5.19 ay nauugnay sa mga driver ng device, humigit-kumulang 21% ng mga pagbabago ay nauugnay sa pag-update ng code na partikular sa mga arkitektura ng hardware, 11% ay nauugnay sa networking stack, 4% ay nauugnay sa mga file system, at 3% ay nauugnay sa panloob na mga subsystem ng kernel.

Mga pangunahing inobasyon sa kernel 5.19:

  • Disk subsystem, I/O at mga file system
    • Ang file system ng EROFS (Enhanced Read-Only File System), na nilayon para gamitin sa mga read-only na partition, ay na-convert upang gamitin ang fscache subsystem, na nagbibigay ng data caching. Ang pagbabago ay makabuluhang nagpabuti sa pagganap ng mga system kung saan ang isang malaking bilang ng mga container ay inilunsad mula sa isang EROFS-based na imahe.
    • Ang isang on-demand na read mode ay idinagdag sa fscache subsystem, na ginagamit upang i-optimize ang EROFS. Ang bagong mode ay nagbibigay-daan sa iyo upang ayusin ang pagbabasa ng caching mula sa FS na mga imahe na matatagpuan sa lokal na sistema. Kabaligtaran sa paunang magagamit na mode ng operasyon, na nakatuon sa pag-cache sa lokal na file system ng data na inilipat sa pamamagitan ng mga network file system, ang "on-demand" na mode ay nagtatalaga ng mga function ng pagkuha ng data at pagsulat nito sa cache sa isang hiwalay na proseso sa background na tumatakbo sa espasyo ng gumagamit.
    • Nagbibigay ang XFS ng kakayahang mag-imbak ng bilyun-bilyong pinahabang katangian sa isang i-node. Ang maximum na bilang ng mga lawak para sa isang file ay nadagdagan mula 4 bilyon hanggang 247. Isang mode ang ipinatupad para sa atomically pag-update ng ilang pinahabang katangian ng file nang sabay-sabay.
    • Ang Btrfs file system ay nag-optimize ng trabaho gamit ang mga lock, na nagbigay-daan para sa humigit-kumulang 7% na pagtaas sa performance kapag direktang nagsusulat sa nowait mode. Ang pagganap ng mga operasyon sa NOCOW mode (nang walang copy-on-write) ay tumaas ng humigit-kumulang 3%. Ang pag-load sa cache ng pahina kapag pinapatakbo ang command na "send" ay nabawasan. Ang pinakamababang laki ng mga subpage ay binawasan mula 64K hanggang 4K (maaaring gamitin ang mga subpage na mas maliit kaysa sa mga kernel page). Ang isang paglipat ay ginawa mula sa paggamit ng isang radix tree sa XArrays algorithm.
    • Ang isang mode ay idinagdag sa NFS server upang palawigin ang pagpapanatili ng estado ng pag-lock na itinakda ng isang kliyente na huminto sa pagtugon sa mga kahilingan. Binibigyang-daan ka ng bagong mode na iantala ang pag-clear ng lock nang hanggang isang araw maliban kung humiling ang ibang kliyente ng nakikipagkumpitensyang lock. Sa normal na mode, ang pagharang ay na-clear 90 segundo pagkatapos huminto ang kliyente sa pagtugon.
    • Ang subsystem ng pagsubaybay sa kaganapan sa fanotify FS ay nagpapatupad ng FAN_MARK_EVICTABLE na flag, kung saan maaari mong hindi paganahin ang pag-pin ng mga target na i-node sa cache, halimbawa, upang huwag pansinin ang mga sub-branch nang hindi pini-pin ang kanilang mga bahagi sa cache.
    • Ang driver para sa FAT32 file system ay nagdagdag ng suporta para sa pagkuha ng impormasyon tungkol sa oras ng paglikha ng file sa pamamagitan ng statx system call na may pagpapatupad ng isang mas mahusay at functional na bersyon ng stat(), na nagbabalik ng pinalawak na impormasyon tungkol sa file.
    • Ang mga makabuluhang pag-optimize ay ginawa sa exFAT driver upang payagan ang sabay-sabay na pag-clear ng isang pangkat ng mga sektor kapag ang 'dirsync' mode ay aktibo, sa halip na sunud-sunod na sektor-by-sector clearing. Sa pamamagitan ng pagbawas sa bilang ng mga kahilingan sa pag-block pagkatapos ng pag-optimize, ang pagganap ng paggawa ng malaking bilang ng mga direktoryo sa SD card ay tumaas ng higit sa 73-85%, depende sa laki ng kumpol.
    • Kasama sa kernel ang unang corrective update sa ntfs3 driver. Dahil ang ntfs3 ay kasama sa 5.15 kernel noong Oktubre, ang driver ay hindi na-update at ang komunikasyon sa mga developer ay nawala, ngunit ang mga developer ay nagpatuloy na ngayon sa pag-publish ng mga pagbabago. Inalis ng mga iminungkahing patch ang mga error na humahantong sa mga pagtagas ng memorya at pag-crash, nalutas ang mga problema sa pagpapatupad ng xfstests, nilinis ang hindi nagamit na code, at naayos ang mga typo.
    • Para sa OverlayFS, ang kakayahang mag-map ng mga user ID ng mga naka-mount na file system ay ipinatupad, na ginagamit upang itugma ang mga file ng isang partikular na user sa isang naka-mount na foreign partition sa isa pang user sa kasalukuyang system.
  • Mga serbisyo ng memorya at system
    • Nagdagdag ng paunang suporta para sa LoongArch instruction set architecture na ginagamit sa Loongson 3 5000 processors, na nagpapatupad ng bagong RISC ISA, katulad ng MIPS at RISC-V. Ang arkitektura ng LoongArch ay magagamit sa tatlong lasa: stripped-down na 32-bit (LA32R), regular na 32-bit (LA32S), at 64-bit (LA64).
    • Inalis ang code para suportahan ang a.out executable file format, na hindi na ginagamit sa release 5.1. Ang format na a.out ay matagal nang hindi ginagamit sa mga Linux system, at ang pagbuo ng mga a.out na file ay hindi sinusuportahan ng mga modernong tool sa mga default na configuration ng Linux. Ang loader para sa mga a.out na file ay maaaring ganap na ipatupad sa espasyo ng user.
    • Ang suporta para sa mga opsyon sa boot na partikular sa x86 ay hindi na ipinagpatuloy: nosp, nosmap, nosmep, noexec at noclflush).
    • Ang suporta para sa hindi napapanahong arkitektura ng CPU h8300 (Renesas H8/300), na matagal nang naiwan nang walang suporta, ay hindi na ipinagpatuloy.
    • Pinalawak na mga kakayahan na nauugnay sa pagtugon sa pagtuklas ng mga split lock ("split lock") na nangyayari kapag nag-a-access ng hindi nakahanay na data sa memorya dahil sa katotohanan na kapag nagsasagawa ng atomic na pagtuturo, ang data ay tumatawid sa dalawang linya ng cache ng CPU. Ang ganitong mga pagbara ay humantong sa isang makabuluhang pagbaba sa pagganap. Kung dati, bilang default, ang kernel ay maglalabas ng babala na may impormasyon tungkol sa proseso na naging sanhi ng pagharang, ngayon ang problemang proseso ay mas pabagalin upang mapanatili ang pagganap ng natitirang bahagi ng system.
    • Nagdagdag ng suporta para sa mekanismo ng IFS (In-Field Scan) na ipinatupad sa mga processor ng Intel, na nagbibigay-daan sa iyong magpatakbo ng mababang antas ng mga pagsusuri sa diagnostic ng CPU na maaaring tumukoy ng mga problema na hindi natukoy ng mga karaniwang tool batay sa mga error correction code (ECC) o parity bits . Ang mga pagsubok na ginawa ay nasa anyo ng nada-download na firmware, na idinisenyo nang katulad ng mga pag-update ng microcode. Available ang mga resulta ng pagsubok sa pamamagitan ng sysfs.
    • Nagdagdag ng kakayahang mag-embed ng bootconfig file sa kernel, na nagbibigay-daan, bilang karagdagan sa mga opsyon sa command line, upang matukoy ang mga parameter ng kernel sa pamamagitan ng isang file ng mga setting. Isinasagawa ang pag-embed gamit ang opsyon sa pagpupulong na 'CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"'. Noong nakaraan, ang bootconfig ay tinutukoy sa pamamagitan ng paglakip sa initrd na imahe. Ang pagsasama sa kernel ay nagpapahintulot sa bootconfig na magamit sa mga pagsasaayos na walang initrd.
    • Naipatupad na ang kakayahang mag-download ng firmware na naka-compress gamit ang Zstandard algorithm. Ang isang set ng mga control file /sys/class/firmware/* ay idinagdag sa sysfs, na nagbibigay-daan sa iyong simulan ang pag-load ng firmware mula sa espasyo ng user.
    • Ang io_uring asynchronous I/O interface ay nag-aalok ng bagong flag, IORING_RECVSEND_POLL_FIRST, na, kapag itinakda, ay magpapadala muna ng network operation na ipoproseso gamit ang polling, na makakapag-save ng mga mapagkukunan sa mga sitwasyon kung saan ang pagproseso ng operasyon nang may ilang pagkaantala ay katanggap-tanggap. Nagdagdag din ang io_uring ng suporta para sa socket() system call, nagmungkahi ng mga bagong flag para pasimplehin ang pamamahala ng mga file descriptor, nagdagdag ng "multi-shot" mode para sa pagtanggap ng ilang koneksyon nang sabay-sabay sa accept() na tawag, at nagdagdag ng mga operasyon para sa pagpapasa ng NVMe direktang utos sa device.
    • Ang arkitektura ng Xtensa ay nagbibigay ng suporta para sa KCSAN (Kernel Concurrency Sanitizer) na tool sa pag-debug, na idinisenyo upang dynamic na makita ang mga kondisyon ng lahi sa loob ng kernel. Nagdagdag din ng suporta para sa sleep mode at coprocessors.
    • Para sa m68k architecture (Motorola 68000), isang virtual machine (platform simulator) na batay sa Android Goldfish emulator ang ipinatupad.
    • Para sa arkitektura ng AArch64, ipinatupad ang suporta para sa Armv9-A SME (Scalable Matrix Extension).
    • Ang eBPF subsystem ay nagbibigay-daan sa pag-imbak ng mga na-type na pointer sa mga istruktura ng mapa, at nagdaragdag din ng suporta para sa mga dynamic na pointer.
    • Ang isang bagong proactive na mekanismo ng pag-reclaim ng memory ay iminungkahi na sumusuporta sa kontrol ng user-space gamit ang memory.reclaim file. Ang pagsulat ng isang numero sa tinukoy na file ay susubukan na paalisin ang kaukulang bilang ng mga byte mula sa set na nauugnay sa cgroup.
    • Pinahusay na katumpakan ng paggamit ng memory kapag nag-compress ng data sa swap partition gamit ang zswap mechanism.
    • Para sa arkitektura ng RISC-V, ibinibigay ang suporta para sa pagpapatakbo ng mga 32-bit executable sa 64-bit system, idinagdag ang isang mode upang itali ang mga paghihigpit na katangian sa mga pahina ng memorya (halimbawa, upang huwag paganahin ang pag-cache), at ipinatupad ang function na kexec_file_load() .
    • Ang pagpapatupad ng suporta para sa 32-bit na Armv4T at Armv5 system ay iniangkop para sa paggamit sa mga unibersal na multi-platform kernel build na angkop para sa iba't ibang ARM system.
  • Virtualization at Seguridad
    • Ang EFI subsystem ay nagpapatupad ng kakayahang kumpidensyal na maglipat ng lihim na impormasyon sa mga sistema ng bisita nang hindi ito ibinubunyag sa host system. Ang data ay ibinibigay sa pamamagitan ng security/coco directory sa securityfs.
    • Ang Lockdown protection mode, na naghihigpit sa pag-access ng root user sa kernel at hinaharangan ang UEFI Secure Boot bypass path, ay nag-alis ng butas na nagpapahintulot sa proteksyon na ma-bypass sa pamamagitan ng pagmamanipula sa kernel debugger.
    • Kasama ang mga patch na naglalayong mapabuti ang pagiging maaasahan at pagganap ng pseudo-random number generator.
    • Kapag nagtatayo gamit ang Clang 15, ang suporta para sa mekanismo para sa pag-randomize ng mga istruktura ng kernel ay ipinatupad.
    • Ang mekanismo ng Landlock, na nagpapahintulot sa iyo na limitahan ang pakikipag-ugnayan ng isang pangkat ng mga proseso sa panlabas na kapaligiran, ay nagbibigay ng suporta para sa mga patakaran na nagbibigay-daan sa iyong kontrolin ang pagpapatupad ng mga pagpapatakbo ng pagpapalit ng pangalan ng file.
    • Ang subsystem ng IMA (Integrity Measurement Architecture), na idinisenyo upang i-verify ang integridad ng mga bahagi ng operating system gamit ang mga digital na lagda at hash, ay inilipat sa paggamit ng fs-verity module para sa pag-verify ng file.
    • Ang lohika ng mga aksyon kapag hindi pinapagana ang walang pribilehiyong pag-access sa eBPF subsystem ay binago - dati lahat ng mga command na nauugnay sa bpf() system call ay hindi pinagana, at simula sa bersyon 5.19, ang access sa mga command na hindi humahantong sa paglikha ng mga bagay ay naiwan. . Ang pag-uugali na ito ay nangangailangan ng isang privileged na proseso upang mag-load ng isang BPF program, ngunit pagkatapos ay ang mga unprivileged na proseso ay maaaring makipag-ugnayan sa program.
    • Nagdagdag ng suporta para sa extension ng AMD SEV-SNP (Secure Nested Paging), na nagbibigay ng secure na trabaho sa mga nested memory page table at pinoprotektahan laban sa mga pag-atake ng "undeSErVed" at "SEVerity" sa mga processor ng AMD EPYC, na nagbibigay-daan sa pag-bypass sa AMD SEV (Secure Encrypted Virtualization ) mekanismo ng proteksyon.
    • Nagdagdag ng suporta para sa mekanismo ng Intel TDX (Trusted Domain Extensions), na nagpapahintulot sa iyo na harangan ang mga pagtatangka ng third-party na ma-access ang naka-encrypt na memorya ng mga virtual machine.
    • Ang virtio-blk driver, na ginamit upang tularan ang mga block device, ay nagdagdag ng suporta para sa I/O gamit ang botohan, na, ayon sa mga pagsubok, ay nagbawas ng latency ng humigit-kumulang 10%.
  • Subsystem ng network
    • Kasama sa package ang isang serye ng MALAKING TCP patch na nagbibigay-daan sa iyong pataasin ang maximum na laki ng packet ng isang TCP packet sa 4GB upang ma-optimize ang operasyon ng mga high-speed internal data center network. Ang isang katulad na pagtaas sa laki ng packet na may 16-bit na laki ng field ng header ay nakakamit sa pamamagitan ng pagpapatupad ng mga "jumbo" na packet, ang laki sa IP header na kung saan ay nakatakda sa 0, at ang aktwal na laki ay ipinapadala sa isang hiwalay na 32-bit field sa isang hiwalay na nakalakip na header. Sa pagsubok sa pagganap, ang pagtatakda ng laki ng packet sa 185 KB ay nagpapataas ng throughput ng 50% at makabuluhang binawasan ang latency ng paglilipat ng data.
    • Nagpatuloy ang trabaho sa pagsasama ng mga tool sa network stack upang subaybayan ang mga dahilan ng pag-drop ng mga packet (mga reason code). Ang dahilan ng code ay ipinadala kapag ang memorya na nauugnay sa packet ay napalaya at nagbibigay-daan para sa mga sitwasyon tulad ng packet discard dahil sa mga error sa header, rp_filter spoofing detection, invalid checksum, out of memory, IPSec XFRM rules triggered, invalid sequence number TCP, atbp.
    • Nagdagdag ng suporta para sa pagbabalik ng mga koneksyon sa MPTCP (MultiPath TCP) upang magamit ang regular na TCP, sa mga sitwasyon kung saan hindi magagamit ang ilang partikular na feature ng MPTCP. Ang MPTCP ay isang extension ng TCP protocol para sa pag-aayos ng operasyon ng isang koneksyon sa TCP sa paghahatid ng mga packet nang sabay-sabay sa ilang mga ruta sa pamamagitan ng iba't ibang mga interface ng network na nauugnay sa iba't ibang mga IP address. Nagdagdag ng API para kontrolin ang mga stream ng MPTCP mula sa espasyo ng user.
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Nagdagdag ng mahigit 420k na linya ng code na nauugnay sa amdgpu driver, kung saan humigit-kumulang 400k na linya ang mga awtomatikong nabuong header file para sa data ng rehistro ng ASIC sa AMD GPU driver, at isa pang 22.5k na linya ang nagbibigay ng paunang pagpapatupad ng suporta para sa AMD SoC21. Ang kabuuang laki ng driver para sa mga AMD GPU ay lumampas sa 4 na milyong linya ng code. Bilang karagdagan sa SoC21, ang AMD driver ay may kasamang suporta para sa SMU 13.x (System Management Unit), na-update na suporta para sa USB-C at GPUVM, at handang suportahan ang mga susunod na henerasyon ng RDNA3 (RX 7000) at CDNA (AMD Instinct) mga platform.
    • Ang i915 driver (Intel) ay nagpalawak ng mga kakayahan na nauugnay sa pamamahala ng kuryente. Nagdagdag ng mga identifier para sa Intel DG2 (Arc Alchemist) GPU na ginagamit sa mga laptop, nagbigay ng paunang suporta para sa Intel Raptor Lake-P (RPL-P) platform, nagdagdag ng impormasyon tungkol sa Arctic Sound-M graphics card), ipinatupad ang ABI para sa mga compute engine, idinagdag para sa Suporta ang mga DG2 card para sa format na Tile4; para sa mga system na nakabatay sa microarchitecture ng Haswell, ipinapatupad ang suporta sa DisplayPort HDR.
    • Ang driver ng Nouveau ay lumipat sa paggamit ng drm_gem_plane_helper_prepare_fb handler; inilapat ang static na memory allocation sa ilang mga istruktura at variable. Tulad ng para sa paggamit ng mga kernel module na open source ng NVIDIA sa Nouveau, ang gawain sa ngayon ay bumababa sa pagtukoy at pag-aalis ng mga error. Sa hinaharap, ang nai-publish na firmware ay binalak na gamitin upang mapabuti ang pagganap ng driver.
    • Nagdagdag ng driver para sa NVMe controller na ginagamit sa mga Apple computer batay sa M1 chip.

Kasabay nito, ang Latin American Free Software Foundation ay bumuo ng isang bersyon ng ganap na libreng kernel 5.19 - Linux-libre 5.19-gnu, na-clear sa mga elemento ng firmware at mga driver na naglalaman ng mga di-libreng bahagi o mga seksyon ng code, ang saklaw nito ay limitado ng tagagawa. Nililinis ng bagong release ang mga driver para sa pureLiFi X/XL/XC at TI AMx3 Wkup-M3 IPC. Na-update ang blob cleaning code sa Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu driver at subsystem. Naipatupad na ang pagproseso ng Qualcomm AArch64 devicetree file. Nagdagdag ng suporta para sa bagong scheme ng pagpapangalan ng bahagi ng Sound Open Firmware. Huminto sa paglilinis ng ATM Ambassador driver, na inalis sa kernel. Ang pamamahala ng blob cleaning sa HDCP at Mellanox Core ay inilipat sa hiwalay na mga kconfig tag.

Pinagmulan: opennet.ru

Magdagdag ng komento