Kan Linux bli raskere?

Av Knut Yrvin 1. januar 2006

Raskere oppstart av den del Linux-systemer kan gi bedre brukeropplevelse. I dag starter et Linux-system relativt tregt i forhold til hva som er mulig. Dette gjør at f.eks. tynnklienter, bærbare maskiner og annet utstyr som gjerne er 5-6 år gammelt oppleves tregere enn hva som er nødvendig. Også programmene kan startes raskere enn i dag. Denne artikkelen går gjennom en del av arbeidet som er i gang for å skvise mer ut av et Linux-system.

Hovedgrunnen til at Linux starter tregere enn nødvendig fra "kaldstart" er at alle delsystemene startes i en bestemt rekkefølge. Mye av tiden ved oppstart går med på at et system venter på at et annet har startet opp. Det er laget løsninger som starter systemer mer effektivt, noe som kan nærmest halverer tiden Linux tar å starte. Også brukerprogrammene kan starte raskere. Det er eksempler på halvering av tiden det tar å starte KDE. Denne artikkelen gir en oversikt over kommenede forbedrer av hastigheten på Linux.

Raskere systemstart

I dag bruker Linux et standardisert "init-system" for oppstart. Init-systemet ble lansert i 1990 med versjon 4.0 av UNIX System V. Systemet består av en rekke skript i katalogen /etc/init.d. De styrer oppstart tjenester Linux må ha for å virke. Tjenestene starter i rekkefølge. Det betyr at tjenester venter på sin tur med å starte, noe som fører til venting. Tester viser at PC-en venter så mye som 40% av tiden ved oppstart. Her er det mye å hente.

Utviklere som jobber med Linux-distribusjonen Gentoo har laget noe som kalles neste generasjons init, eller initng som det kalles. Initng kjører starten av flere tjenester i parallell. Med initng går oppstarten på 24 sekunder isteden for 41 sekunder på en Pentium M 1,4 GHz. Gevinster er på 17 sekunder. Dessverre samvirker ikke initng med init. Derfor pågår flere grep for å forbedre oppstarten innenfor det standardisert init-regimet.

SuSE har støtte for parallell oppstart ved hjelp av standard init-skript. De har også vært pionerer med å legge inn informasjon om avhengigheter i skriptene for oppstart. Dette gir mulighet å optimalisere for maksimal parallellitet. En annen metode som ser ut til å øke farten på oppstart er noe som kalles "reloading" eller "readahead". Man leser filer som vil bli brukt i oppstarten inn i minne helt først i oppstarten av Linux. Å lese rett fra minnet er betydelig raskere enn fra harddisk. Utfordringen er å unngå en fast liste med filer, men å lage en dynamisk liste ved oppstart. På den måten får hver maskin en liste som passer den maskinvaren og de tjenestene som kjøres. Ubuntu er et eksempel på distribusjon som kjører statiske fil-lister.

Gjenkjenning av maskinvare tar også lengre tid enn nødvendig. Skriptene som følger med i Debian sarge tar 15-20 sekunder. Disse er allerede erstattet av ny programkode som gjør gjenkjenning av maskinvare på sekunder. Mye tyder på at dette vil gi den størst effekt under oppstart. I tillegg kan man også hanke inn sekunder på parallellitet og readahead.

Raskere programstart

Nå har vi sett på oppstarten av Linux-systemet hvor tiden til oppstart kan reduseres med minst 40%. Men flere andre systemer er også tregere enn hva som er nødvendig. Vindushåndtereren KDE beskylds for å være treg. F.eks. blir xfce trukket fram som svært rask. Enkle tiltak med KDE kan korte ned oppstarten til 1/3 av hva som er vanlig. Dette er like raskt som xfce viser tester[1].

1. http://www.kdedevelopers.org/node/1663

Fremtiden byr på mer. I juni 2005 ble ny utgave av biblioteket QT i versjon 4.0. KDE 4 vil bruke dette biblioteket, noe som gir en redusert oppstart på rundt 20%. I tillegg vil KDE kreve mindre plass. KDE 4 vil sannsynligvis komme til høsten 2006. Det pågår lignende optimaliseringer i nye utgaver av GNOME.

Også GCC har kommet i ny utgave i 2005. Versjon 4.0 gir raskere kompilering enn versjon 3.4 som de fleste bruker i dag. Forbedringen er på rundt 25%. Dette har en hel del å si ved kompilering av store programpakker som OpenOffice, KDE og GNOME. Men også oppstartstiden for en del programmer, spesielt interaktive program vil redusere. Det krever riktig bruk av nye parametere som f.eks. "-fvisibility".

For en del år siden ble det også laget et system for å redusere antall minneoppslag for program med dynamisk lenking. Dette gav god effekt på program kompilert med GCC 2.X-kode. GCC 3.X har tatt med mange av fordelene med prelink. Mye tyder på at GCC versjon 4.0 tilbyr såpass mye funksjonalitet at prelink er unødvendig.

Når blir Linux raskere?

Som denne gjennomgangen viser er det mye å hente på en forbedring av init. Den største forbedringen med raskere gjenkjenning av maskinvare ligger allerede inne i neste utgave av Debian. Det gjøres betydelig innsats for å tilby en init-løsning som kan kjøres i parallell, og innlesing av oppstartskript i minnet. Fremtidig KDE 4 og GNOME-løsninger vil også gjøre sitt.

Forbedringene vil også kunne brukes som en del av systemet for tynne eller halvtykke klienter. F.eks. gjøres et betydelig arbeide for å øke hastigheten på oppstart i LTSP. Dette er spesielt viktig da tynnklienter som regel brukes på gjenbrukte PC-er. Foreløpig har videreutvikling av ny LTSP ført til at ting går noe tregere. Det jobbes aktivt med å få vekk forsinkelsene med utviklere fra LTSP-miljøet, Ubuntu, og Skolelinux. Derfor vil forbedringene være kjærkomne. Her er en oversikt som viser hva det jobbes med:

https://wiki.ubuntu.com/ThinClientFasterStartup

Når får du tilgang til disse forbedringene uten å være utvikler eller dataekspert? Når det gjelder tynnklienter eller halvtykke klienter med LTSP så handler dette stort sett om stabilitetstesting. Både halvtykke klienter og forbedringer i oppstart er på plass. Storskala testing er viktig for å være sikker på at alt fungerer i store installasjoner. Når det gjelder KDE 4 så er det mange utviklere som mener at denne utgaven vil være klar til bruk en gang på høsten 2006. Forbedringen av init som gir størst effekt er allerede på plass i neste utgave av Debian. Flere justeringer med parallell init er på utviklerstadiet.

Kort sagt vil mye skje med ytelsen på Linux-programmer de neste 12 månedene. Forbedringen kan være på så mye som 40% raskere oppstart. Mye av dette er til stor fordel for de som gjenbruker maskinvare, eller har bærbare datamaskiner med nøktern kapasitet.