Linux 7.0 RC2: netikėtai didelis atnaujinimas ir rizika

Linux 7.0 RC2: netikėtai didelis atnaujinimas ir rizika

Austėja Kavaliauskaitė Austėja Kavaliauskaitė . 1 Komentarai

8 Minutės

Įžanga

Linux branduolio vystymas retai pateikia netikėtumus tokiu ankstyvu etapu, tačiau Linux 7.0 tai padarė. Antrasis leidimo kandidatas (RC2) pasirodė žymiai didesnis nei įprastai, ir Linus Torvalds neslėpė susierzinimo, sakydamas, kad jis nėra „labai patenkintas“, kiek didelis jis tapo.

Torvalds tokią situaciją priskyrė „atsitiktiniam laiko triukšmui“ (angl. random timing noise) — grafikų ir darbų sutapimams, dėl kurių vieną savaitę viskas atrodo chaotiška, o kitą — ramu. Vis dėlto nemažas ne-suliejimų (non-merge) commitų kiekis rodo, kad tai gali būti daugiau nei paprastas blypsas: Linux 7.0 vystymo ciklas gali prasidėti žymiai kintamesniu ritmu nei įprasta, kai daug realaus darbo atsiduria vienu metu vietoje palaipsnio pasiskirstymo.

RC2 dydis ir turinys

Kas daro šį RC2 išskirtinį — ne tik jo apimtis, bet ir tai, kas jame yra. Ankstyvieji branduolio kandidatai dažnai būna vairuotojams (drivers) palankūs ir „vairuotojų sunkūs“. Šįkart taip nėra. Pagal pranešimus, vairuotojai sudaro tik apie ketvirtadalį pakeitimų, o didžioji dalis pataisų ir pakeitimų gilinasi į vidinę architektūrą: branduolio branduolį (core kernel), tinklų (networking) pataisas ir failų sistemų (filesystem) atnaujinimus.

Toks pakeitimų mišinys gali gerokai pagerinti fundamentalius branduolio komponentus, tačiau tuo pačiu turi ir platesnį „sprogimo“ spindulį, jei kažkas nueina ne taip: tiek mažos klaidos, tiek sudėtingesnės sąveikos gali sukelti platesnės įtakos gedimus arba regresijas.

Apimtis ir pasiskirstymas

Trumpai apibendrinant, pagrindinės RC2 srities proporcijos atrodo maždaug taip:

  • Vairuotojų pakeitimai: ~25%
  • Branduolio šerdis (core) ir vidinė logika: didžioji dalis likusių pakeitimų
  • Tinklų pataisos: reikšminga dalis
  • Failų sistemos: apie 25%, daugiausia patikimumui skirtos pataisos

Tokia paskirstymo schema akcentuoja, kad tai nėra vien „nauji įrenginių tvarkyklės“ — tai rimtas darbas prie branduolio stabilumo, atminties valdymo ir duomenų integralumo.

Failų sistemos: XFS, EROFS ir SMB

Šią savaitę failų sistemos sulaukė labai daug dėmesio. Darbas, susijęs su SMB klientu, XFS ir EROFS, sudarė maždaug ketvirtadalį atnaujinimo. Pagrindinis akcentas — patikimumas: mažiau „glamūro“, daugiau darbo, kuris užkerta kelią tyliai duomenų korupcijai arba sistemos avarijoms dėl rečiau pasitaikančių kampinių atvejų.

XFS konkrečiai

XFS vien tik gavo 19 pataisų, apimančių viską nuo inode skaitiklių statistikų iki galimų rodyklių (pointer) prieigos lenktynių (races). Toks klaidų klasifikacijos pobūdis yra labai subtilus: jos dažnai lieka nepastebėtos tol, kol tam tikros sąlygos sutampa ir klaida pasireiškia produktinėje aplinkoje.

Tipiniai XFS pataisų tipai ir jų svarba:

  • Inode skaitiklių tikslumas — svarbu duomenų vientisybei ir metaduomenų ataskaitoms.
  • Rodyklių ir užrakto (lock/race) problemos — gali sukelti netikėtus kernel panic arba duomenų pažeidimus.
  • Efektyvumo optimizacijos, kurios kartu gerina stabilumą tam tikromis apkrovomis.

