Kutolewa kwa kernel ya Linux 5.3

Baada ya miezi miwili ya maendeleo, Linus Torvalds kuletwa kutolewa kwa kernel Linux 5.3. Miongoni mwa mabadiliko mashuhuri zaidi: msaada wa AMD Navi GPUs, wasindikaji wa Zhaoxi na teknolojia ya usimamizi wa kasi ya Intel, uwezo wa kutumia maagizo ya umwait kusubiri bila kutumia mizunguko,
hali ya 'kubana kwa matumizi' ambayo huongeza mwingiliano kwa CPU zisizolinganishwa, pidfd_open simu ya mfumo, uwezo wa kutumia anwani za IPv4 kutoka kwa subnet ya 0.0.0.0/8, uwezekano wa kuongeza kasi ya maunzi ya nftables, usaidizi wa HDR katika mfumo mdogo wa DRM, muunganisho wa ACRN. hypervisor.

Π’ tangazo toleo jipya, Linus aliwakumbusha watengenezaji wote sheria kuu ya ukuzaji wa kernel - kudumisha tabia sawa kwa vipengele vya nafasi ya mtumiaji. Mabadiliko kwenye kernel haipaswi kwa njia yoyote kuvunja programu zinazoendesha tayari au kusababisha rejeshi katika kiwango cha mtumiaji. Katika kesi hii, ukiukwaji wa tabia unaweza kusababisha sio tu mabadiliko katika ABI, kuondolewa kwa msimbo wa zamani, au kuonekana kwa makosa, lakini pia athari isiyo ya moja kwa moja ya maboresho muhimu ambayo yanafanya kazi kwa usahihi. Kama mfano wa kielelezo kulikuwa kutupwa muhimu optimization katika nambari ya Ext4, ambayo hupunguza idadi ya ufikiaji wa kiendeshi kwa kuzima usomaji wa mapema wa jedwali la ingizo kwa maombi madogo ya I/O.

Uboreshaji ulisababisha ukweli kwamba, kwa sababu ya kupungua kwa shughuli za diski, entropy ya getrandom() jenereta ya nambari isiyo ya kawaida ilianza kujilimbikiza polepole zaidi na katika usanidi fulani, chini ya hali fulani, kufungia kunaweza kuzingatiwa wakati wa upakiaji hadi dimbwi la entropy lilipokuwa. kujazwa. Kwa kuwa uboreshaji ni muhimu sana, mjadala ulitokea kati ya watengenezaji ambapo ilipendekezwa kurekebisha tatizo kwa kuzima hali ya kuzuia chaguo-msingi ya getrandom() simu na kuongeza bendera ya hiari kusubiri entropy, lakini mabadiliko kama haya yangeathiri ubora wa nambari za nasibu katika hatua ya awali ya upakiaji.

Toleo jipya linajumuisha marekebisho 15794 kutoka kwa watengenezaji 1974,
saizi ya kiraka - 92 MB (mabadiliko yaliathiri faili 13986, mistari 258419 ya nambari iliongezwa,
safu 599137 zimeondolewa). Takriban 39% ya yote yaliyowasilishwa katika 5.3
mabadiliko yanahusiana na viendesha kifaa, takriban 12% ya mabadiliko
mtazamo wa kusasisha nambari maalum kwa usanifu wa vifaa, 11%
kuhusiana na mrundikano wa mtandao, 3% kwa mifumo ya faili na 3% kwa ndani
mifumo ndogo ya kernel.

