Matematiken bakom varför en stor server är mer effektiv än tio små
Slår du ihop tio små servrar till en stor pool som delar på jobbet får du mer prestanda än summan av delarna. Det låter som gratis prestanda men det är ren matematik. En pool som hanterar all trafik tillsammans står emot toppar mycket bättre än tio separata servrar som var och en kämpar med sin egen andel. Det är precis det som händer när köteori möter riktig hårdvara och effekten är större än de flesta gissar.
En delad kö är alltid effektivare än många små
Tänk dig ett postkontor med tio luckor. I det ena scenariot har varje lucka sin egen kö, som på en gammaldags bank. I det andra scenariot står alla i en enda kö och går fram till nästa lediga lucka, som på Systembolaget. Samma antal luckor, samma antal kunder. Ändå går det andra scenariot snabbare för nästan alla.
Anledningen är att i tio separata köer kan en lucka stå tom samtidigt som någon fastnat bakom en långsam kund i grannkön. Den lediga kapaciteten hjälper ingen. I den gemensamma kön går den lediga luckan alltid till nästa person i tur. Ingen kapacitet slösas bort på att vänta på fel person.
I köteori beskrivs det här med Erlangs formler, uppkallade efter den danske matematikern Agner Krarup Erlang som på 1910-talet räknade på hur många telefonlinjer en växel behövde. En modell som kallas M/M/c beskriver exakt det gemensamma postkontoret: ankomster som kommer slumpmässigt, betjäningstider som varierar och `c` betjänare som delar på en enda kö. Det är samma matematik som avgör hur en lastbalanserare bör dela upp trafik mellan servrar i ett datacenter.
Det intressanta är hur olinjär vinsten är. En server som körs på 90 procents belastning har långa köer och ryckiga svarstider, eftersom det inte finns någon marginal att ta upp en plötslig topp med. Slår du ihop tio sådana servrar till en pool som fortfarande körs på 90 procent i snitt, blir köerna dramatiskt kortare. Med fler betjänare i samma kö sprids variationen ut. Sannolikheten att alla tio är upptagna samtidigt är mycket lägre än sannolikheten att en enda server är upptagen. Toppar som skulle kvävt en ensam server absorberas av poolen.
Det här är också varför överdimensionering är dyrare än den ser ut. Ett vanligt sätt att undvika köer är att köra servrar på låg belastning, säg 30 procent, så att det alltid finns luft. Men med en gemensam kö behöver du inte den luften. Du kan köra poolen betydligt hårdare och ändå hålla korta svarstider, eftersom marginalen delas. Skillnaden märks direkt i molnfakturan, färre servrar för samma servicenivå. Samma princip förklarar delar av hur elnätet balanserar sin last, där en stor sammankopplad nät klarar variationer som ett litet lokalt nät aldrig skulle klara.
Laddboxen på huvudsäkringen följer samma princip
Lastbalansering är inte bara en serverfråga. Den elbilsägare som installerat en laddbox med lastbalansering använder exakt samma tänk, fast på huvudsäkringen i stället för på servrar. Systemet mäter hushållets totala förbrukning i realtid och justerar laddboxens effekt så att säkringen aldrig överbelastas. När ugnen och torktumlaren går drar laddboxen mindre och när huset är tyst laddar bilen för fullt.
Har du en huvudsäkring under 25 till 32 ampere rekommenderas lastbalansering starkt, annars riskerar du att slå ut säkringen så fort flera stora apparater går samtidigt. En komplett installation kostar mellan 15 000 och 35 000 kronor före grön teknik-avdraget och efter avdraget på 50 procent landar de flesta privatpersoner på mellan 9 000 och 20 000 kronor. Installationen ska alltid göras av behörig elinstallatör enligt Elsäkerhetsverkets föreskrifter.
För företag med bilflottor blir matematiken ännu tydligare. Ett företag med 20 bilar som alla kör dagtid och laddas på natten klarar sig ofta med betydligt färre laddpunkter än antalet fordon, eftersom laddningen kan schemaläggas och fördelas över hela natten. Precis som den delade serverkön behöver du inte en resurs per uppgift när uppgifterna kan dela på kapaciteten över tid. Om du vill räkna på vad din egen resa eller ditt eget fordon kostar i drift kan du testa resekostnadsräknaren. Den verkliga produkten är energistyrningssystemet bakom laddarna, inte hårdvaran i sig.
När den gemensamma kön inte lönar sig
Vinsten med att slå ihop kapacitet har gränser. Om jobben är väldigt olika i storlek, en blandning av snabba anrop och tunga batchkörningar, kan en enda lång körning blockera den gemensamma kön och göra alla korta anrop långsamma. Då är det bättre att separera trafiken i olika pooler.
Kostnaden för själva lastbalanseraren måste också räknas in. Den lägger till ett extra hopp, ett steg där trafiken passerar och som i sig kan bli en flaskhals eller en felkälla. För en handfull servrar är den overheaden sällan värd besväret. Vinsten från gemensam kö växer med antalet betjänare, så ju större poolen är, desto mer lönar sig samordningen. Vill du räkna på egna procenttal och belastningsnivåer kan procenträknaren vara ett smidigt verktyg.
FAQ
Vad är skillnaden mellan Erlang och köteori?
Köteori är det matematiska fältet som beskriver köer i allmänhet. Erlangs formler är specifika verktyg inom köteorin, framtagna för att räkna på telefonväxlar men användbara för allt från callcenter till serverpooler. M/M/c-modellen är en av de mest använda.
Behöver jag lastbalansering till min laddbox?
Om din huvudsäkring ligger under 25 till 32 ampere är svaret oftast ja. Utan lastbalansering riskerar laddboxen att dra så mycket effekt att säkringen löser ut när andra stora apparater går samtidigt. En behörig elinstallatör kan bedöma din anläggning och avgöra om det behövs.
Varför blir en stor serverpool effektivare än flera små?
För att ledig kapacitet aldrig slösas bort. I separata köer kan en server stå tom medan en annan är överbelastad. I en gemensam kö går nästa lediga server alltid till nästa jobb i tur, vilket jämnar ut variationen och kortar köerna för samma totala belastning.
Källor
- M/M/c en.wikipedia.org
