Hlavní navigace

Linuxové jádro 5.3 přinese novinky pro ARM a změny v plánovačích

David Ježek

Aktuální verze Linuxu je 5.2 a je v plném proudu zasílání patchů, které budou tvořit příští verzi Linux 5.3. Dnes si přiblížíme několik sad patchů, které jednoho dne verzi 5.3 spoluvytvoří.

Doba čtení: 4 minuty

Sdílet

ARMové záležitosti

Jedna z věcí, která míří do jádra verze 5.3, je lepší podpora 64bitové architektury ARM (AArch64/ARM64). Přibude podpora emulace systémových volání, některé drobnější optimalizace výkonu u soft IRQ pro FPSMID/SVE, zpřístupnění ARMv8.5 vlastností v user-space, podpora technologie ARM Statistical Profiling Extensions (SPE) na ACPI platformách, měření výkonu DDR na platformě iMX8QXP, ve výchozím nastavení kernelu pro ARM64 zapnutý parametr CONFIG_RANDOMIZE_BASE (kvůli KASLR – Kernel address space layout randomization). Tato oblast změn pro Linux 5.3 shrnutá na Phoronixu míří do jádra jako pull request.

Nový framework pro správu spotřeby od ARMu

Od Patricka Bellasiho z ARMu do jádra (za)míří podpora omezení zátěže, která dále rozšiřuje možnosti, které frameworku Energy Aware Scheduling. Pracovat to celé bude moci tak, že některé úlohy dostanou pro svoji práci k dispozici boost, jiné (zejména ty běžící na pozadí) naopak budou ve využití zdrojů systému omezeny.

Toto je koncept práce, který stále nabývá na síle, a to zejména u procesorových architektur jako ARM big.LITTLE, kde je často použito více typů CPU jader a plánovač musí co nejlépe určit, zdali úlohu pošle k superrychlému zpracování na velká jádra s vysokým taktem, nebo ji rozloží(předá na jádra menší. Připomeňme v tomto kontextu, že big.LITTLE koncept ARMu se nacházel a nachází v obrovské škále ARM SoC posledních let a to i ve značně upravených podobách, kdy například MediaTek vyráběl SoC se třemi typy CPU jader (Helio X20 apod.).

Cílem ARMu je využití nového systému zejména k tomu, aby mohly nadstandardní prioritu dostat úlohy obsluhující grafické rozhraní (výkonnější CPU jádra, vyšší frekvence), zatímco úlohy méně kritické bude systém flexibilně přehazovat na pomalejší jádra s nižšími takty a spotřebou. Kontrolu na tím dává sysfs starající se o nastavení parametru uclamp. Pull request prošel přes Ingo Molnara.

Změny s malinovou příchutí

Ve srovnání s dřívějšími verzemi jádra nenajdeme v začleňovacím oknu pro Linux 5.3 nic zásadního kolem Intel P-stavů apod. Ale i tak dojde na novinky, mimo jiné nové CPUFreq ovladače pro škálování frekvencí CPU jader.

Nejviditelnější změnou pro 5.3 je začlenění ovladače CPUFreq pro Raspberry Pi, který pracuje tak, že komunikuje s firmwarem běžícím na dedikovaném procesoru zodpovědném za úpravy frekvencí. Tento dedikovaný procesor pak dělá finální rozhodnutí na bázi hodnot teplot či odběru čipu.

Dlužno konstatovat, že kolem ARMu, resp. architektur i podpory konkrétních čipů, se toho vždy děje daleko více. Uvidíme, co vše se nakonec objeví v jádru 5.3 v běžně použitelné formě, případně co nakonec uvidíme až v jádrech následných.

Dvoučipové Xeony generace Cascade Lake-AP

S ohledem na změny v procesorech Intel, které si vyžádal zejména razantní vzestup konkurenční AMD po řadě hubených let, míří do Linuxu 5.3 i pull request od Ingo Molnara (Phoronix), který shrnuje věci potřebné pro podporu multi-die topologie nových procesorů Intel Cascadelake-AP („Advanced Performance“). Připomeňme, že tyto hi-end Xeony jsou tvořeny slepencem dvou čipů, mají až 56 CPU jader (112× HT), to vše při TDP až 400 W.

Jednotlivé kusy křemíku (die) v procesorech této třídy jsou propojeny superrychlou sběrnicí a je potřeba naučit Linux s nimi optimálně pracovat. Jádro 5.3 toto umí/bude umět a procesory tak budou optimálně pracovat s aplikacemi (či spíše naopak). Inženýři Intelu tyto patche připravovali již řadu měsíců dopředu (jak je u Intelu zvykem).

Jelikož procesory rodiny Casade Lake-AP jsou jedněmi z těch, které umí řadu nejnovějších instrukcí AVX-512, pak by nemělo překvapit, že jádro 5.3 dále konečně dostane podporu sledování toho, kdy naposledy a jaký proces AVX-512 použil, aby mohly být tyto informace využity v user-space plánovači k lepšímu rozložení úloh.

Realizováno to je zpřístupněním metriky AVX512_elapsed_ms v /proc/[pid]/arch_status. Pro komplexní instrukce AVX-512 je typické, že procesor s nimi neběží na plných (Turbo) taktech, a proto celkovému výkonu procesoru prospěje, když plánovač může rozhodit úlohy tak, aby zpomalení procesoru bylo co nejnižší a nedocházelo k thermal-throttlingu (zejména pokud jde o serverové 56jádro Xeon Platinum 9282). Opět jde o pull request Ingo Molnara (Linus s dalšími zde mimochodem řešili určité problémy s během této sady).

Zahazujeme jeden subsystém

Phoronix upozorňuje na dění kolem jednoho ze subsystémů jádra. V rámci aktualizací pro GPIO totiž bude v Linuxu 5.3 zahozen sběrnicový subsystém FMC, neboť vývojáři shledali, že než se snažit jej opravit, resp. přepsat, bude efektivnější jej celý zahodit a napsat vše od základu, znovu a lépe. Legrační přitom je, že tento subsystém je hojně využíván v CERNu (kde byl FMC vytvořen) v urychlovači LHC.

FMC má za sebou zhruba sedmiletou životní pouť a slouží k podpoře modulů FPGA Mezzanine Card, připojení těchto FPGA k jiným zařízením s I/O. Pokračující práce na FMC před několika měsíci odhalily architektonické vady. Efektivnější nutnou nápravou přitom bude, že se s ohledem na to, jak FMC implementuje některé věci vlastní cestou, prostě využije funkcionalita pro FPGA, GPIO či I2C, která je v samotném Linuxu a zbytek se navrhne nově.

FMC tak z jádra zmizí, nicméně to lidem v CERNu nevadí, prozatím si budou v poklidu udržovat FMC mimo jádro.

Závěrem dodejme, že toto je pouze malý drobný náhled do toho, co přinese příští verze patrně největšího softwarového projektu na této planetě. Další novinky si ukážeme někdy příště.