Tokio tipo pataisos įprastai reikalauja kruopštaus testavimo, įskaitant vienetinius testus, integracinius testus ir realaus pasaulio darbo krūvių simulacijas.

SMB ir EROFS

SMB( klientas) ir EROFS taip pat gavo pataisas. SMB atnaujinimai dažniausiai orientuoti į tinklo nesuderinamumus, autentifikacijos niuansus arba kampinių atvejų tvarkymą, kurie gali lemti duomenų prieinamumo problemas. EROFS pataisos dažnai siejamos su mažo sudėtingumo, bet aukšto patikimumo scenarijais — ypač mobiliose ir įterptose sistemos, kur EROFS naudojama kaip tik skaitymui pritaikyta failų sistema.

Saugumas ir atminties valdymas

„Po gaubtu“ saugumas ir atminties valdymas taip pat gavo reikšmingą priežiūros raundą. Pataisos nusileido KASAN (KernelAddressSANitizer) problemoms, susijusioms su aparatūros žymomis atminties valdyme, kartu su spekuliacinio saugumo (speculative-safety) darbu, susijusiu su x86 FRED (Flexible Return and Event Delivery).

KASAN ir aparatūros žymos

KASAN skirtas aptikti atminties klaidas: už ribų rašymus, naudojimą po atlaisvinimo (use-after-free) ir kitus nuodingus atminties prieigos modelius. Kai KASAN susiduria su aparatūros žymomis ar specialiais atminties žymėjimais, gali reikėti papildomų pataisų, kad diagnostika būtų tiksli ir neblokuotų teisėtų aparatūros optimizacijų.

Speculative-safety ir x86 FRED

Spekuliacinio vykdymo saugumas (spectre-like mitigations) ir FRED sukasi apie tai, kaip CPU spekuliacinis vykdymas gali nuvesti prie šalutinių kanalų atakų. Pataisos čia nėra įdomiausi dalykai vartotojui, tačiau jos yra kritinės: branduolio gynybos nuo šoninių kanalų atakų ir niūrių atminties gedimų dažniausiai kuriamos iš mažų, atsargiai pritaikytų pakeitimų.

BPF: Berkeley Packet Filter patobulinimai ir savitestai

Kitas didelis dėmesys skirtas BPF (Berkeley Packet Filter). Atnaujinime yra nemaža partijų BPF pakeitimų ir savitestų, tęsiant nuolatinį tobulinimą, kaip Linux paleidžia ir tikrina smėlio dėžėje (sandboxed) veikiančias programas branduolyje.

Kas šįkart

Šios savaitės darbas apėmė pataisas, skirtas:

  • Užribinių rašymų (out-of-bounds writes) prevencijai.
  • Lenktynių (race condition) šalinimui, ypač aktualu PREEMPT_RT konfigūracijoms.
  • Selftestų plėtrai, kad būtų galima greičiau ir automatiškai aptikti regresijas tęstinio integracinio testavimo aplinkose.

BPF yra svarbus ne tik paketų filtravimui: jis leidžia saugiai vykdyti pritaikytas programėles branduolyje, stebėti sistemos veikimą ir daryti pažangias analizės operacijas realiu laiku. Todėl bet kokios klaidos arba saugumo spragos BPF srityje gali turėti platesnį poveikį.

PREEMPT_RT ir laiko jautrumas

PREEMPT_RT (realtime) konfigūracijos yra ypač jautrios laiko ir konkurencijos klaidoms, nes tikslus laiko valdymas ir užduočių pertraukomos turi labai mažą toleranciją klaidoms. RC2 pataisos, susijusios su BPF ir lenktynėmis, yra ypač reikšmingos realaus laiko branduolio (real-time kernel) vartotojams ir platintojams, kurie palaiko PREEMPT_RT parinktis.

Kodėl viskas susikaupė dabar?

Linus Torvalds pasiūlė, kad Linux 6.19 ciklas gali būti dalis paaiškinimo. Tas leidimas buvo pratęstas viena savaite, ir po to gali atsirasti tarsi eismo spūstis: pataisos laukia, spaudimas kyla, o tada kitas sujungimo langas (merge window) užsipildo. Jei tai tik laikinė pasekmė, RC3 turėtų nurimti ir atstatyti įprastą ritmą.

Sujungimo lango (merge window) mechanika

