Archive for August, 2009
elevator – en ‘hiss’nande parameter
Vad är ‘elevator’ för en kernelparameter? Och vad är det bra för?
Detta har att göra med I/O schemaläggning för kernel, mot disk. Eftersom disk I/O (input / output) är väldigt långsamt om man jämför med övriga interna operationer som våra maskiner håller på med så har linuxkerneln utvecklats för att hantera dessa operationer så effektivt och prestandaoptimerande som möjligt.
Denna schemaläggare kallas för ‘elevator’, eftersom den påminner hur en hiss fungerar. Låt oss anta att vår hiss står på nedersta våningen och fem personer kliver in. Dessa fem personer skall till olika våningar, första personen trycker på våning 5, andra personen på våning 8, tredje på våning 4, fjärde på våning 20 och den sista på våning 3.
Hissen kommer ju inte åka till dessa våningar i samma ordning som knapparna trycktes, nej, hissen kommer att först stanna på våning 3 sen 4,5,8 och sist våning 20.
På samma sätt optimerar vår kernel läs och skrivningar mot disk, den köar upp I/O och optimerar när läs/skriv-armen passerar dessa kluster på den fysiska disken.
Självklart så finns det inte enbart ett sätt att schemalägga I/O som är optimalt i alla lägen. Linux 2.6 kerneln har fyra olika schemaläggare.
- cfg – Completely Fair Queuing
Detta är default i Ubuntu 9.04 (och många andra distar) och innebär att det har en kö per process och försöker distribuera resurserna jämt över samtliga I/O.
- noop – No Operation Performed (förklaringen ‘No Operation Performed’ är en egen “tolkning”)
Detta innebär att inget speciell behandling av I/O görs, 100% FIFO (First In First Out) gäller. Det innebär att hissen i mitt exempel ovan skulle åka till våningarna i samma ordning som knapparna trycktes in. Kan tyckas omständligt och dumt, men det finns tillfällen då detta är en väldigt viktig och prestandaförbättrande åtgärd.
- deadline – Deadline
använder en monitonic algoritm för att minska I/O fördröjning (latency). Det ger en nära “real-time” beteende och kommer att omordna I/O för att få bästa svarstider på ett väldigt “aggressivt” sätt.
- anticipatory – Anticipatory
Till skillnad från deadline kommer Anticipatory att lägga till en fördröjning på varje I/O (vilket kommer att öka svarstiderna). Genom att göra detta och ha ett tillräckligt stort ködjup ökar sannolikheten att kerneln kan omordna I/O i ordning och på så sätt minska söktiderna på disk (liknande cfg). Denna är lämplig när vi har att göra med mycket långsamma diskar.
När skall man då ens fundera på att ändra elevator parameter då?
Det finns faktiskt några gånger då det är självklart, och det är när vi skall använda noop istället för defautl cfg.
Ta t.ex SSD som inte är en mekaniskt arm som flyger fram och tillbaka över en roterande magnetskiva. Det finns ingen anledning till att “äta” CPU kraft för att köa upp dessa och omordna dessa. Så det är en klar kandidat för noop.
Ett annat tillfälle är om du har en diskkontroller med cache och logik, vilket de allra flesta hårdvarubaserade RAID-kort har, det är generellt bättre att låta RAID-kortet att hantera kön mot de fysiska korten än att låta kerneln göra det.
Jag antar också att virtuella maskiner som har sin “disk” som image-filer på en värdmaskin också skulle få prestanda förbättringar genom att nyttja noop som elevatorparameter. Detta har jag dock precis satt igång en test för att utröna i min miljö, jag får helt enkelt återkomma med mina iakttagelser gällande detta.
I övrigt så är det bara att testa, dokumentera, ändra och jämföra som gäller. Vad som passar just din miljö och förutsättningar. Parametern finns där för att användas, och erkänn.. det är kul att “tuna” ett system….
För att sätta elevator parametern så är detta en boot parameter till kerneln, ändra i t.ex grub och sätt elevator=noop eller den schemaläggaren du för tillfället vill ha.
Det finns de som säger att detta går att “eka” in i /sys per LUN basis. Jag har själv inte testat, men sökvägen är /sys/block/sd<X>/queue/scheduler där <X> ersätts med devicebokstaven du är intresserad av. Jag själv har aldrig testat, och jag rekommenderar inte att göra det. Men OM ni gör det med lyckat resultat, kan ni inte skriva en rad då?
Och vinnaren är linux….
IDG har gjort en test av olika operativsystem, och jag är faktiskt lite förvånad att Ubuntu hamnade på så höga poäng.
Bara det faktum att det var så många olika linux varianter gör mig glad, och konstaterar snabbt att vinnaren är Linux.
[tags]Ubuntu, OSX, Operativsystem, linux[/tags]
några skrivbordsunderlägg
Jag har gjort ett par skrivbordsunderlägg (wallpapers) för eget bruk, men kanske någon annan kan ha glädje av dessa?
Klicka på bilderna för att komma till nerladdningsplatsen (deviantART).
Sen har jag gjort en bakgrundsbild till en polare, själv tycker jag inte om den.. men smaken är som baken.
Samtliga är i upplösning 1680×1050.
X11 Forwarding över SSH med Cygwin och Putty
Tillbaka till verkligheten efter semestern, och på jobbet är jag “fast” i windows.
Tänkte att skulle köra ett grafisktprogram från jobbet på min dator hemma, och det går ju att göra med X11 forwarding. Det du behöver satt upp er givetvis en ssh-server på maskinen hemma, sen behöver du installera Cygwin på windowsdatorn.
Börja med att ladda ner cygwin på deras hemsida och kör installationen.
Välj en nerladdningsplats nära dig :)
När valen vilka “paket” som skall installeras scrollar du ner och expanderar X11
Välj paketet xinit (ett flertal andra paket kommer automagiskt att väljas)
Nu börjar installtionen, det tar ett tag, men det är bara att vänta.
Nu behöver vi starta X-servern på windows maskinen, den hittar du i menyn
Bara att minimera fönstret som dyker upp, du behöver inte göra något med det.
Starta sen Putty för att ansluta dig till maskinen hemma, jag har i några tidigare inlägg beskrivigt hur du kan konfigurera openssh-server att “kräva” certifikat för inloggning :
http://gargamel.nu/2009/02/sakra-upp-sshd/
http://gargamel.nu/2009/02/ansluta-till-opensshd-med-putty-och-privat-nyckel/
http://gargamel.nu/2009/02/tunnla-till-servern-med-putty/
http://gargamel.nu/2009/03/distibuera-din-publika-ssh-nyckel/
Vi måste dock se till att X11-forwarding är påslaget innan vi ansluter till servern med SSH
Sen ansluter vi oss med putty och startar ett program, t.ex xclock
Så här ser xclock ut från Windows Vista
Och så här ser virt-manager, skönt med GUI ibland
Detta är ju inte den snabbaste metoden att köra GUI-program “remote”, men det är enkelt att komma igång med.. vi behöver ju inte konfigurera något speciellt (förutom SSH) på linuxmaskinen.
















