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

Mainlinovy kernel na telefonu Pavel Machek <pavel@ucw Casti jsou non-free Kernel 2.6.28 (FIXME)

Více

PowerLeap PL-370/T (Rev.2), Návod pro Rychlý Start

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...

Více