Linux 5.14 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, ipinakita ni Linus Torvalds ang paglabas ng Linux kernel 5.14. Kabilang sa mga pinaka-kapansin-pansing pagbabago: bagong quotactl_fd() at memfd_secret() system calls, pag-alis ng mga ide at raw driver, bagong I/O priority controller para sa cgroup, SCHED_CORE task scheduling mode, imprastraktura para sa paglikha ng mga na-verify na BPF program loader.

Kasama sa bagong bersyon ang 15883 pag-aayos mula sa 2002 developer, ang laki ng patch ay 69 MB (ang mga pagbabago ay nakaapekto sa 12580 file, 861501 na linya ng code ang naidagdag, 321654 na linya ang tinanggal). Humigit-kumulang 47% ng lahat ng mga pagbabagong ipinakilala sa 5.14 ay nauugnay sa mga driver ng device, humigit-kumulang 14% ng mga pagbabago ay nauugnay sa pag-update ng code na partikular sa mga arkitektura ng hardware, 13% ay nauugnay sa networking stack, 3% ay nauugnay sa mga file system, at 3% ay nauugnay sa panloob na mga subsystem ng kernel.

Mga pangunahing inobasyon:

  • Disk subsystem, I/O at mga file system
    • Ang isang bagong I/O prioritization controller ay ipinatupad para sa mga cgroup, rq-qos, na maaaring kontrolin ang priyoridad sa pagproseso ng mga kahilingan upang harangan ang mga device na nabuo ng mga miyembro ng bawat cgroup. Ang bagong priority controller na suporta ay naidagdag sa mq-deadline na I/O scheduler.
    • Ang ext4 file system ay nagpapatupad ng bagong ioctl command, EXT4_IOC_CHECKPOINT, na pumipilit sa lahat ng nakabinbing transaksyon mula sa journal at sa kanilang mga nauugnay na buffer na i-flush sa disk, at ino-overwrite din ang lugar na ginagamit ng journal sa storage. Ang pagbabago ay inihanda bilang bahagi ng isang inisyatiba upang maiwasan ang mga pagtagas ng impormasyon mula sa mga file system.
    • Ang mga pag-optimize ng pagganap ay ginawa sa Btrfs: sa pamamagitan ng pag-aalis ng hindi kinakailangang pag-log ng mga pinahabang katangian sa panahon ng pagpapatupad ng fsync, ang pagganap ng mga masinsinang operasyon na may pinalawig na mga katangian ay tumaas ng hanggang 17%. Bukod pa rito, kapag nagsasagawa ng mga trim operation na hindi nakakaapekto sa mga lawak, hindi pinagana ang buong pag-synchronize, na nagpabawas sa oras ng operasyon ng 12%. Ang isang setting ay idinagdag sa sysfs upang limitahan ang I/O bandwidth kapag sinusuri ang FS. Nagdagdag ng mga ioctl na tawag upang kanselahin ang pagbabago ng laki at pagtanggal ng mga pagpapatakbo ng device.
    • Sa XFS, ang pagpapatupad ng buffer cache ay muling idinisenyo, na inilipat sa paglalaan ng mga pahina ng memorya sa batch mode. Pinahusay na kahusayan ng cache.
    • Nagdaragdag ang F2FS ng opsyon para gumana sa read-only na mode at nagpapatupad ng naka-compress na block cache mode (compress_cache) para mapahusay ang performance ng random read. Ang suporta ay ipinatupad para sa pag-compress ng mga file na nakamapang sa memorya gamit ang mmap() na operasyon. Upang piliing huwag paganahin ang file compression batay sa isang mask, isang bagong mount na opsyon na nocompress ang iminungkahi.
    • Ang trabaho ay ginawa sa exFAT driver upang mapabuti ang pagiging tugma sa ilang digital camera storage.
    • Idinagdag ang quotactl_fd() system call, na nagbibigay-daan sa iyong pamahalaan ang mga quota hindi sa pamamagitan ng isang espesyal na file ng device, ngunit sa pamamagitan ng pagtukoy ng file descriptor na nauugnay sa file system kung saan inilalapat ang quota.
    • Ang mga lumang driver para sa mga block device na may interface ng IDE ay tinanggal mula sa kernel; matagal na silang pinalitan ng libata subsystem.
    • Ang "raw" na driver ay inalis mula sa kernel, na nagbibigay ng unbuffered na access upang harangan ang mga device sa pamamagitan ng /dev/raw interface. Matagal nang ipinatupad ang functionality na ito sa mga application gamit ang O_DIRECT flag.
  • Mga serbisyo ng memorya at system
    • Ang task scheduler ay nagpapatupad ng bagong mode ng pag-iskedyul, SCHED_CORE, na nagbibigay-daan sa iyong kontrolin kung aling mga proseso ang maaaring isagawa nang magkasama sa parehong CPU core. Ang bawat proseso ay maaaring magtalaga ng cookie identifier na tumutukoy sa saklaw ng tiwala sa pagitan ng mga proseso (halimbawa, pagmamay-ari ng parehong user o container). Kapag nag-oorganisa ng code execution, matitiyak ng scheduler na ang isang CPU core ay ibinabahagi lamang sa mga prosesong nauugnay sa parehong may-ari, na magagamit upang harangan ang ilang pag-atake ng Spectre sa pamamagitan ng pagpigil sa mga pinagkakatiwalaan at hindi pinagkakatiwalaang gawain na tumakbo sa parehong SMT (Hyper Threading) na thread .
    • Para sa cgroup, ipinatupad ang suporta para sa operasyon ng pagpatay, na nagbibigay-daan sa iyong patayin ang lahat ng prosesong nauugnay sa grupo nang sabay-sabay (ipadala ang SIGKILL) sa pamamagitan ng pagsulat ng "1" sa virtual na file na cgroup.kill.
    • 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 pagharang ay humahantong sa isang makabuluhang pagbaba sa pagganap, kaya dati ay posible na pilitin na wakasan ang application na naging sanhi ng pagharang. Ang bagong release ay nagdaragdag ng kernel command line parameter na "split_lock_detect=ratelimit:N", na nagbibigay-daan sa iyong tukuyin ang isang system-wide na limitasyon sa rate ng pag-lock ng mga operasyon sa bawat segundo, pagkatapos lumampas sa anumang proseso na naging pinagmulan ng split lock ay mapipilitang huminto ng 20 ms sa halip na wakasan.
    • Ang cgroup bandwidth controller na CFS (CFS bandwidth controller), na tumutukoy kung gaano karaming oras ng processor ang maaaring ilaan sa bawat cgroup, ay nagpapatupad ng kakayahang tukuyin ang mga limitasyon sa oras, na nagbibigay-daan para sa mas mahusay na regulasyon ng mga latency-sensitive na workload. Halimbawa, ang pagtatakda ng cpu.cfs_quota_us sa 50000 at cpu.cfs_period_us sa 100000 ay magbibigay-daan sa isang pangkat ng mga proseso na mag-aksaya ng 100ms ng oras ng CPU bawat 50ms.
    • Nagdagdag ng paunang imprastraktura para sa paglikha ng mga BPF program loader, na higit na magbibigay-daan sa pag-load ng mga BPF program lang na nilagdaan gamit ang pinagkakatiwalaang digital key.
    • Nagdagdag ng bagong operasyon ng futex FUTEX_LOCK_PI2, na gumagamit ng monotonic timer upang kalkulahin ang isang timeout na isinasaalang-alang ang oras na ginugol ng system sa sleep mode.
    • Para sa arkitektura ng RISC-V, ipinatupad ang suporta para sa malalaking memory page (Transparent Huge-Pages) at ang kakayahang gamitin ang mekanismo ng KFENCE para makakita ng mga error kapag nagtatrabaho sa memorya.
    • Ang madvise() system call, na nagbibigay ng paraan para ma-optimize ang memory management ng isang proseso, ay nagdagdag ng MADV_POPULATE_READ at MADV_POPULATE_WRITE na mga flag upang makabuo ng "page fault" sa lahat ng memory page na nakamapang para magbasa o magsulat ng mga operasyon, nang hindi nagsasagawa ng aktwal na pagbasa o pagsulat (prefault). Ang paggamit ng mga flag ay maaaring maging kapaki-pakinabang para sa pagbabawas ng mga pagkaantala sa pagpapatupad ng programa, dahil sa proactive na pagpapatupad ng "page fault" handler para sa lahat ng mga hindi inilalaang pahina nang sabay-sabay, nang hindi naghihintay para sa aktwal na pag-access sa kanila.
    • Ang sistema ng pagsubok ng yunit ng yunit ay nagdagdag ng suporta para sa pagpapatakbo ng mga pagsubok sa kapaligiran ng QEMU.
    • Ang mga bagong tracer ay idinagdag: "osnoise" upang subaybayan ang mga pagkaantala ng application na dulot ng pagkagambala sa paghawak, at "timerlat" upang ipakita ang detalyadong impormasyon tungkol sa mga pagkaantala kapag nagising mula sa isang signal ng timer.
  • Virtualization at Seguridad
    • Ang memfd_secret() system call ay idinagdag upang lumikha ng isang pribadong lugar ng memorya sa isang nakahiwalay na puwang ng address, makikita lamang ng proseso ng pagmamay-ari, hindi makikita sa iba pang mga proseso, at hindi direktang naa-access sa kernel.
    • Sa seccomp system call filtering system, kapag inililipat ang mga humaharang na humahawak sa espasyo ng gumagamit, posibleng gumamit ng isang atomic na operasyon upang lumikha ng file descriptor para sa isang nakahiwalay na gawain at ibalik ito kapag nagpoproseso ng isang system call. Ang iminungkahing operasyon ay malulutas ang problema ng pag-abala sa isang handler sa espasyo ng user kapag may dumating na signal.
    • Nagdagdag ng bagong mekanismo para sa pamamahala ng mga limitasyon ng mapagkukunan sa user ID namespace, na nagbubuklod sa mga indibidwal na rlimit counter sa isang user sa "user namespace". Ang pagbabago ay malulutas ang problema sa paggamit ng mga karaniwang resource counter kapag ang isang user ay nagpapatakbo ng mga proseso sa iba't ibang container.
    • Ang KVM hypervisor para sa mga sistema ng ARM64 ay nagdagdag ng kakayahang gamitin ang extension ng MTE (MemTag, Memory Tagging Extension) sa mga guest system, na nagbibigay-daan sa iyong itali ang mga tag sa bawat operasyon ng paglalaan ng memorya at ayusin ang pagsuri sa tamang paggamit ng mga pointer upang harangan ang pagsasamantala ng mga kahinaan na dulot ng pag-access sa mga napalaya na bloke ng memorya, pag-apaw ng buffer, pag-access bago ang pagsisimula at paggamit sa labas ng kasalukuyang konteksto.
    • Ang mga pasilidad ng Pointer Authentication ng ARM64 platform ay maaari na ngayong i-configure nang hiwalay para sa kernel at espasyo ng user. Binibigyang-daan ka ng teknolohiya na gumamit ng mga espesyal na tagubilin ng ARM64 upang i-verify ang mga return address gamit ang mga digital na lagda na nakaimbak sa hindi nagamit na mga upper bit ng pointer mismo.
    • Ang user-mode Linux ay nagdagdag ng suporta para sa paggamit ng mga driver para sa mga PCI device na may virtual PCI bus, na ipinatupad ng PCI-over-virtio driver.
    • Para sa mga x86 system, nagdagdag ng suporta para sa virtio-iommu paravirtualized na device, na nagpapahintulot sa mga kahilingan ng IOMMU gaya ng ATTACH, DETACH, MAP at UNMAP na maipadala sa virtio transport nang hindi ginagaya ang mga talahanayan ng memory page.
    • Para sa mga Intel CPU, mula sa pamilyang Skylake hanggang sa Coffee Lake, ang paggamit ng Intel TSX (Transactional Synchronization Extensions), na nagbibigay ng mga tool para sa pagpapabuti ng performance ng mga multi-threaded na application sa pamamagitan ng dynamic na pag-aalis ng mga hindi kinakailangang operasyon ng pag-synchronise, ay hindi pinagana bilang default. Hindi pinagana ang mga extension dahil sa posibilidad ng mga pag-atake ng Zombieload na nagmamanipula sa pagtagas ng impormasyon sa pamamagitan ng mga third-party na channel na nangyayari sa panahon ng pagpapatakbo ng mekanismo ng TAA (TSX Asynchronous Abort).
  • Subsystem ng network
    • Pagsasama sa core ng MPTCP (MultiPath TCP), 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. Ang bagong release ay nagdaragdag ng mekanismo para sa pagtatakda ng sarili mong mga patakaran sa pag-hash ng trapiko para sa IPv4 at IPv6 (multipath hash policy), na ginagawang posible upang matukoy mula sa espasyo ng user kung aling mga field sa mga packet, kabilang ang mga naka-encapsulate, ang gagamitin kapag kinakalkula ang hash na tumutukoy sa pagpili ng landas para sa packet.
    • Ang suporta para sa mga SOCK_SEQPACKET socket (naayos at maaasahang pagpapadala ng mga datagram) ay naidagdag sa virtio virtual na transportasyon.
    • Ang mga kakayahan ng mekanismo ng SO_REUSEPORT socket ay pinalawak, na nagbibigay-daan sa ilang mga socket sa pakikinig na kumonekta sa isang port nang sabay-sabay upang makatanggap ng mga koneksyon sa pamamahagi ng mga papasok na kahilingan nang sabay-sabay sa lahat ng mga socket na konektado sa pamamagitan ng SO_REUSEPORT, na nagpapasimple sa paglikha ng mga multi-threaded na application ng server . Ang bagong bersyon ay nagdaragdag ng mga tool para sa paglilipat ng kontrol sa isa pang socket kung sakaling mabigo kapag nagpoproseso ng isang kahilingan sa pamamagitan ng unang napiling socket (malutas ang problema sa pagkawala ng mga indibidwal na koneksyon kapag nag-restart ng mga serbisyo).
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Ang amdgpu driver ay nagbibigay ng suporta para sa bagong AMD Radeon RX 6000 series of GPUs, na may codenamed na "Beige Goby" (Navi 24) at "Yellow Carp", pati na rin ang pinahusay na suporta para sa Aldebaran GPU (gfx90a) at Van Gogh APU. Idinagdag ang kakayahang sabay na gumana sa ilang eDP panel. Para sa APU Renoir, ipinatupad ang suporta para sa pagtatrabaho sa mga naka-encrypt na buffer sa memory ng video (TMZ, Trusted Memory Zone). Nagdagdag ng suporta para sa hot-unplug graphics card. Para sa mga Radeon RX 6000 (Navi 2x) GPU at mas lumang AMD GPU, ang suporta sa ASPM (Active State Power Management) ay pinagana bilang default, na dati ay pinagana lang para sa Navi 1x, Vega at Polaris GPU.
    • Para sa AMD chips, ang suporta para sa shared virtual memory (SVM, shared virtual memory) ay idinagdag batay sa HMM (Heterogenous memory management) subsystem, na nagpapahintulot sa paggamit ng mga device na may sariling mga memory management unit (MMU, memory management unit), na maaaring ma-access ang pangunahing memorya. Sa partikular, gamit ang HMM, maaari kang mag-ayos ng shared address space sa pagitan ng GPU at CPU, kung saan maa-access ng GPU ang pangunahing memorya ng proseso.
    • Nagdagdag ng paunang suporta para sa teknolohiya ng AMD Smart Shift, na dynamic na nagbabago sa mga setting ng CPU at GPU power sa mga laptop na may AMD chipset at graphics card upang palakasin ang performance para sa gaming, pag-edit ng video, at 3D rendering.
    • Ang i915 driver para sa Intel graphics card ay may kasamang suporta para sa Intel Alderlake P chips.
    • Nagdagdag ng drm/hyperv driver para sa Hyper-V virtual graphics adapter.
    • Nagdagdag ng suporta para sa Raspberry Pi 400 all-in-one na computer.
    • Nagdagdag ng dell-wmi-privacy driver para suportahan ang hardware camera at mga switch ng mikropono na kasama sa mga Dell laptop.
    • Para sa mga Lenovo na laptop, isang interface ng WMI ang idinagdag para sa pagbabago ng mga setting ng BIOS sa pamamagitan ng sysfs /sys/class/firmware-attributes/.
    • Pinalawak na suporta para sa mga device na may USB4 interface.
    • Nagdagdag ng suporta para sa AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 at Texas Instruments TAS2505 sound card at codec. Pinahusay na suporta sa audio sa mga HP at ASUS na laptop. Nagdagdag ng mga patch upang mabawasan ang mga pagkaantala bago magsimulang mag-play ang audio sa mga USB device.

Pinagmulan: opennet.ru

Magdagdag ng komento