OPTIMALIZACESPOUŠTĚCÍHO ČASU

Optimalizace spouštěcího času

Často má prvotní zpracování operačního systému nedostatek výkonnostních optimalizací. Doba bootu je jedním z nejvíce nepříjemných problémů v mobilním zařízení: uživatel chce, aby jeho zařízení bylo v provozu během několika vteřin, ne minut!
Jako příklad můžeme zmínit tablet založený na JZ4760. První verze operačního systému byla dodána s bootovacím časem od zapnutí do uživatelského prostoru 35 sekund. Což bylo přijatelné z hlediska součásti procesu vývoje, protože náš zákazník měl již k dispozici funkční vývojovou platformu pro práci na aplikační vrstvě. Když se ale podíváme na fázi finalizace produktu, bootovací doba byla považována za nepřijatelnou.
Přijali jsme výzvu, abychom snížili startovací čas na maximálně 7s. Nakonec se nám podařilo srazit délku bootovacího času na pouhé 4 sekundy!

Jednotlivé bootovací fáze

Proces bootování, od zapnutí zařízení po aktivní uživatelské rozhraní, lze rozdělit do tří fází:
1. Zavaděč: V této fázi jsou všechny zavaděče spouštěny v pořadí, aby inicializovaly kritická hardwarová rozhraní, jako jsou hlavní paměť a zařízení zajišťující operační systém. Poslední zavaděč načte jádro operačního systému do paměti a spustí jej.
2. Jádro: Zde jádro operačního systému inicializuje své služby a všechny potřebné periferie před provedením jakéhokoliv kódu uživatelského prostoru.
3. Uživatelská část: tvořena všemi programy uživatelského prostoru, které běží před aktivací zařízení.
Zatímco ve verzi ladění musí být tyto fáze vhodné pro vývojáře, ve fázi nasazení softwaru musí být tyto fáze optimalizovány, co se rychlosti provádění týče. Podívejme se do hloubky, jaký je rozdíl mezi těmito dvěma případy:

Original state
Original state
Optimized state
Optimized state

Bootloader

Ladění
• Měl by inicializovat hlavní rozhraní způsobem, aby mohly fungovat externí debugery
• Musí poskytovat debugovací logy v reálném čase prostřednictvím některého zařízení
• Zprovoz!nující zařízení by mělo být možné měnit v případě potřeby vývojáře
• Měl by poskytnout konzoli, aby měl vývojář možnost zkontrolovat, co se děje
• Měly by být snadno rozšiřitelný
Nasazení
• Měly by inicializovat hlavní rozhraní pro výkon
• Měli by načíst přímo obraz jádra operačního systémuimage
• Může provádět některé úlohy obnovy po haváriích

Kernel

Ladění
• Mělo by poskytovat rozsáhlé logování
• ze dodat s modulem pro ladění kernelu
• Jeho velikost není omezena
Nasazení
• Jeho obraz by měl být co nejmenší, aby se snížil čas načítání v zavaděči
• Veškerá zbytečná zpoždění by měla být odstraněna

Userland

Ladění
• Měla by být co nejvíce přizpůsobitelné
• Měla by poskytovat rozsáhlé logování
• ěla byste poskytnout více než jeden přístupový bod
Nasazení
• Měla by být statická: všechna rozhodnutí musí být navolena.
• Měla by poskytovat logy pouze v případě problémů
• Měla by poskytovat logy pouze v případě problémů
• Musí být optimalizována pro výkon

OPTIMALIZACE

Úloha optimalizace se provádí podle předchozích písemných kritérií a aplikuje aktuální strategie našeho vývojového týmu.
Tímto způsobem jsme dosáhli výsledku pro tablet JZ4760 od firmy KORIDY: Dobu zavádění 4s.