Embedded Linux a možnosti zrychlení startu zařízení a
Transkript
Embedded Linux a možnosti zrychlení startu zařízení a
InstallFest 2011 České vysoké učení technické v Praze FAKULTA INFORMAČNÍCH TECHNOLOGIÍ katedra počítačových systémů ve spolupráci se společností IKT Advanced Technologies s.r.o. Embedded Linux a možnosti zrychlení startu zařízení Jiří Smítka [email protected] 6.3.2011 1/15 InstallFest 2011 Popis problému ● ● ● ● ● Každé zařízení by mělo ihned po zapnutí fungovat na plný výkon. Málokteré zařízení s moderním operačním systémem je toho schopné. Vývoj softwaru stojí peníze. Zkrácení doby startu ≡ investice na straně výrobce. Klíčové je uhádnout, kolik uživatel snese. … a důsledky ? 6.3.2011 2/15 InstallFest 2011 Telefon E66 (Symbian): bootuje 50 sekund !!! (30 sekund boot + 20 sekund různé animace) 6.3.2011 3/15 InstallFest 2011 Další příklady ● ● ● IP kamera DM365 (Linux) originální firmware: 20 sekund firmware upravený skupinou nadšenců: 2,5 sekundy Satelitní přijímač Dreambox DM800HD (Linux): 90 sekund CISCO routery (IOS): třeba i 10 minut !!! 6.3.2011 4/15 InstallFest 2011 Náš boj: Linux na SH4 ● Použitý HW: ● procesor SH7760 na 200 MHz ● SDRAM 133 MHz, CL=3, 32-bit ● FLASH 100 ns, 32-bit ● Linux 2.6.36.2 (vanilla) ● Podpůrný SW: ● uBoot ● TFTPBoot ● stub (Renesas) 6.3.2011 5/15 InstallFest 2011 První spuštění ● Naše zařízení poprvé nabootovalo za 1 minutu a 49 sekund. ● ● ● ● ● ● 5 sekund uBoot 7 sekund TFTPboot 25 sekund stub (kopírování jádra) 57 sekund stub (kopírování initrd) 11 sekund dekomprese kernelu 4 sekundy boot kernelu 6.3.2011 6/15 InstallFest 2011 Jednotlivé fáze bootování ● ● ● uBoot – nastaví registry a spustí TFTPBoot (čeká 5 sekund na stisk klávesy → menu) TFTPBoot – spustí stub (čeká 5 sekund na stisk klávesy → menu) Stub zkopíruje jádro a initrd do RAM a spustí kernel ● Kernel nejdříve provede dekompresi. ● Kernel nabootuje. 6.3.2011 7/15 InstallFest 2011 Vylepšení: Jádro nebude komprimováno ● ● ● ● ● uBoot – nastaví registry a spustí TFTPBoot (čeká 5 sekund na stisk klávesy → menu) TFTPBoot – spustí stub (čeká 5 sekund na stisk klávesy → menu) Stub zkopíruje jádro a initrd do RAM a spustí kernel Kernel nejdříve provede dekompresi. -11 sekund Kernel nabootuje. 6.3.2011 8/15 InstallFest 2011 Vylepšení: Necháme jen kernel :-) ● ● ● uBoot – nastaví registry a spustí TFTPBoot (čeká 5 sekund na stisk klávesy → menu) TFTPBoot – spustí stub (čeká 5 sekund na stisk klávesy → menu) Stub zkopíruje jádro a initrd do RAM a spustí kernel -1:45 ● Kernel nejdříve provede dekompresi. ● Kernel nabootuje. Kdo ale spustí kernel ? 6.3.2011 A jak naprogramovat flash ? 9/15 InstallFest 2011 Vylepšení: Nový bootloader ● ● IKTBoot – nastaví registry, otestuje paměť, zkopíruje jádro a initrd do RAM a nastaví prostředí a spustí jádro (stisk klávesy během testu paměti → menu) Kernel nabootuje. celkový čas bootování < 5,5 sekundy z toho: 1,5 sekundy test paměti 1,2 sekunda kopírování 3,2 sekundy boot kernelu 6.3.2011 10/15 InstallFest 2011 Jak na boot za 1 sekundu ? ● ● ● Zrušit testování paměti SDRAM: -1,5 s sekundy (teoreticky lze paměť testovat za běhu) Zmenšit jádro: cca -0,2 s Zmenšit initrd, ponechat některá data a programy ve FLASH ve zvláštním filesystému: kopírování cca -1 s, při montování ještě cca -0,5 s ● Zrychlit paměť FLASH (100ns → 90ns): -0,1 s ● Zrychlit paměť SDRAM (133MHz → 166MHz): -0,7 s ● Zrychlit montování initrd - nyní trvá 2 s, převážně dekomprese (metoda GZIP). Změna na LZO: cca -1 s (neověřeno) CELKEM: boottime < 1s (ale cena za vývoj a součástky !!) 6.3.2011 11/15 InstallFest 2011 Poznámka ke kompresi initrd Rychlejší metoda dekomprese → větší soubor → delší kopírování !! doba kopírování a dekomprese rychlejší metoda, ale více dat lzma gzip lzo bez komprese velikost initrd (před dekompresí) 6.3.2011 12/15 InstallFest 2011 Podobné projekty ● Bootup Time Working Group http://elinux.org/Bootup_Time_Working_Group ARM9, 168 MHz: 5 sekund ● 2net Limited http://www.2net.co.uk Freescale i.MX515, 800 MHz: 5,5 sekundy ● swiftBoot http://www.swiftboot.com Renesas SH7724, 500 MHz: 1 sekunda 6.3.2011 13/15 InstallFest 2011 Shrnutí – jak zrychlit start ? ● ● ● ● Minimalizujte velikost jádra. Minimalizujte initrd, ne všechny programy a data musí být ihned zavedeny do RAM. Zkuste použít jinou/žádnou kompresi. Podívejte se, kde má Váš bootloader prostoje a co dělá pomalu. ● Nastavuje bootloader dobře časování pamětí ? ● Využijte faktu, že se HW nemění. 6.3.2011 14/15 InstallFest 2011 Děkuji za pozornost ! Please, wait. Booting the kernel... 6.3.2011 15/15
Podobné dokumenty
Mainlinovy kernel na telefonu Pavel Machek <pavel@ucw
Casti jsou non-free
Kernel 2.6.28 (FIXME)
PowerLeap PL-370/T (Rev.2), Návod pro Rychlý Start
ujistěte, že nastavení FSB zkladní desky je nastaveno správně: FSB-133MHz pro nová Pentium III (Tualatin) a 100MHz pro
nové Celerony (Tualatin). Nové procesory Celeron (Tualatin) nepodporují SMP (D...