Linux kernel 5.14

Linux kernel 5.14

Pagkatapos ng dalawang buwan ng pag-unlad, si Linus Torvalds ipinakilala pagpapalabas ng kernel Linux 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 linya ng code ang naidagdag, 321654 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.

Ang pangunahing mga inobasyon:

  • disk subsystem, input/output at mga file system:
    • para sa cgroup ipinatupad bagong I/O priority controller - rq-qos, na makokontrol ang priyoridad sa pagproseso ng mga kahilingan para 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;
    • sa ext4 file system ipinatupad bagong ioctl command na EXT4_IOC_CHECKPOINT, na pinipilit ang lahat ng nakabinbing transaksyon mula sa log at mga nauugnay na buffer papunta sa disk, at ino-overwrite din ang lugar na ginagamit ng log in storage. Ang pagbabago ay inihanda bilang bahagi ng isang inisyatiba upang maiwasan ang mga pagtagas ng impormasyon mula sa mga file system;
    • sa Btrfs ginawa Mga pag-optimize ng pagganap: 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 muling ginawa pagpapatupad ng isang buffer cache, na inililipat sa paglalaan ng mga pahina ng memorya sa batch mode. Pinahusay na kahusayan ng cache;
    • Nagdagdag ang F2FS ng opsyon para gumana sa read-only na mode at nagpatupad ng compressed block caching 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 sa pamamagitan ng mask, isang bagong mount option na nocompress ang iminungkahi;
    • ang trabaho ay ginawa sa exFAT driver upang mapabuti ang pagiging tugma sa imbakan ng ilang mga digital camera;
    • nagdagdag ng system call quotactl_fd(), 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 isang 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 suporta para sa mga lumang device ay napanatili nang buo, ang mga pagbabago ay tumutukoy lamang sa kakayahang gumamit ng mga lumang driver, kapag ginagamit ang mga drive na tinawag na /dev/hd*, at hindi /dev/sd*;
    • 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;
  • memory at mga serbisyo ng system:
    • isang bagong mode ng pag-iskedyul ang ipinatupad sa scheduler ng gawain SCHED_CORE, na nagbibigay-daan sa iyong kontrolin kung aling mga proseso ang maaaring tumakbo nang magkasama sa parehong core ng CPU. 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-aayos ng code execution, matitiyak ng scheduler na ang isang CPU core ay ibinabahagi lamang sa mga prosesong nauugnay sa parehong may-ari, na magagamit para harangan ang ilang pag-atake ng Spectre sa pamamagitan ng pagpigil sa mga mapagkakatiwalaan at hindi mapagkakatiwalaang gawain na tumakbo sa parehong SMT (Hyper Threading) na thread ;
    • para sa mekanismo ng 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 kung saan ang anumang proseso na naging pinagmulan ng split lock ay mapipilitang huminto ng 20 ms sa halip na tapusin;
    • Ang cgroup bandwidth controller na CFS (CFS bandwidth controller), na tumutukoy kung gaano karaming oras ng processor ang maaaring ilaan sa bawat cgroup, ay may kakayahang tumukoy ng mga limitasyon na limitado ng isang partikular na tagal ng pagkilos, na nagbibigay-daan sa mas mahusay na regulasyon ng latency-sensitive load. 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;
    • idinagdag paunang imprastraktura para sa paglikha ng mga BPF program loader, na higit na magbibigay-daan sa pag-download ng mga BPF program lamang na nilagdaan ng isang mapagkakatiwalaang digital key;
    • nagdagdag ng bagong operasyon ng futex FUTEX_LOCK_PI2, na gumagamit ng monotonic timer upang kalkulahin ang timeout, na isinasaalang-alang ang oras na ginugol ng system sa sleep mode;
    • para sa arkitektura ng RISC-V, suporta para sa malalaking memory page (Transparent Huge-Pages) at ang kakayahang gamitin ang KFENCE upang makilala ang mga error kapag nagtatrabaho sa memorya;
    • sa madvise() system call, na nagbibigay ng paraan upang ma-optimize ang pamamahala ng memorya ng proseso, idinagdag MADV_POPULATE_READ at MADV_POPULATE_WRITE na mga flag upang makabuo ng "page fault" sa lahat ng memory page na nakamapa para sa read o write operations, nang hindi nagsasagawa ng aktwal na read o write (prefault). Ang paggamit ng mga flag ay maaaring maging kapaki-pakinabang para sa pagbabawas ng mga pagkaantala sa pagpapatupad ng programa, salamat 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;
    • sa isang unit testing system kunit idinagdag suporta para sa pagpapatakbo ng mga pagsubok sa kapaligiran ng QEMU;
    • idinagdag ng mga bagong tracer: "osnoise" upang subaybayan ang mga pagkaantala sa aplikasyon 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:
    • dagdag pa tawag sa sistema memfd_secret(), na nagpapahintulot sa iyo na lumikha ng isang pribadong lugar ng memorya sa isang nakahiwalay na puwang ng address, na nakikita lamang ng proseso ng may-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 lock handler sa espasyo ng user, posibleng gumamit ng isang atomic operation upang lumikha ng file descriptor para sa isang nakahiwalay na gawain at ibalik ito kapag nagpoproseso ng system call. Ang iminungkahing operasyon ay malulutas problema na may pagkagambala ng handler sa espasyo ng gumagamit kapag may dumating na signal;
    • dagdag pa bagong mekanismo upang pamahalaan ang paglilimita 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 mga lalagyan;
    • 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 iyo na 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 sa mga buffer, pag-access bago ang pagsisimula at paggamit sa labas ng kasalukuyang konteksto;
    • Ang Pointer Authentication na ibinigay ng ARM64 platform ay maaari na ngayong i-configure nang hiwalay para sa kernel at user space. 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 naka-imbak sa hindi nagamit na mga upper bit ng pointer mismo;
    • sa User-mode na Linux idinagdag 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 device, na nagbibigay-daan sa iyong magpadala ng mga kahilingan sa IOMMU, gaya ng ATTACH, DETACH, MAP at UNMAP, 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 Zombieload, pagmamanipula sa pagtagas ng impormasyon sa pamamagitan ng mga third-party na channel na nangyayari sa panahon ng pagpapatakbo ng mekanismo para sa asynchronous na pagkagambala ng mga operasyon (TAA, TSX Asynchronous Abort);
  • subsystem ng network:
    • patuloy na 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 kasama ang ilang mga ruta sa pamamagitan ng iba't ibang mga interface ng network na nauugnay sa iba't ibang mga IP address. Sa bagong isyu dagdag pa isang 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 mula sa espasyo ng user upang matukoy 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 pakete;
    • Ang suporta sa socket ay naidagdag sa virtual transport virtio SOCK_SEQPACKET (maayos at maaasahang paghahatid ng mga datagrams);
    • 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 . Sa bagong bersyon idinagdag ay nangangahulugan para sa paglilipat ng kontrol sa isa pang socket sa kaso ng pagkabigo 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);
  • kagamitan:
    • sa driver ng amdgpu ipinatupad suporta para sa bagong AMD Radeon RX 6000 series ng mga GPU, 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 Radeon RX 6000 (Navi 2x) GPU at mas lumang AMD GPU, ang suporta para sa ASPM (Active State Power Management) na mekanismo sa pag-save ng kuryente 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. Kasama ang paggamit ng HMM, maaari mong ayusin ang isang shared address space sa pagitan ng GPU at CPU, kung saan maa-access ng GPU ang pangunahing memorya ng proseso;
    • nagdagdag ng paunang suporta sa teknolohiya AMD Smart Shift, na dynamic na nagbabago sa mga parameter ng pagkonsumo ng kuryente ng CPU at GPU sa mga laptop na may chipset at AMD graphics card upang palakasin ang pagganap kapag naglalaro, pag-edit ng video at pag-render ng 3D;
    • sa i915 driver para sa mga Intel video card kasama suporta para sa Intel Alderlake P chips;
    • nagdagdag ng drm/hyperv driver para sa Hyper-V virtual graphics adapter;
    • dagdag pa simpledrm graphics driver na gumagamit ng EFI-GOP o VESA framebuffer na ibinigay ng UEFI firmware o BIOS para sa output. Ang pangunahing layunin ng driver ay magbigay ng mga graphical na kakayahan sa output sa mga unang yugto ng boot, bago magamit ang isang buong DRM driver. Ang driver ay maaari ding gamitin bilang isang pansamantalang solusyon para sa mga kagamitan na wala pang katutubong DRM driver;
    • idinagdag all-in-one na suporta sa computer Raspberry Pi 400;
    • Nagdagdag ng dell-wmi-privacy driver upang suportahan ang mga switch ng hardware ng camera at mikropono na kasama sa mga Dell laptop;
    • para sa mga Lenovo laptop dagdag pa WMI interface para sa pagbabago ng mga parameter ng BIOS sa pamamagitan ng sysfs /sys/class/firmware-attributes/;
    • pinalawak suporta para sa mga device na may USB4 interface;
    • idinagdag suporta para sa mga sound card at codec AmLogic SM1 TOACODEC, Intel AlderLake-M, NXP i.MX8, NXP TFA1, TDF9897, Rockchip RK817, Qualcomm Quinary MI2 at Texas Instruments TAS2505. Pinahusay na suporta sa audio sa mga HP at ASUS na laptop. Idinagdag mga patch upang mabawasan ang mga pagkaantala bago magsimulang mag-play ang audio sa mga device na may USB interface.

Pinagmulan – opennet.ru.

Pinagmulan: linux.org.ru