kuu ubunifu:

  • Huduma za kumbukumbu na mfumo
    • Kuendeleza utendakazi wa 'pidfd' ili kusaidia kushughulikia hali za utumiaji tena wa PID (pidfd inahusishwa na mchakato mahususi na haibadiliki, huku PID inaweza kuhusishwa na mchakato mwingine baada ya mchakato wa sasa unaohusishwa na PID hiyo kuisha). Hapo awali iliongezwa kwenye kernel
      pidfd_send_signal() simu ya mfumo na CLONE_PIDFD bendera katika clone() simu ya kupata pidfd kwa ajili ya matumizi katika idfd_send_signal(). Kutumia clone() iliyo na alamisho ya CLONE_PIDFD kunaweza kusababisha matatizo na wasimamizi wa huduma au mfumo wa uondoaji wa kumbukumbu wa mfumo wa Android usio na kumbukumbu. Katika hali hii, simu ya fork() au clone() bila CLONE_PIDFD inatumika kuanza.

      Kernel 5.3 ilianzisha simu ya mfumo pidfd_open(), ambayo hukuruhusu kupata pidfd inayoweza kukaguliwa kwa mchakato uliopo kiholela ambao haukuundwa kwa kupiga simu clone() na bendera ya CLONE_PIDFD. Pia imeongezwa usaidizi wa upigaji kura wa pidfd kwa kutumia poll() na epoll(), ambayo huwaruhusu wasimamizi wa mchakato kufuatilia kusitishwa kwa michakato kiholela bila hofu ya hali ya mbio ikiwa PID itakabidhiwa mchakato mpya. Utaratibu wa kuarifu mchakato unaohusishwa na pidfd umekoma ni sawa na kuarifu mchakato wa mtoto unapokatizwa;

    • Usaidizi wa utaratibu wa kubandika mzigo umeongezwa kwa kipanga kazi (Ufungaji wa matumizi), hukuruhusu kuambatana na masafa ya chini au ya juu zaidi, kulingana na kazi zinazofanya kazi kwenye CPU. Utaratibu uliowasilishwa huharakisha kazi zinazoathiri moja kwa moja ubora wa matumizi ya mtumiaji kwa kuendesha kazi hizi angalau katika sehemu ya chini ya marudio "yaliyoombwa". Kazi za kipaumbele cha chini ambazo haziathiri kazi ya mtumiaji zinazinduliwa kwa kutumia kikomo cha juu cha mzunguko "unaoruhusiwa". Vikomo huwekwa kupitia sched_uclamp_util_min na sched_uclamp_util_max sifa katika sched_setattr() simu ya mfumo.
    • Usaidizi ulioongezwa kwa teknolojia ya usimamizi wa nishati Intel Speed ​​​​Chagua, inapatikana kwenye seva zilizochaguliwa zilizo na vichakataji vya Intel Xeon. Teknolojia hii inakuwezesha kuweka mipangilio ya utendaji na ugawaji wa matokeo kwa cores tofauti za CPU, ambayo inakuwezesha kutanguliza utendaji kwa kazi zinazofanywa kwenye cores fulani, kutoa dhabihu utendaji kwenye cores nyingine;
    • Michakato katika nafasi ya mtumiaji zinazotolewa uwezo wa kusubiri kwa muda mfupi bila kutumia loops kwa kutumia maelekezo ya umwait. Maagizo haya, pamoja na maagizo ya ufuatiliaji na tpause, yatatolewa katika chips zinazokuja za Intel "Tremont", na itaruhusu utekelezaji wa ucheleweshaji ambao ni ufanisi wa nishati na hauathiri utendaji wa nyuzi nyingine wakati wa kutumia Hyper Threading;
    • Kwa usanifu wa RISC-V, usaidizi wa kurasa kubwa za kumbukumbu umeongezwa;
    • Utaratibu wa ufuatiliaji wa kprobe umeongeza uwezo wa kuelekeza viashiria vya kernel kwa nafasi ya mtumiaji, ambayo inaweza kutumika, kwa mfano, kutathmini maudhui ya miundo inayopitishwa kwa simu za mfumo. Uwezo wa kufunga hundi kwenye hatua ya boot pia imeongezwa.
    • Imeongeza chaguo la PREEMPT_RT kwenye faili ya usanidi kwa operesheni ya wakati halisi. Nambari yenyewe ya kusaidia hali ya wakati halisi bado haijaongezwa kwenye kernel, lakini kuonekana kwa chaguo ni ishara nzuri kwamba epic ya muda mrefu. ushirikiano Viraka vya Muda Halisi vinakaribia kukamilika;
    • Imeongeza simu ya mfumo wa clone3() na utekelezaji wa toleo lenye kupanuka zaidi la kiolesura cha clone(), ambayo inaruhusu kubainisha idadi kubwa ya bendera;
    • Imeongeza kidhibiti cha bpf_send_signal(), ikiruhusu programu za BPF kutuma mawimbi kwa michakato ya kiholela;
    • Kwa matukio ya kawaida katika mazingira ya KVM hypervisor, utaratibu mpya wa kuchuja tukio umeongezwa, kuruhusu msimamizi kubainisha aina za matukio ambayo yanaruhusiwa au hayaruhusiwi kwa ufuatiliaji kwenye upande wa mfumo wa wageni;
    • Uwezo wa kusindika programu na vitanzi umeongezwa kwa utaratibu wa uthibitishaji wa maombi ya eBPF ikiwa utekelezaji wa kitanzi ni mdogo na hauwezi kusababisha kuzidi kikomo kwa idadi kubwa ya maagizo;
  • Mfumo mdogo wa diski, I/O na mifumo ya faili
    • Mfumo wa faili wa XFS sasa unasaidia bypass ya ingizo zenye nyuzi nyingi (kwa mfano, wakati wa kuangalia upendeleo). Ioctls mpya BULKSTAT na INUMBERS zimeongezwa, na kutoa ufikiaji wa vipengele vilivyoonekana katika toleo la tano la umbizo la FS, kama vile wakati wa kuzaliwa kwa ingizo na uwezo wa kuweka vigezo vya BULKSTAT na INUMBERS kwa kila kikundi cha AG (Vikundi vya Ugawaji);
    • Katika Ext4 msaada aliongeza voids katika saraka (vitalu visivyounganishwa).
      Usindikaji umetolewa bendera "i" (isiyobadilika) kwa faili zilizo wazi (kuandika ni marufuku katika hali ikiwa bendera iliwekwa wakati ambapo faili tayari imefunguliwa);

    • Btrfs hutoa ufafanuzi wa utekelezaji wa haraka wa crc32c kwenye usanifu wote;
    • Katika CIFS, msimbo wa usaidizi wa smbdirect umeondolewa kama ukuzaji wa majaribio. SMB3 iliongeza uwezo wa kutumia algoriti za kriptografia katika hali ya GCM. Imeongeza chaguo jipya la kupachika ili kutoa vigezo vya modi kutoka kwa maingizo ya ACE (Ingizo la Kudhibiti Ufikiaji). Imeboresha utendakazi wa open() simu;
    • Imeongeza chaguo kwa F2FS ili kuweka kikomo cha kukusanya takataka wakati wa kufanya kazi katika hali ya ukaguzi=zima. Ioctl imeongezwa ili kuondoa safu za vizuizi kutoka F2FS, ikiruhusu marekebisho ya ukubwa wa kizigeu unaporuka. Imeongeza uwezo wa kuweka faili ya kubadilishana katika F2FS ili kutoa I/O ya moja kwa moja. Msaada ulioongezwa wa kubandika faili na ugawaji wa vizuizi kwa faili zinazofanana kwa watumiaji wote;
    • Usaidizi ulioongezwa kwa shughuli zisizolingana sendmsg() na recvmsg() kwenye kiolesura cha kuingiza/tokeo lisilolingana io_uring;
    • Usaidizi wa ukandamizaji kwa kutumia algorithm ya zstd na uwezo wa kuthibitisha picha za FS zilizosainiwa zimeongezwa kwenye mfumo wa faili wa UBIFS;
    • Ceph FS sasa inasaidia lebo za usalama za SELinux kwa faili;
    • Kwa NFSv4, chaguo jipya la mlima "nconnect=" limetekelezwa, ambalo huamua idadi ya miunganisho iliyoanzishwa na seva. Trafiki kati ya miunganisho hii itasambazwa kwa kutumia kusawazisha mizigo. Kwa kuongeza, seva ya NFSv4 sasa inaunda saraka /proc/fs/nfsd/clients na taarifa kuhusu wateja wa sasa, ikiwa ni pamoja na taarifa kuhusu faili ambazo wamefungua;
  • Virtualization na Usalama
    • Kernel inajumuisha hypervisor ya vifaa vilivyopachikwa ACRN, ambayo imeandikwa kwa jicho la utayari wa kazi za wakati halisi na kufaa kwa matumizi katika mifumo muhimu ya utume. ACRN hutoa uendeshaji mdogo, huhakikisha utulivu wa chini na mwitikio wa kutosha wakati wa kuingiliana na vifaa. Inaauni uboreshaji wa rasilimali za CPU, I/O, mfumo mdogo wa mtandao, michoro na uendeshaji wa sauti. ACRN inaweza kutumika kuendesha mashine nyingi za pekee zilizotengwa katika vitengo vya udhibiti wa kielektroniki, dashibodi, mifumo ya habari ya magari, vifaa vya IoT vya watumiaji na teknolojia nyingine iliyopachikwa;
    • Katika hali ya mtumiaji Linux imeongezwa Hali ya kusafiri kwa wakati, ambayo hukuruhusu kupunguza kasi au kuongeza kasi ya muda katika mazingira pepe ya UML ili kurahisisha utatuzi wa msimbo unaohusiana na wakati. Kwa kuongeza, parameter imeongezwa
      time-travel-start, ambayo inaruhusu saa ya mfumo kuanza kutoka wakati maalum katika muundo wa epoch;

    • Chaguzi mpya za mstari wa amri ya kernel "init_on_alloc" na "init_on_free" zimeongezwa, wakati imebainishwa, sifuri ya maeneo ya kumbukumbu yaliyotengwa na ya bure imewezeshwa (kujaza na zero kwa malloc na bure), ambayo inaruhusu kuongezeka kwa usalama kutokana na uanzishaji wa ziada;
    • Dereva mpya ameongezwa virtio-iommu pamoja na utekelezaji wa kifaa cha paravirtualized kinachokuruhusu kutuma maombi ya IOMMU kama vile ATTACH, DETACH, MAP na UNMAP kwenye usafiri wa virtio bila kuiga jedwali za kurasa za kumbukumbu;
    • Dereva mpya ameongezwa virtio-pmem, inayowakilisha ufikiaji wa vifaa vya kuhifadhi vilivyopangwa kwa nafasi ya anwani halisi, kama vile NVDIMM;
    • Imetekeleza uwezo wa kuambatisha funguo za kriptografia kwa mtumiaji au nafasi ya majina ya mtandao (funguo hazipatikani nje ya nafasi ya majina iliyochaguliwa), na pia kulinda funguo kwa kutumia ACL;
    • Kwa mfumo mdogo wa crypto aliongeza msaada kwa algorithm ya haraka sana isiyo ya kriptografia ya hashing xxhash, kasi ambayo inategemea utendaji wa kumbukumbu;
  • Mfumo mdogo wa mtandao
    • Imewasha uchakataji wa anwani za IPv4 katika masafa 0.0.0.0/8, ambayo hapo awali haikupatikana kwa matumizi. Utangulizi wa subnet hii itaruhusu kusambaza anwani zingine milioni 16 za IPv4;
    • Katika Netfilter kwa nfttables aliongeza msaada kwa taratibu za kuongeza kasi ya vifaa kwa ajili ya kuchuja pakiti kupitia matumizi ya viendeshi vilivyoongezwa API ya Kuzuia Mtiririko. Jedwali zima la sheria na minyororo yote inaweza kuwekwa upande wa adapta za mtandao. Kuwasha kunafanywa kwa kubandika alama ya NFT_TABLE_F_HW kwenye jedwali. Inaauni metadata ya itifaki ya Safu ya 3 na Tabaka la 4, kukubali/kataa vitendo, upangaji ramani na IP na bandari za mtandao za mtumaji/mpokeaji na aina ya itifaki;
    • Imeongezwa usaidizi wa ufuatiliaji wa uunganisho uliojengwa kwa madaraja ya mtandao, ambayo hauhitaji matumizi ya safu ya kuiga ya br_netfilter;
    • Katika nf_meza aliongeza usaidizi wa moduli ya SYNPROXY, ambayo inarudia utendaji sawa kutoka kwa iptables, na uwezo wa kuangalia sheria kwa chaguo za kibinafsi katika kichwa cha IPv4 pia hutekelezwa;
    • Imeongeza uwezo wa kuambatisha programu za BPF kwa simu za mfumo setsockopt() na getsockopt(), ambayo, kwa mfano, inakuruhusu kuambatisha vishikilizi vyako vya ufikiaji kwenye simu hizi. Kwa kuongeza, hatua mpya ya kupiga simu (ndoano) imeongezwa, ambayo unaweza kupanga simu kwa programu ya BPF mara moja kwa kila muda wa RTT (safari ya kurudi, wakati wa ping);
    • Kwa IPv4 na IPv6 imeongezwa utaratibu mpya wa uhifadhi wa data wa uelekezaji wa nexthop unaolenga kuongeza kasi ya majedwali ya kuelekeza. Uchunguzi ulionyesha kuwa wakati wa kutumia mfumo mpya, seti ya njia 743 zilipakiwa kwenye kernel kwa sekunde 4.3 tu;
    • Kwa Bluetooth kutekelezwa utendaji unaohitajika kusaidia LE ping;
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Imeongezwa msaada kwa wasindikaji wa kampuni unaolingana na x86 Zhaoxin, iliyotengenezwa kutokana na mradi wa pamoja kati ya VIA Technologies na Manispaa ya Shanghai. Familia ya ZX CPU imejengwa juu ya usanifu wa Isaya wa x86-64, kuendelea na maendeleo ya teknolojia KUPITIA Centaur;
    • Mfumo mdogo wa DRM (Direct Rendering Manager), pamoja na viendeshi vya michoro vya amdgpu na i915, umeongeza usaidizi wa kuchanganua, kuchakata na kutuma metadata ya HDR (ya kiwango cha juu cha nguvu) kupitia bandari ya HDMI, kuruhusu matumizi ya paneli za HDR na skrini zinazoweza kuonyesha safu za ziada za mwangaza;
    • Dereva wa amdgpu ameongeza usaidizi wa awali kwa AMD NAVI GPU (RX5700), ambayo ni pamoja na kiendeshi msingi, msimbo wa mwingiliano wa skrini (DCN2), GFX na usaidizi wa kukokotoa (GFX10),
      SDMA 5 (Mfumo wa DMA0), usimamizi wa nguvu na visimbaji/avkodare za media titika (VCN2). amdgpu pia inaboresha usaidizi wa kadi kulingana na Vega12 na Vega20 GPU, ambazo kumbukumbu za ziada na uwezo wa usimamizi wa nguvu umeongezwa;

    • Umeongeza uwezo wa kutumia kadi kulingana na VegaM GPU kwa kiendeshi cha amdkfd (kwa GPU tofauti, kama vile Fiji, Tonga, Polaris);
    • Katika kiendeshi cha DRM cha kadi za video za Intel kwa chips za Iceland kutekelezwa hali mpya ya kusahihisha gamma ya sehemu nyingi. Imeongeza uwezo wa kutoa kupitia DisplayPort katika umbizo la YCbCr4:2:0. Firmware mpya imeongezwa GuC kwa SKL, BXT, KBL, GLK na ICL. Uwezo wa kuzima nguvu ya skrini katika hali ya asynchronous umetekelezwa. Imeongezwa usaidizi wa kuokoa na kurejesha muktadha wa utoaji wa chips za Ironlake (gen5) na gen4 (Broadwater - Cantiga), ambayo inakuwezesha kurejesha hali ya GPU kutoka nafasi ya mtumiaji wakati wa kusonga kutoka kwa operesheni ya kundi moja hadi nyingine;
    • Dereva wa Nouveau hutoa ugunduzi wa chipset ya NVIDIA Turing TU116;
    • Uwezo wa kiendeshi cha DRM/KMS cha vichapuzi vya skrini ya ARM Komeda (Mali D71) umepanuliwa, usaidizi wa kuongeza, mgawanyiko/unganisha tabaka, mzunguko, uandishi ulioahirishwa, AFBC, SMMU na umbizo la usimbaji rangi Y0L2, P010, YUV420_8/10BIT ina imeongezwa;
    • Dereva wa MSM anaongeza usaidizi kwa mfululizo wa A540 GPU Adreno unaotumiwa katika wasindikaji wa Qualcomm, pamoja na usaidizi wa kidhibiti cha MSM8998 DSI kwa Snapdragon 835;
    • Viendeshaji vilivyoongezwa kwa ajili ya paneli za LCD Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 na VXT VL050-8048NT-C01;

    • Imeongezwa kiendeshaji cha kuwezesha zana za kuongeza kasi ya kusimbua
      video zinazopatikana katika Amlogic Meson SoC;

    • Katika dereva wa v3d (kwa Broadcom Video Core V GPU iliyotumiwa kwenye Raspberry Pi) ilionekana kusaidia kupeleka vivuli vya compute;
    • Imeongezwa dereva wa kibodi za SPI na trackpads zinazotumiwa katika mifano ya kisasa ya Apple MacBook na MacBookPro;
    • Imeongezwa ulinzi wa ziada kwa simu za ioctl zinazohusishwa na kiendeshi cha floppy, na dereva mwenyewe ametiwa alama kuwa hajatunzwa
      ("yatima"), ambayo inamaanisha kusitishwa kwa majaribio yake. Dereva bado huhifadhiwa kwenye kernel, lakini operesheni yake sahihi haijahakikishiwa. Dereva inachukuliwa kuwa ya kizamani, kwani ni ngumu kupata vifaa vya kufanya kazi kwa kuijaribu - anatoa zote za sasa za nje, kama sheria, hutumia kiolesura cha USB.

    • Imeongezwa dereva wa cpufreq kwa bodi za Raspberry Pi, ambayo hukuruhusu kudhibiti kwa nguvu mabadiliko katika mzunguko wa processor;
    • Usaidizi umeongezwa kwa ARM mpya SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) na Amlogic G12B (4x Cortex-A73tex 2x Cortex +- A53 ), pamoja na bodi:
      • Purism Librem5,
      • Kasi ya BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Hugsun X99 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Wakati huo huo, Taasisi ya Programu ya Bure ya Amerika ya Kusini kuundwa
chaguo kernel ya bure kabisa 5.3 - Linux-bure 5.3-gnu, kufutwa kwa firmware na vipengele vya dereva vyenye vipengele visivyo na bure au sehemu za msimbo, upeo ambao ni mdogo na mtengenezaji. Katika toleo jipya, upakiaji wa blob umezimwa katika viendeshi vya qcom, hdcp drm, allegro-dvt na meson-vdec.
Imesasisha msimbo wa kusafisha blob katika viendeshaji na mifumo midogo ya amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, kiendesha sauti cha skylake, na vile vile katika uwekaji kumbukumbu wa msimbo mikrosi.

Chanzo: opennet.ru

Kuongeza maoni