Kutolewa kwa kernel ya Linux 5.1

Baada ya miezi miwili ya maendeleo, Linus Torvalds kuletwa kutolewa kwa kernel Linux 5.1. Miongoni mwa mabadiliko mashuhuri zaidi: kiolesura kipya cha I/O io_uring isiyo ya kawaida, uwezo wa kutumia NVDIMM kama RAM, usaidizi wa kumbukumbu iliyoshirikiwa ya mtandaoni huko Nouveau, usaidizi wa ufuatiliaji mbaya wa mifumo mikubwa ya faili kupitia fanotify, uwezo wa kusanidi compression ya Zstd. viwango katika Btrfs, kidhibiti kipya cha cpuidle TEO, utekelezaji wa simu za mfumo ili kutatua tatizo la 2038, uwezo wa kuwasha kutoka kwa vifaa vya kutengeneza ramani ya kifaa bila initramfs, moduli ya SafeSetID LSM, usaidizi wa viraka vilivyounganishwa moja kwa moja.

kuu ubunifu:

  • Mfumo mdogo wa diski, I/O na mifumo ya faili
    • Imetekelezwa kiolesura kipya cha I/O isiyolingana - io_uring, ambayo inajulikana kwa usaidizi wake kwa upigaji kura wa I/O na uwezo wa kufanya kazi na au bila kuakibishwa. Tukumbuke kwamba utaratibu wa I/O uliopendekezwa hapo awali β€œaio” haukutumia I/O iliyoakibishwa, inaweza kufanya kazi katika hali ya O_DIRECT pekee (bila kuakibisha na kupitisha kashe), ilikuwa na matatizo ya kufunga kwa sababu ya kusubiri upatikanaji wa metadata, na ilionyesha gharama kubwa za ziada kwa sababu ya kunakili data kwenye kumbukumbu.

      Ndani ya API
      watengenezaji wa io_uring walijaribu kuondoa mapungufu ya kiolesura cha zamani cha aio. Na utendaji io_uring iko karibu sana SPDK na iko mbele sana kuliko libaio wakati wa kufanya kazi na upigaji kura umewezeshwa. Maktaba imetayarishwa kwa ajili ya kutumia io_uring katika programu za mwisho zinazoendeshwa katika nafasi ya mtumiaji liburing, ambayo hutoa mfumo wa hali ya juu juu ya kiolesura cha kernel;

    • Katika utaratibu wa kufuatilia tukio katika FS fanotify() aliongeza msaada kwa ajili ya kufuatilia superblock na hali ya mabadiliko ya muundo mbali (matukio ya kuunda, kufuta na kusonga saraka). Vipengee vilivyowasilishwa husaidia kutatua shida za ubaya zinazotokea wakati wa kuunda ufuatiliaji wa mabadiliko ya kujirudia katika mifumo mikubwa ya faili kwa kutumia utaratibu wa inotify (mabadiliko ya moja kwa moja yangeweza tu kufuatiliwa kupitia inotify, lakini.
      utendaji katika hali ya ufuatiliaji unaojirudia wa saraka kubwa zilizowekwa kiota uliacha kuhitajika). Sasa ufuatiliaji huo unaweza kufanywa kwa ufanisi kupitia fanotify;

    • Kwenye mfumo wa faili wa Btrfs aliongeza uwezo wa kubinafsisha kiwango cha mbano kwa algoriti ya zstd, ambayo inaweza kuchukuliwa kuwa maelewano mojawapo kati ya lz4 ya haraka lakini isiyofaa na mbano ya polepole lakini nzuri ya xz. Kwa mlinganisho na jinsi ilivyowezekana hapo awali kuweka kiwango cha mbano wakati wa kutumia zlib, usaidizi wa chaguo la mlima la "-o compress=zstd:level" umeongezwa kwa zstd. Wakati wa kupima, kiwango cha chini cha kwanza kilitoa ukandamizaji wa data kwa mara 2.658 na kasi ya compression ya 438.47 MB ​​/ s, kasi ya decompression ya 910.51 MB / s na matumizi ya kumbukumbu ya 780 MB, na kiwango cha juu cha 15 kilitolewa mara 3.126, lakini kwa compression. kasi ya 37.30 MB / s. unpacking 878.84 MB / s na matumizi ya kumbukumbu 2547 MB;
    • Imeongezwa uwezo wa boot kutoka kwa mfumo wa faili ulio kwenye kifaa-mapper kifaa, bila kutumia initramfs. Kuanzia na toleo la sasa la kernel, vifaa vya ramani ya kifaa vinaweza kutumika moja kwa moja wakati wa mchakato wa kuwasha, kwa mfano, kama kizigeu na mfumo wa faili wa mizizi. Ugawaji umeundwa kwa kutumia parameter ya boot "dm-mod.create". Moduli za ramani ya kifaa zinazoruhusiwa kupakia ni pamoja na: "crypt", "kuchelewesha", "linear", "snapshot-origin" na "verity";
    • Bendera ya F2FS_NOCOW_FL imeongezwa kwenye mfumo wa faili wa F2FS unaoelekezwa kwenye viendeshi vya Flash, ambayo hukuruhusu kuzima hali ya kunakili-kuandika kwa faili fulani;
    • Mfumo wa faili umeondolewa kwenye kernel Exofs, ambayo ni lahaja ya ext2, iliyorekebishwa kwa ajili ya kufanya kazi na hifadhi za vitu vya OSD (Kifaa cha Kuhifadhi Msingi). Usaidizi wa itifaki ya SCSI kwa vifaa vile vya kuhifadhi vitu pia umeondolewa;
  • Virtualization na Usalama
    • Imeongeza chaguo la PR_SPEC_DISABLE_NOEXEC kwa prctl() ili kudhibiti utekelezaji wa kubahatisha wa maagizo kwa mchakato uliochaguliwa. Chaguo jipya hukuruhusu kuzima kwa kuchagua utekelezaji wa kubahatisha kwa michakato ambayo inaweza kushambuliwa na shambulio la Specter. Kufuli hudumu hadi simu ya kwanza kutekeleza ();
    • Moduli ya LSM iliyotekelezwa SafeSetID, ambayo huruhusu huduma za mfumo kudhibiti watumiaji kwa usalama bila marupurupu yanayoongezeka (CAP_SETUID) na bila kupata haki za msingi. Mapendeleo yanatolewa kwa kubainisha sheria katika mfumo wa usalama kulingana na orodha nyeupe ya vifungo halali (katika fomu ya "UID1:UID2");
    • Umeongeza mabadiliko ya kiwango cha chini yanayohitajika kwa upakiaji kulingana na rafu wa moduli za usalama (LSM). Ilianzisha chaguo la "lsm" la kernel boot ili kudhibiti moduli zipi zimepakiwa na kwa mpangilio gani;
    • Usaidizi wa nafasi za majina za faili umeongezwa kwenye mfumo mdogo wa ukaguzi;
    • Imepanuliwa vipengele vya structleak ya programu-jalizi ya GCC, ambayo hukuruhusu kuzuia uvujaji unaowezekana wa yaliyomo kwenye kumbukumbu.Uanzishaji wa vigeuzo vyovyote vinavyotumika katika msimbo kwa kupata rejeleo kwenye rafu hutolewa;
  • Mfumo mdogo wa mtandao
    • Kwa soketi kutekelezwa chaguo jipya "SO_BINDTOIFINDEX" sawa na
      "SO_BINDTODEVICE", lakini ikichukua kama hoja nambari ya faharasa ya kiolesura cha mtandao badala ya jina la kiolesura;

    • Rafu ya mac80211 imeongeza uwezo wa kukabidhi BSSID nyingi (anwani za MAC) kwenye kifaa kimoja. Kama sehemu ya mradi wa kuboresha utendakazi wa WiFi, rundo la mac80211 limeongeza uhasibu wa muda wa maongezi na uwezo wa kusambaza muda wa maongezi kati ya vituo vingi (wakati wa kufanya kazi katika hali ya ufikiaji, kutenga muda mfupi wa upitishaji ili kupunguza kasi ya vituo visivyotumia waya, badala ya kusambaza wakati sawasawa kati ya zote. vituo);
    • Utaratibu ulioongezwa "afya ya devlink", ambayo hutoa arifa wakati matatizo yanatokea na interface ya mtandao;
  • Huduma za kumbukumbu na mfumo
    • Imetekelezwa uwasilishaji salama wa mawimbi unaoruhusu matumizi ya PID tena. Kwa mfano, wakati wa kupiga simu kuua hapo awali, hali inaweza kutokea ambapo, mara tu baada ya kutuma ishara, PID inayolengwa inaweza kuachiliwa kwa sababu ya kusitishwa kwa mchakato na kukaliwa na mchakato mwingine, na ishara hiyo itaishia kupitishwa kwa mchakato mwingine. Ili kuondoa hali kama hizi, pidfd_send_signal ya mfumo mpya imeongezwa, ambayo hutumia maelezo ya faili kutoka /proc/pid ili kuhakikisha ufungaji thabiti wa mchakato. Hata kama PID itatumika tena wakati wa kuchakata simu za mfumo, kielezi cha faili hakitabadilika na kinaweza kutumiwa kwa usalama kutuma mawimbi kwa mchakato;
    • Imeongezwa uwezo wa kutumia vifaa vya kumbukumbu vya kudumu (kumbukumbu inayoendelea, kwa mfano NVDIMM) kama RAM. Hadi sasa, kernel iliunga mkono vifaa kama vifaa vya kuhifadhi, lakini sasa vinaweza kutumika kama RAM ya ziada. Kipengele hiki kinatekelezwa kwa kujibu matakwa ya watumiaji ambao wako tayari kuvumilia utendakazi na wanataka kutumia API asili ya usimamizi wa kumbukumbu ya kernel ya Linux badala ya kutumia mifumo iliyopo ya ugawaji kumbukumbu ya nafasi ya mtumiaji inayoendesha juu ya mmap kwa dax. faili;
    • Imeongeza kidhibiti kipya cha kutofanya kitu cha CPU (cpuidle, huamua ni lini CPU inaweza kuwekwa katika njia za kina za kuokoa nishati; kadiri hali inavyozidi kuongezeka, ndivyo uokoaji unavyoongezeka, lakini pia inachukua muda mrefu kutoka kwa modi) - TEO (Gavana Anayeelekezwa kwa Matukio ya Kipima Muda) ) Hadi sasa, vidhibiti viwili vya cpuidle vimependekezwa - "menyu" na "ngazi", tofauti katika heuristics. "Menu" handler ina matatizo inayojulikana na kufanya maamuzi heuristic, kuondoa ambayo iliamuliwa kuandaa handler mpya. TEO imewekwa kama njia mbadala ya kidhibiti cha "menu", ikiruhusu utendaji wa juu zaidi huku ikidumisha kiwango sawa cha matumizi ya nishati.
      Unaweza kuwezesha kidhibiti kipya kwa kutumia kigezo cha kuwasha "cpuidle.governor=teo";

    • Kama sehemu ya kazi ya kuondoa matatizo ya 2038, unaosababishwa na wingi wa aina ya 32-bit time_t, inajumuisha simu za mfumo zinazotoa vihesabio vya muda vya biti 32 kwa usanifu wa 64-bit. Kwa hivyo, muundo wa 64-bit time_t sasa unaweza kutumika kwenye usanifu wote. Mabadiliko sawa pia yametekelezwa katika mfumo mdogo wa mtandao kwa chaguo mhuri wa muda soketi za mtandao;
    • Ndani ya mfumo moto wa kubandika kwa msingi (kuweka moja kwa moja) aliongeza Kipengele cha "Badilisha Atomiki" cha kutumia kiotomatiki mfululizo wa mabadiliko kwenye chaguo la kukokotoa moja. Kipengele hiki hukuruhusu kusambaza viraka vya muhtasari vinavyofunika mabadiliko kadhaa mara moja, badala ya mchakato wa utumiaji wa hatua kwa hatua wa viraka vya moja kwa moja kwa mpangilio uliowekwa wazi, ambao ni ngumu sana kudumisha. Ingawa hapo awali kila badiliko lililofuata lilipaswa kutegemea hali ya utendaji kazi baada ya mabadiliko ya mwisho, sasa inawezekana kueneza mabadiliko kadhaa yaliyounganishwa na hali moja ya awali mara moja (yaani, watunzaji wanaweza kudumisha kiraka kimoja kilichounganishwa kulingana na kernel ya msingi badala yake. ya mlolongo wa patches ambayo hutegemea kila mmoja);
    • Imetangazwa usaidizi ulioacha kutumika kwa umbizo la faili linaloweza kutekelezeka la a.out na
      imefutwa msimbo wa kuzalisha faili za msingi katika umbizo la a.out, ambalo liko katika hali iliyoachwa. Umbizo la a.out halijatumika kwenye mifumo ya Linux kwa muda mrefu, na uundaji wa faili za a.out kwa muda mrefu haukubaliwi na zana za kisasa katika usanidi chaguo-msingi wa Linux. Zaidi ya hayo, kipakiaji cha faili za a.out kinaweza kutekelezwa kabisa katika nafasi ya mtumiaji;

    • Uwezo wa kutambua na kuondoa msimbo ambao haujatumiwa umeongezwa kwa utaratibu wa uthibitishaji wa programu ya BPF. Kokwa pia inajumuisha viraka vyenye usaidizi wa spinlock kwa mfumo mdogo wa BPF, kutoa uwezo wa ziada wa kusimamia utekelezaji sambamba wa programu za BPF;
  • ΠžΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅
    • Katika dereva wa Nouveau aliongeza usaidizi wa usimamizi wa kumbukumbu usio tofauti, unaoruhusu CPU na GPU kufikia maeneo ya kumbukumbu yaliyosawazishwa ya kawaida. Mfumo wa kumbukumbu wa pamoja wa kumbukumbu (SVM, kumbukumbu ya pamoja iliyoshirikiwa) inatekelezwa kwa msingi wa mfumo mdogo wa HMM (usimamizi wa kumbukumbu nyingi), ambayo inaruhusu matumizi ya vifaa vilivyo na vitengo vyao vya usimamizi wa kumbukumbu (MMU, kitengo cha usimamizi wa kumbukumbu), ambacho kinaweza kufikia. kumbukumbu kuu. Hasa, kwa kutumia HMM, unaweza kupanga nafasi ya anwani iliyoshirikiwa kati ya GPU na CPU, ambayo GPU inaweza kufikia kumbukumbu kuu ya mchakato. Usaidizi wa SVM kwa sasa umewashwa kwa GPU za familia ya Pascal pekee, ingawa usaidizi hutolewa kwa Volta na Turing GPU pia. Aidha, katika Nouveau imeongezwa ioctl mpya ili kudhibiti uhamishaji wa maeneo ya kumbukumbu ya mchakato hadi kumbukumbu ya GPU;
    • Katika dereva wa Intel DRM wa GPU Skylake na baadaye (gen9+) pamoja Kwa chaguo-msingi, hali ya fastboot huondoa mabadiliko ya hali ya lazima wakati wa boot. Imeongezwa Π½ΠΎΠ²Ρ‹Π΅ vitambulishi vya kifaa kulingana na usanifu mdogo wa Coffelake na Ice Lake. Kwa chips za Coffelake aliongeza Msaada wa GVT (Uboreshaji wa GPU) Kwa GPU pepe kutekelezwa Msaada wa VFIO EDID. Kwa paneli za LCD MIPI/DSI aliongeza msaada kwa vipengele vya ACPI/PMIC. Imetekelezwa njia mpya za TV 1080p30/50/60 TV;
    • Imeongeza usaidizi wa Vega10/20 BACO GPU kwa kiendeshi cha amdgpu. Umetekelezwa wa usimamizi wa nishati ya Vega 10/20 na jedwali za kudhibiti baridi za Vega 10. Umeongeza vitambulishi vipya vya vifaa vya PCI kwa Picasso GPU. Imeongezwa interface ya kudhibiti utegemezi unaoweza kuratibiwa ili kuepusha vikwazo;
    • Imeongezwa Kiendeshaji cha DRM/KMS cha vichapuzi vya skrini ARM Komeda (Mali D71);
    • Usaidizi ulioongezwa kwa Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 na paneli za skrini za Kingdisplay kd097d04;
    • Msaada ulioongezwa kwa Rockchip RK3328, Cirrus Logic CS4341 na CS35L36, MediaTek MT6358, Qualcomm WCD9335 na Ingenic JZ4725B codecs za sauti, pamoja na jukwaa la sauti la Mediatek MT8183;
    • Usaidizi ulioongezwa kwa vidhibiti vya NAND Flash STMicroelectronics FMC2, Amlogic Meson;
    • Msaada wa kuongeza kasi kwa mifumo ya maunzi ya Habana AI;
    • Usaidizi ulioongezwa kwa vidhibiti vya NXP ENETC gigabit Ethernet na MediaTek MT7603E (PCIe) na violesura vya wireless vya MT76x8.

Wakati huo huo, Taasisi ya Programu ya Bure ya Amerika ya Kusini kuundwa
chaguo kernel ya bure kabisa 5.1 - Linux-bure 5.1-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 mt7603 na goya. Imesasisha msimbo wa kusafisha blob katika viendeshaji na mifumo ndogo wilc1000, iwlwifi, soc-acpi-intel, bcmfmac, mwifiex, btmrvl, btmtk na touchscreen_dmi. Usafishaji wa Blob katika kipakiaji cha programu dhibiti cha lantiq xrx200 umesimamishwa kwa sababu ya kuondolewa kwake kutoka kwa kokwa.

Chanzo: opennet.ru

Kuongeza maoni