Tuning Embedded Linux: Når Mindre er More

Det er et ordtak som du kan aldri være for rik eller for tynn. Mens det er en bit av overdrivelse, er tynn definitivt
i når det kommer til embedded Linux. Heldigvis, trimming fettet av Linux for embedded bruk er mye enklere enn å bli rik eller miste at reservedekket. Intels Darren Hart forklarte hvordan han slanket Linux ned på Embedded Linux-konferansen i oktober.

Hart sier at målene var å redusere bildestørrelse, minnebruk, og minimere oppstart. Hvorfor? Hvis du kan spare 2 pennies på en chip, for enheter som leveres i millioner det er verdt det. Han bemerker også at mindre bilder bruker mindre strøm – som er, selvfølgelig, dypt viktig for brukerne. (Og leverandørene definitivt like å tout bedre batterilevetid.) Dette betyr også at det er bedre ytelse all-around.

Noen av de virkelige eksempler på at Hart sitert, hentet delvis fra en avstemning på Yocto mailing listen, var ting som digitale kameraer og medisinsk utstyr med svært minimale ressurser. Et digitalt kamera er kanskje bare har 10 MB minne – som ønsker å vente lenge på et digitalt kamera å starte opp? Du ønsker å være klar med kameraet så raskt som mulig, slik at bildestørrelsen er dypt viktig.

Andre enheter, sa Hart, er oppstart over nettverket og krever minst mulig bilde.

Goal Vekt

Hvordan slanke er slank nok? Hart sier at målet var å komme ned til en Kernel og RootFS som er mindre enn 4 MB, og som kan starte opp med mindre enn 8 MB. De skal starte opp til skallet på mindre enn 2 sekunder. " Fra strøm på å logge inn, " sa Hart. Det er riktig, 2 sekunder

Hart sa også at ". Det er juks " for å slå av nettverk. I 2011 skal nesten hver enhet kunne ha nettverksmuligheter.

Hvor er vi nå

Minimal bilde i Yocto, sa Hart, er 4MB kernel image. Den har en 11MB RootFS, for totalt 15 MB. Oppstart var 9,5 sekunder til pålogging. De RootFS inkluderer filene som er nødvendige for å starte opp, biblioteker, programmer og Linux-kjernen

". Føringer " sa Hart er å gå for " lavthengende frukt " først, de 90% som er lettere å kvitte seg med, og ikke " hårete " ting som kan ta en evighet å optimalisere. Budsjettet som Hart kom opp med inkluderer 1MB for Linux-kjernen og 3MB for RootFS.

Interessant, sier Hart at han fokuserte i sitt innlegg bare på konfigurasjons å slanke alt ned i stedet for kilde modifikasjoner. Ifølge Hart, det er nok å gjøre i kilden konfigurasjon.

Hart nærmet lagring av blokker, snarere enn bytes. Hvorfor? Hard sa det spiller ingen rolle hvor mange byte brukes, det er hvor mange blokker " det er hvordan disken måles ".

Hart deretter tilbrakte en god del av talen som dekker de verktøyene som brukes og hans metoder for slanking ned bildet, og noen av de større stykker som han fjernet som ikke var nødvendig. For eksempel Hart sa at han ble kvitt udev og v86d, siden han ikke trenger ting som dynamisk enhet eller støtte for VGA. Han var også i stand til å kvitte seg med 1MB ved å bli kvitt den ext journal. (Spesielt siden de fleste enheter ikke vil bruke Ext til slutt, uansett.)

Disse tingene falt på størrelse med 7MB, og droppet 2,3 sekunder fra oppstart med en to-linje endring i konfigurasjonen.

Neste han så på innebygde drivere. Ifølge Hart, ble 66,53% av kjernen bilde sammensatt av drivere, nettverk, filsystemer, lyd og kjernen kjernen. Naturligvis, du trenger ikke mye som for et innebygd enhet, så han gikk på jakt etter ting over 500KB å bli kvitt.

Nettverk, for eksempel, mister 131K for trådløst. Hvis du ikke trenger trådløst i en enhet, det er en moden mål å bli kvitt. Likeledes bruker NFS 230K, som kanskje ikke er nødvendig for mange anordninger. Kvotestøtte, det er 22K kan du ikke trenger. Lyd? Det er nesten 700k. Hvis du ikke trenger lyd, det er også moden for å bli kvittet.

Hart fortsatt av stadier, snakker om de forskjellige tingene som ble fjernet med hver passering. Ved stadium 5, hadde han kjernen " dum liten " med totalt 1.6MB. Til syvende og sist var Hart i stand til å komme under to sekunder for å starte kjernen og får å logge inn. Funksjonaliteten, skjønt, var tilsvarende minimal – . og kanskje mindre enn man kunne ønske i en produksjon enhet, og med en innebygd enhet

Stage 4, skjønt, er " hva som er relevant. " Her er kjernen mindre enn 4 MB og oppstart rett på 2 sekunder.

Neste trinn

Hva gjorde dette? Hart sier utfallet er " Meta-Tiny, " en eksperimentell lag for tweaking configs uten rote med originale kilder. Deretter sier han at de skulle gjenopprette " netbase " til bildet, og dele opp udev emballasje. Hart sier også at Busybox trenger en bedre måte å eksponere sine konfigurasjonsmuligheter, siden han måtte skrive sine egne verktøy for å slanke det ned ytterligere.

Han sier også at en liten-config alternativet sannsynligvis ikke vil være tilstrekkelig for det brede spekter av enheter som er i bruk. Fordi det er så mange alternativer, Hart sa at det må være flere bittesmå konfigurasjoner som passer forskjellige maskinvaretyper.

For mer informasjon, sjekk ut Yocto Project og git repository på Yocto repo. Naturligvis, vil du også ønsker å se Hart tale i tillegg hvis du er dypt interessert i tuning embedded Linux. Mange takk til Thomas Petazzoni for poste snakk!