Sujungimo langas — tai atkarpa po vieno stabilaus leidimo, kai priimama daug naujų patchų, funkcijų ir didesnių pakeitimų. Jei prieš sujungimo langą darbai kaupiasi dėl vėlavimų ar pratęsimų, tie pakeitimai gali atsidurti vienu metu, sukeldami labai didelį RC:

  • Pataisų backlogas: laukiančios pataisos kaupiasi.
  • Spaudimas iš išlaikytinių (maintainers) ir subsystemų, kad jų darbus sujungti.
  • Rizika, kad per didelis kiekis pakeitimų tuo pačiu metu padidins regresijų skaičių.

Ką reikštų, jei RC3 vėl būtų didelis?

Jeigu RC3 vėl pasirodytų didesnis nei įprasta, tai būtų ženklas, kad Linux 7.0 patiria ne vienos savaitės šoką, o gal reikės ilgesnio stabilizavimo etapo. Tai reikštų papildomą testavimo laiką prieš galutinį stabilų branduolio leidimą ir galimą kiekvieno distro (distribucijos) išleidimo grafiko koregavimą.

Padariniai distribucijoms ir palaikytojams

Platinaus poveikio scenarijai gali apimti:

  1. Didesnį laiko tarpą, per kurį išlaikytojai tikrins ir darys regresijų testavimą.
  2. Galimybę, kad kai kurie pakeitimai bus atidėti į vėlesnį leidimą arba perkelti į taikomąsias pataisas (stable backports).
  3. Distribucijų pakeitimus išleidimų planuose, kad būtų užtikrintas tinkamas branduolio stabilumas prieš platinimą vartotojams.

Kokie tolesni žingsniai ir ką žiūrėti

Artimiausias kriterijus — RC3 turinys. Jei RC3 bus gerokai mažesnis, greičiausiai tai buvo tiesiog laiko triukšmas ir kitame kandidatuose ritmas grįš į normą. Jei ne — laukia ilgesnis stabilizacijos procesas, galbūt su papildomu dėmesiu testavimui ir saugumo peržiūroms.

Rekomenduojama veikla kūrėjams ir palaikytojams

  • Sutelkti dėmesį į vienetinius ir integracinius testus XFS, EROFS ir SMB sektoriuose.
  • Aktyviai vykdyti KASAN ir spekuliacinio saugumo testus (FRED, Spectre mitigations) ant x86 platformų.
  • Peržiūrėti BPF selftestus ir išplėsti tinkamus scenarijus PREEMPT_RT aplinkoms.
  • Stebėti Linus ir pagrindinių subsystemų komentarus mailing listuose ir kernel.org, kad būtų laiku reaguojama į kritinius įspėjimus.

Išvados

Linux 7.0 RC2 nebuvo paprastas „vieno savaitės blypsas“ — jo dydis ir pobūdis atkreipia dėmesį į rimtą darbą branduolio šerdyje, tinkluose ir failų sistemose. Nors dalis to gali būti laikini sutapimai dėl ankstesnio leidimo pratęsimo, vis vien reikėtų atsargumo: didelis pokyčių kiekis vienu metu didina regresijų riziką.

Kitų kandidatai (ypač RC3) parodys, ar tai buvo laikinas sutrikimas ar ilgesnis stabilizacijos periodas. Tarp to, palaikytojai, distribucijų išlaikytojai ir infrastruktūros inžinieriai privalo aktyviai testuoti, vykdyti KASAN ir BPF patikras, bei ruoštis galimiems branduolio elgsenos pokyčiams produkuojant naujas versijas.

Santrauka: Linux 7.0 RC2 — reikšmingas ir netikėtas iššūkis, kuriame daugiausia dėmesio skiriama patikimumui ir saugumui, o ne vien sprzętiniams tvarkyklėms. Sekite RC3, kad suprastumėte, ar tai laikinas „laiko triukšmas“, ar pradžia audringesnio stabilizacijos etapo.

„Technologijos visada mane žavėjo – nuo išmaniųjų telefonų iki dirbtinio intelekto proveržių. Džiaugiuosi galėdama dalintis naujienomis su jumis kiekvieną dieną.“

Palikite komentarą

Komentarai

Mantas

Oho, ne tik tvarkyklės, rimtas deep fixing! Tikiuosi RC3 nurims, bet truputį neramu jei vėl didelis. Testai turi eiti nonstop ypač XFS/EROFS.