Självständigt arbete på grundnivå Independent degree project - first cycle

Huvudområde Datateknik

Resursoptimering i datacenter med utgångspunkt i serveroperativsystem

Kristofer Olsson Daniel McKinnon Forsell MITTUNIVERSITETET Avdelningen för informations- och kommunikationssystem

Examinator: Magnus Eriksson, [email protected] Handledare: Magnus Eriksson, [email protected] Författare: Kristofer Olsson, [email protected] Författare: Daniel McKinnon Forsell, [email protected] Utbildningsprogram: Nätverksdrift, 120 hp Huvudområde: Datateknik Termin, år: 04, 2015

ii

Sammanfattning

Allt fler företag flyttar sina datorsystem från att nyttja lokal infrastruktur till att åtnjuta utlokaliserad och centraliserad drift och infrastruktur i datacenter. Detta ökar kraven på datacenteroperatörerna dels externt för att maximera tillgängliga resurser för varje kund och dels internt för att vinstmaximera. Genom optime- ring kan företag således frigöra så mycket resurser som möjligt per investering till slutkund. Syftet med detta projekt är att undersöka om huruvida det går att identifiera några skillnader i hur effektivt Windows-baserade och Unix-lika operativsystem nyttjar tillgängliga resurser i datorsystem med utgångspunkt i rollen som webbserver. Projektet består av en kvantitativ undersökning av De- bian GNU/Linux, och Microsoft Windows Server 2012 samt hur dessa tre operativsystem nyttjar tillgängliga resurser i ett serversystem beträf- fande programvara ofta förknippad med webbservrar; Apache HTTP, Microsoft IIS och MySQL. Undersökningen visar att det är svårt att dra generella slut- satser och att det finns för- och nackdelar med respektive paradigm. Undersök- ningen visar dock att Unix-lika system helt byggda från källkod (Gentoo Linux) erbjuder en mycket signifikant fördel ur prestandasynpunkt beträffande Apache HTTP och antalet simultana besökare systemet kan hantera. Undersökningen visar också att Windows Server 2012 är marginellt mer effektivt när det gäl- ler prestanda i primärminnet. Dessutom visar undersökningen att Microsofts egen webbserver, IIS, presterar avsevärt bättre än Apache i Windows Server 2012-miljö. De resultat som presenteras i denna rapport är reproducerbara och kvantifierbara för att assistera framtida forskningsprojekt. Abstract

More and more companies move their computer systems from local infrastruc- ture to enjoy the benefits of outsourced and centralised operations and infras- tructure in data centres. This increases the demands on data centre operators, externally to maximise available resources for each customer, and internally to maximise profits by optimising resource consumption and thus free up as much resources as possible per investment to customers. The purpose of this project is to investigate whether or not there are differences in how effectively Windows-based and Unix-like operating systems utilise the available resources in computer systems on the basis of the role of a web server. The project consists of a quantitative survey of GNU/Linux, Gentoo Linux, and Microsoft Windows Server 2012, and how these three operating systems utilise the available resources in a server system regarding software often associated with web servers; Apache HTTP, Microsoft IIS, and MySQL. The survey shows that it is difficult to draw general conclusions, but there are advantages and disadvantages related to respective paradigm. The survey shows, however, that Unix-like system completely built from source code (Gentoo Linux) provide very significant advantages from a performance point of view regarding the Apache HTTP server, and the number of simultaneous requests the system can serve. The survey also shows that Windows Server 2012 is marginally more effective in primary memory performance. In addition, the survey shows that Microsoft’s own web server, IIS, performs significantly better than Apache in a Windows Server 2012 environment. The results presented in this report are reproducible and quantifiable to aid future research projects. Innehåll

1 Inledning 1 1.1 Två paradigm ...... 1 1.2 Syfte ...... 2 1.3 Frågeställning ...... 3 1.4 Avgränsningar ...... 3 1.5 Rapportens struktur ...... 3 1.6 Arbetsfördelning ...... 3

2 Tidigare forskning 5 2.1 Öppna och proprietära system ...... 5 2.2 Windows och Linux i virtualiseringsmiljö ...... 5 2.3 Nätverksprestanda i Windows och Linux ...... 6 2.4 Gentoo Linux ...... 6 2.5 Utsikter för ytterligare forskning ...... 6

3 Tekniska fundament 7 3.1 Öppna och slutna operativsystem ...... 7 3.2 Operativsystem ...... 8 3.2.1 Gentoo Linux ...... 8 3.2.2 Debian GNU/Linux ...... 8 3.2.3 Windows Server 2012 ...... 9 3.3 Mätverktyg ...... 9 3.3.1 Apache HTTP Server Benchmarking Tool ...... 9 3.3.2 STREAM Benchmark ...... 10 3.3.3 Fio - Flexible I/O ...... 10 3.3.4 JMeter ...... 10

4 Experimentets genomförande 11 4.1 Experimentvariabler ...... 11 4.1.1 Oberoende variabler ...... 12 4.1.2 Beroende variabler ...... 12 4.2 Installation av serveroperativsystem med tillhörande mjukvara . 13 4.3 Mätverktyg ...... 14 4.3.1 Apache HTTP Server Benchmarking Tool ...... 14 4.3.2 Apache JMeter ...... 15 4.3.3 STREAM ...... 16 4.3.4 Fio - Flexible IO ...... 16

vii 5 Resultat 19 5.1 Prestandaoptimering av Gentoo Linux ...... 19 5.2 Prestandaundersökning av Apache HTTP ...... 19 5.3 Prestandaundersökning av Microsoft IIS ...... 20 5.4 Prestandaundersökning av primärminnet ...... 21 5.5 Prestandaundersökning av sekundärminnet ...... 21 5.6 Prestandaundersökning av MySQL ...... 23

6 Analys 29 6.1 Analys av mätdata för mätningar utförda på Apache HTTP och Microsoft IIS ...... 29 6.2 Analys av mätdata för mätningar utförda på MySQL Community 30 6.3 Analys av mätdata för mätningar utförda på primärminnet . . . 31 6.4 Analys av mätdata för mätningar utförda på sekundärminnet . . 32

7 Diskussion och slutsats 33 7.1 Inledning och frågeställningar ...... 33 7.2 Projektets nyckelpunkter ...... 33 7.3 Potentiellt besvarande av frågeställningar ...... 34 7.4 Återkoppling till tidigare forskning ...... 35 7.5 Begränsningar i forskningen ...... 35 7.6 Etiska aspekter ...... 36 7.7 Framtida forskning ...... 36 7.8 Slutsats ...... 37

A Testparametrar 43 A.1 Apache HTTP Server Benchmarking Tool ...... 43 A.2 Fio - Flexible I/O ...... 43 A.3 Apache JMeter ...... 43 A.4 STREAM ...... 46

B Installation och optimering av Gentoo Linux 47 B.1 Optimering av kompilator ...... 47 B.2 Optimering av Gentoo Linux Kernel ...... 47

viii Tabeller

4.1 Oberoende variabler - Operativsystem ...... 12 4.2 Beroende variabler - Tjänster ...... 13 4.3 Hårdvaruspecifikation - Dell PowerEdge 1950 ...... 13 4.4 Mätverktyg ...... 15

5.1 Testresultat för Apache HTTP ...... 20 5.2 Testresultat för prestandaundersökning av Microsoft IIS . . . . . 21 5.3 Testresultat för prestandaundersökning av primärminnet (MB/s) 21 5.4 Testresultat för prestandaundersökning av sekundärminnet . . . 22 5.5 Testresultatet för prestandaundersökning av MySQL ...... 23

6.1 Analys av mätdata för Apache HTTP och Microsoft IIS . . . . . 30 6.2 Analys av mätdata för MySQL Community ...... 31 6.3 Analys av mätningar utförda på primärminnet (MB/s)...... 32 6.4 Analys av mätningar utförda på sekundärminnet (IOPS) . . . . . 32

ix

Figurer

5.1 Testresultat för prestandaundersökning av Apache HTTP och Microsoft IIS ...... 24 5.2 Testresultatet från prestandaundersökning av MySQL ...... 25 5.3 Testresultatet från prestandaundersökning av primärminnet . . . 26 5.4 Testresultat från prestandaundersökning av sekundärminnet . . . 27

A.1 Konfiguration av databaskoppling i testmjukvaran JMeter . . . . 44 A.2 Konfiguration av trådar, Ramp-Up-Period och antalet förfråg- ningar i testmjukvaran JMeter ...... 44 A.3 Konfiguration av SQL-syntax i testmjukvaran JMeter ...... 45 A.4 Konfiguration av slumpgeneratorn i testmjukvaran JMeter för va- riablerna user_id, order_id och result ...... 45

xi Benämning Förklaring PROPRIETÄR Programvara som är en persons eller ett företags egendom OPEN SOURCE Datorprogram vars källkod inte är proprietär utan är tillgänglig att använda, läsa, modifiera och vidaredis- tribuera för den som vill, ibland med vissa förbehåll SERVER System som betjänar andra system DEBIAN Unix-likt operativsystem som bygger på fri och öp- pen mjukvara och nyttjar bl.a. Linux-kärnan WINDOWS SERVER Operativsystem utvecklat av Microsoft GENTOO Unix-likt operativsystem som bygger på fri och öp- pen mjukvara och bl.a. nyttjar Linux-kärnan GENKERNEL Ett verktyg tillhandahållet av Gentoo Foundation för att automatisera byggprocessen av Linux-kärnan X64 Specificerar att det rör sig om 64-bitars arkitektur MYSQL Databasservermjukvara utvecklad av Oracle APACHE Webbservermjukvara utvecklad av Apache software foundation IIS Proprietär webbservermjukvara utvecklad av Micro- soft PRIMÄRMINNE Datorns primära minne även kallat RAM-minne SEKUNDÄRMINNE Datorns sekundära minne, t.ex. en hårddisk DATACENTER Fysisk eller virtuell infrastruktur för att drifta serv- rar och annan nätverksbaserad utrustning IOPS Input/Output Operations Per Second

xii Kapitel 1

Inledning

Allt fler företag använder sig av tredje parter för drift av datorsystem och sin infrastruktur. Ofta köper man tjänster från datacenter där man åtnjuter kost- nadseffektiv drift av olika former av informationssystem [28]. Effekten av detta är att företag som driver datacenter växer sig allt större med nya utmaningar som följd. En av dessa utmaningar är hur effektivt datacenter nyttjar befintliga resurser i datorsystem vilket direkt kan påverka kostnader och möjliga vinster för verksamheten [28]. Eftersom datorresurser kan vara kostsamma är det vik- tigt att effektivisera så mycket som möjligt. Ett sätt att åstadkomma detta är till exempel att implementera operativsystem som på ett så effektivt sätt som möjligt nyttjar de tillgängliga resurserna till den verksamhet som genererar in- komst för företaget. Därmed kan man minimera ineffektivt slöseri av resurser och tillgångar [28]. Betänk ett litet företag med några få servrar som används av företagets anställda spelar det eventuellt mindre roll om huruvida företaget optimerar servrarnas operativsystem för att nå små inkrementella effektiviseringar. Al- la företag ser emellertid inte ut på detta sätt, ponera en miljö som t.ex. ett datacenter där tusentals maskiner ständigt utför arbete under tung belastning medför till synes triviala förbättringar potentiellt betydelsefulla vinster. Skul- le man därtill kvantifiera problemet med utgångspunkt i ett företag med ett flertal mycket stora datacenter, eller vidare utifrån ett globalt perspektiv, blir vinsterna potentiellt ännu större. Detta projekt och experiment kan bistå en beslutsfattare i att ta informerade beslut vid inköp av teknik och infrastruktur. De mätningar som producerats genom projektets experiment kan med fördel appliceras i en verklig miljö för utvärdering av vilka värden en optimering av infrastrukturen potentiellt kan medföra för en befintlig organisation.

1.1 Två paradigm

Det finns idag två primära paradigm av operativsystem som dominerar mark- naden för webbservrar; Unix-lika operativsystem och Windows-baserade opera- tivsystem [25]. För att undersökningen i detta projekt ska bli så relevant och intressant som möjligt kan det därför vara intressant att definiera vad som är ett populärt och relevant operativsystem i sammanhanget.

1 Unix-lika operativsystem upptar, enligt statistik sammanställd av W3Techs Web Technology Surveys, cirka 67,7 % av marknaden för webbservrar och Micro- soft Windows upptar, enligt samma statistik, cirka 32,3 % av marknaden för webbservrar [25]. Även om Unix-lika operativsystem dominerar marknaden till antalet finns samtidigt en viss övervikt för Windows-baserade operativsystem när det gäller webbplatser med högre trafikintensitet och belastning. Dock är skillnaderna i detta avseende relativt små [25]. Utvecklingen över tid förefal- ler relativt stabil med endast mindre fluktuationer på tiondels procentenheter senaste året [25]. Unix-lika system är strängt taget inte en enhetlig aktör utan bör betraktas mer som ett paraplybegrepp. Det finns flera olika Unix-lika system som agerar under samma flagg. Studerar man fördelningen inom denna kategori närmare är det lämpligt att göra en initial distinktion mellan Linux-system och system som konservativt betraktas som Unix-system (t.ex. HP-UX, Solaris, AIX, BSD, osv). Inom undergruppen Linux sticker distributionen Debian GNU/Linux ut som den dominerande “dialekten” av Linux, följt av och CentOS. Debian GNU/Linux står för cirka 11,5 % av den totala marknaden (inkluderande både Unix-lika och Windows-baserade operativsystem) [27] och kan således anses vara en signifikant aktör inom området. W3Techs Web Technology Surveys har även sammanställt statistik för webb- servrar och visar tre dominerande system. Apache är den överlägset största webbservern med en andel på cirka 57,3 % av marknaden följt av Nginx med en andel på cirka 24,4 % samt av Microsoft IIS med en andel på cirka 13,2 % av marknaden [26]. Med utgångspunkt i denna statistik kommer projektet fokusera på Microsoft Windows samt Debian GNU/Linux som två av de mest signifikanta aktörerna. Dessutom kommer Gentoo Linux att inkluderas i projektet som en utmanare till de två etablerade aktörerna inom området. Gentoo Linux byggs helt från källkod och erbjuder omfattande möjligheter till anpassning och optimering till aktuell plattform, ändamål och liknande. Den webbserver som primärt kommer att undersökas i projektet är Apache utifrån sin mycket dominanta ställning inom området.

1.2 Syfte

Syftet med undersökningen är att mäta och jämföra hur effektivt några vanliga operativsystem för servrar använder resurser. Förhoppningen är att undersök- ningen ska kunna användas för att påvisa eventuella vinster som kan göras för ett presumtivt företag. Undersökningen kommer att omfatta dels operativsy- stem av kommersiell, s.k. proprietär, karaktär och dels Unix-lika operativsy- stem vilka bygger på fri och öppen källkod. Syftet är även att undersöka om det är möjligt att öka prestandaeffektiviteten i ett datacenter genom att skräddar- sy och kompilera ett öppet operativsystem direkt från källkod (utifrån behov). Mätningarna kommer att utföras på flera olika system med avsikt att undersöka vilket av dessa system i längden blir mest kostnadseffektivt att implementera i t.ex. datacenter.

2 1.3 Frågeställning

Beskriver den frågeställning som undersökningen ämnar att besvara. • Nyttjar Unix-lika operativsystem fysiska resurser mer effektivt jämfört Microsoft Windows Server? • Nyttjar skräddarsydda Unix-lika operativsystem kompilerade från källkod fysiska resurser mer effektivt jämfört med Unix-lika operativsystem orien- terade runt förkompilerade paket?

1.4 Avgränsningar

Undersökningen ämnar endast omfatta några av de allra vanligaste operativsy- stemen för servrar på marknaden. Undersökningen kommer därtill heller inte ta någon hänsyn till eventuella kostnader för licenser för något av de valda ope- rativsystemen. Det kommer inte tas någon hänsyn till om huruvida systemens prestanda förändras över tid allteftersom systemen åldras, fokus kommer att lig- ga på nyinstallerade system även om detta område skulle vara mycket intressant att undersöka i framtida forskning.

1.5 Rapportens struktur

Efter detta inledande kapitel där rapporten på ett relevant sätt kontextualise- rats, syftet med rapporten och de frågeställningar samt avgränsningar som lyfts introducerats, kommer det andra kapitlet titta på viss tidigare forskning som genomförts inom området. Genom att belysa tidigare forskning illustreras det på vilket sätt den forskning som presenteras i denna rapport kan bidra till fäl- tet med en fördjupad förståelse. I det tredje kapitlet kommer experimentet att beskrivas samt de mätverktyg som använts för att nå fram till resultaten att re- dovisas. I det fjärde kapitlet belyses experiments genomförande metodologiskt. Det femte kapitlet redovisar vilket resultat mätningarna i experimentet visat. Rapporten avslutas i de sjätte och sjunde avslutande kapitlen med diskussion och slutsatser.

1.6 Arbetsfördelning

Genomgående för arbetet har varit att samarbeta i möjligaste mån vilket gör att någon glasklar arbetsfördelning är svår att redovisa. Kristofer är ägare av det fysiska datorsystem som använts i experimentet vilket gör att Kristofer i något större utsträckning än Daniel varit ansvarig för uppsättning av den tekniska miljön, särskilt beträffande Windows- och Debian-miljön, medan Daniel varit mer drivande i uppsättning och optimering av Gentoo-systemet. Beträffande rapportskrivningen har Kristofer varit ansvarig för experimentets genomförande, redovisning av resultat och grafisk representation, Daniel har varit mer ansvarig för introduktion, tidigare forskning, tekniska fundament, och diskussion; men även i rapportskrivningen har samarbete varit i fokus.

3

Kapitel 2

Tidigare forskning

2.1 Öppna och proprietära system

2009 tittade Póserné [20] närmare på skillnaderna mellan operativsystem im- plementerade som webbservrar och gjorde en jämförande studie baserat på om huruvida systemet bestod av öppen källkod eller bestod av ett s.k. proprietärt system. Póserné satte dels upp ett Windows Server 2008-system med Microsofts egen webbserver IIS med SQL Express och dels ett Ubuntu Linux Server-system med en s.k. LAMP-stack innehållandes Apache webbserver och MySQL. Däref- ter genomfördes ett antal prestandamätningar med stresstester både fokuserade på webbservern och på databasen. Pósernés experiment visade snarlika resultat vid en jämförelse mellan de två systemens prestanda men att de säkerhetsrelate- rade fördelarna med ett system som bygger på öppen källkod i stor utsträckning överskrider några eventuella fördelar med stängd källkod. Detta menade Póser- né berodde på det momentum som ofta finns inom projekt som bygger på öppen källkod, gentemot den ofta tungstyrda organisation som ofta omgärdar multi- nationella företag och stängd källkod [20]. Det som kan tyckas saknas i Pósernés experiment jämfört med den infallsvinkel som belyses i detta experiment är att detta projekt avser att försöka skapa ett mer kontrollerat experiment för att isolera och studera vilka skillnader själva operativsystemet introducerar. Detta uppnås genom att använda samma webbserver-stack i samtliga system. På så sätt kan störningar från de beroende variablerna, vilka beskrivs i närmare detalj i kapitel 4, minimeras.

2.2 Windows och Linux i virtualiseringsmiljö

Ristov och Gusev [21] tittade 2013 närmare på prestanda och kostnader med utgångspunkt i implementering av Windows- och Linux-system i virtualiserings- miljö och på vilket sätt vi kan optimera resursförbrukningen beroende på vilket system som implementeras. Ristov och Gusev valde att, istället för att genomfö- ra belastningsmätningar gentemot en webbserver-stack, exekvera komplexa ma- trismultiplikationer i en s.k. Microsoft Azure-miljö (molnsystem) och se i vilken omfattning respektive operativsystem förbättrade eller försämrade beräknings- prestandan [21]. Till Ristov och Gusevs förvåning visade sig Windows prestera bättre än Linux i denna kontext, även om skillnaderna minskade ju större och

5 komplexare matriserna blev. Dessutom presterade Linux bättre när matriserna blev mycket komplexa. Den sammanfattande slutsatsen från Ristov och Gusevs experiment är att Windows är att föredra i mindre komplexa beräkningssitu- ationer samt när man bedriver mycket cacheintensivt arbete i systemet. Linux kan vara att föredra i de fall då kostnad är en avgörande faktor [21].

2.3 Nätverksprestanda i Windows och Linux

Narayan et al. [15] genomförde 2009 ett experiment där man valde att titta närmare på prestandan mellan IPv4 och IPv6 i Windows Vista och Ubuntu Linux. Man noterade en högre prestandaförlust i systemet vid användning av IPv6 jämfört med IPv4 för båda systemen. Man visade även på att Ubuntu Linux hade en något (cirka 5 %) högre genomströmning av data oavsett vilken version av protokollet som implementerades [15].

2.4 Gentoo Linux

Det har gjorts viss forskning beträffande utmanaren Gentoo Linux med ut- gångspunkt i optimering av resursförbrukning. 2008 skrev Zhou et al. [29] om användandet av äldre hårdvara i utvecklingsländer och berörde primärt ma- skiner så som äldre Apple Xserve, Apple Power Mac, samt TV-spel så som PlayStation 3. Denna hårdvara sammankopplades till att utgöra ett kluster av hårdvara för centraliserad beräkningskraft. Orsaken till att man i experimentet valde just Gentoo Linux som operativsystem förklaras vara att Gentoo Linux byggs helt från källkod med målsystemet som optimeringsgrund, detta i kontrast mot operativsystem som bygger på förkompilerad och mer generellt konfigurerad mjukvara [29]. Artikeln gör dock ingen jämförande analys mellan olika system. Man har fokuserat mer på att lösa sin problemsituation enbart med Gentoo Li- nux och därför kan undersökningen i den här rapporten bidra till fältet med en ytterligare fördjupad aspekt i hur optimering av mjukvara skulle kunna erbjuda en vinst i hur effektivt systemen nyttjar tillgänglig hårdvara och resurser.

2.5 Utsikter för ytterligare forskning

Med utgångspunkt i den tidigare forskning som identifierats och studerats kan konstateras att det inte är ställt bortom allt tvivel vilket operativsystem som erbjuder mest effektiv resursförbrukning. Eftersom många av de studerade ex- perimenten inom området belyst väldigt specifika och konkreta aspekter kan det experiment som presenteras i denna rapport bidra till området. Denna rapport belyser problematiken från ett perspektiv där operativsystemet i möjligaste mån isoleras som variabel genom att samma webbserver-stack (Apache och MySQL) med grundläggande inställningar använts i samtliga system. På så sätt kan vi på ett mer konkret sätt potentiellt bedöma om det finns några skillnader i hur effektivt operativsystemet nyttjar de tillgängliga resurserna.

6 Kapitel 3

Tekniska fundament

Detta tredje kapitel kommer att introducera läsaren till en del av de teoretiska begrepp och koncept som berörs i anslutning till rapporten. Inledningsvis kom- mer öppna och slutna system som kontrasterande paradigm att introduceras och definieras och därefter kommer de operativsystem som involverats i experi- mentet att presenteras. Slutligen kommer även de mätverktyg som använts för att genomföra experimentet att presenteras var för sig.

3.1 Öppna och slutna operativsystem

Det finns tvåhuvudsakliga paradigm när det kommer till hur ett operativsystem och tillhörande programvara distribueras och hanteras utifrån ett rent tekniskt- filosofiskt perspektiv [22, s. 44, 813, 848]. Antingen tillhandahåller man ett ope- rativsystem paketerat som en komplett lösning utan djupare insyn; tanken är att den källkod (datorinstruktioner) som ligger till grund för all funktionalitet och design i systemet måste skyddas från obehörig åtkomst och därför ska be- traktas som en ren företagshemlighet [24, s. 200]. Den här typen av mjukvara och operativsystem kallas ofta för proprietär mjukvara [22, s. 44] och grund- läggande och gemensamt för den mesta proprietära mjukvaran är att de oftast regleras och kontrolleras av leverantören, snarare än av användaren. Detta be- gränsar möjligheten till insyn och optimering i den lokala infrastrukturen [24, s. 198]. Ett annat paradigm är att tillhandahålla hela systemet i samma format som i det slutna systemet, men dessutom tillsammans med all den källkod som använts för att skapa systemet [24, s. 199-200]. Tanken med detta är att slutanvända- ren ska få full insyn i hur systemet fungerar och därigenom också ha rätten och möjligheten att modifiera och anpassa systemet efter behov [24, s. 198]. Att tillhandahålla programvara på det öppna sättet möjliggör för kunden att optimera systemet utifrån mycket specifika behov i den lokala infrastrukturen [24, s. 198-199]. Både proprietär och “öppen” mjukvara omgärdas av komplex och omfattande licensiering. Exempel på licenser för öppen mjukvara är t.ex. den reciproka så kallade GNU-licensen GPL (GNU General Public License) [5]. GPL erbjuder användaren större kontroll över mjukvaran genom att alltid ges möjligheten att ta del av källkoden (och därmed också modifiera den). Dock ställs det stora krav på att de modifikationer som användaren gör också mås-

7 te distribueras tillbaka till ursprungsprojektet [5]. En annan öppen licensiering som inte är reciprok är den s.k. BSD-licensen (Berkley Standard Distribution License) [11]. Filosofiskt sett är BSD-licensen mer liberal och öppen mot det faktum att användaren, utöver samma friheter som i GPL, även ska ha frihe- ten att inte återdistribuera förändringar. Dessutom ska användare t.o.m. ska ha rätten att göra den öppna och fria mjukvaran stängd och proprietär för att t.ex. tjäna kommersiella syften [11].

3.2 Operativsystem

3.2.1 Gentoo Linux Gentoo är ett projekt för öppen källkod som bygger på en teknisk-filosofisk tradition av maximal valfrihet och optimering av mjukvara. Detta nås genom kompilering direkt från källkod utifrån specificerade parametrar utmärkande för det aktuella datorsystemet [6] [23, s. 288]. Gentoo som projekt är inte ett ope- rativsystem utan ett komplett ekosystem och inkluderar en samling verktyg och databaser för hantering av mjukvara som bygger på att varje komponent i syste- met anpassas, optimeras (för den aktuella hårdvaran och de aktuella behoven) och byggs från den ursprungliga källkoden [23, s. 288-289]. Gentoo-projektet kan implementera både Linux-kärnan, samtliga större BSD-kärnor (t.ex. OpenBSD, FreeBSD, NetBSD, DragonflyBSD), Mac OS X, och det finns t.o.m. möjlighet att implementera GNU Hurd som operativsystemskärna genom ett, dessvärre i nuläget stillastående, underliggande Gentoo-projekt [23, s. 288-289]. De programvaror och komponenter som Gentoo-projektet består av hanteras genom det så kallade Portage-systemet. Portage är ett system för automatiserad kompilering av källkod baserat på de inställningar användaren manuellt ställer in [8]. Inställningarna består av olika miljövariabler och “flaggor” för hur kompi- latorn ska uppföra sig och vilka optimeringar som ska inkluderas för olika hård- varukomponenter [8]. Dessutom kan användaren välja så kallade “USE-flaggor” som styr exakt vilken funktionalitet som ska inkluderas vid kompileringen. Detta styr också vilka beroenden alla komponenter får och därigenom skapar Gentoo- projektets flexibilitet och optimeringsmöjligheter [8].

3.2.2 Debian GNU/Linux Debian GNU/Linux är ett populärt Unix-likt operativsystem som drivs genom det s.k. Debian-projektet. Debian-projektet har traditionellt baserat operativ- systemets funktionalitet på öppen och fri källkod [17]. Källkoden som ligger till grund för all funktionalitet i operativsystemet är licensierad under flera olika licenser, däribland BSD och GNU GPL [17]. Användare av systemet har tillgång till över 40 000 förkompilerade binära programvarupaket [17]. Trots att Debian GNU/Linux bygger på öppen och fri programvara distri- bueras programvaran normalt sett inte som källkod utan som förkompilerade paket vilka bekvämt installeras med hjälp av något av projektets pakethante- ringssystem (t.ex. APT) [17] [18]. Pakethanteringssystemet hanterar, på samma sätt som Portage gör i Gentoo-projektet, de beroenden och uppdateringsförfa- randen som är avgörande för systemets funktionalitet och utveckling [18]. För att möta kraven på öppenhet och frihet finns det alltid möjlighet att ta del av

8 och använda källkoden till förkompilerade paket genom att installera respektive pakets källkodspaket [18]. Debian-projektet tillhandahåller också vissa möjligheter att installera pro- gramvara som inte nödvändigtvis är fri utan kanske omfattar funktionalitet som är proprietär (t.ex. drivrutiner för enheter där vissa delar av programvaran inte är fria) men detta kräver att användaren aktivt gör detta val och aktiverar så kallade icke-fria programdatabaser och därefter installeras med hjälp av valfritt pakethanteringssystem [18]. På samma sätt som med Gentoo-projektet omfat- tar även Debian-projektet fler operativsystemskärnor än bara Linux och till- handahåller kärnor både från FreeBSD-projektet och Hurd-projektet med stöd för en uppsjö olika processorarkitekturer [17] vilket gör systemet till ett brett implementerat system, något som också legat till grund för valet av Debian GNU/Linux i detta projekt [17].

3.2.3 Windows Server 2012 Microsoft Windows Server 2012 är projektets proprietära operativsystem som inte är ett Unix-likt system. Microsoft Windows Server 2012 bygger istället på en lång tradition av grafiska operativsystem både för server- och persondatorre- laterade uppdrag [14, s. xxxi]. Windows Server 2012 är i första hand ett grafiskt operativsystem men kan också användas som en s.k. huvudlös server utan grafisk miljö där administratören bedriver administrativt arbete genom fjärrstyrning [14, s. 883-884]. Windows Server 2012 som operativsystem är modulärt på så sätt att funktionaliteten i systemet kan utökas utifrån behov genom att aktive- ra önskad funktionalitet eller installera kommersiella paket och programvaror. Operativsystemet kommer som fyra varianter med olika funktionalitet och stöd för hårdvara beroende på behov och budget; med Foundation och Essentials som den lägre nivån samt Standard och Datacenter som de mer avancerade nivåerna med funktionalitet och stöd för det mesta [14, s. 2]. Windows Server tillhandahåller ett helt ekosystem med mjukvara för hante- ring av Active Directory-träd, gruppolicyer, virtualisering med Hyper-V, DNS, omfattande nätverksstack, samt erbjuder även programvara för lagring och pre- sentering av webbsidor med Microsoft Internet Information Services (IIS) [14, s. 2 ff.].

3.3 Mätverktyg

3.3.1 Apache HTTP Server Benchmarking Tool Att förutspå hur många besökare en webbplats kommer att servera med webb- platsinnehåll vid en given tidpunkt är svårt. För att upprätthålla systemets kvalitet och möta krav på leverans utan avbrott behöver systemet omfatta till- räckligt hög kapacitet för att möta behovet när det är som störst. En metod för att försöka göra en bedömning rörande hur många besökare och nedladdningar av webbplatsen/webbplatserna som en webbserver har kapacitet att hantera är att helt enkelt att belasta webbservern samt mäta den genom- snittliga hanteringstiden i relation till ett visst antal samtidiga förfrågningar till webbservern. Apache HTTP Server Benchmarking Tool är ett verktyg med just detta ändamål [1]. Med hjälp av Apache HTTP Server Benchmarking Tool

9 kan webbservern belastas och testas under stress. Därefter kan, med hjälp av resultaten som producerats genom testerna, utvärdering ske för hur väl webb- servern hanterar belastningen samt hur mycket belastning webbservern tenderar att klara av att möta innan kvaliteten minskar under uppsatta tröskelvärden [1]. Namnet till trots är Apache HTTP Server Benchmarking Tool inte ett verktyg enbart för att belasta och testa Apache webbserver utan kan användas även för att belasta och testa andra webbservrar, däribland t.ex. Microsoft IIS [1].

3.3.2 STREAM Benchmark Ibland kan andra faktorer än medeltid förlupen för att servera statiskt innehåll på webbplatser spela in vid bedömning av hur väl en server presterar under belastning. STREAM Benchmark är ett verktyg för att mäta hur väl en ma- skin kan bibehålla bussbandbredden för det primära minnet, detta i relation till syntetiskt ökande beräkningsbelastning på processorn/processorerna i systemet [13]. Tanken med detta är att avgöra i vilken omfattning systemet, vid belast- ning, utarmar den tillgängliga överföringsbandbredden för det primära minnet utan att maximalt nyttjad central beräkningskraft uppnåtts (med andra ord i vilken omfattning det primära minnet blir en flaskhals i systemet snarare än pro- cessorerna). I detta experimentet kan detta visa sig vara en bidragande faktor då de tre olika operativsystemen som ingår i experimentet potentiellt hanterar minnesanvändning olika.

3.3.3 Fio - Flexible I/O Hur mycket flöde av data till och från det sekundära minnet ett system hante- rar under stress kan vara en bidragande faktor för hur effektivt en webbserver presterar när mängden användare av systemet ökar [16, s. 21] [10]. Oftast är det inte det primära minnet eller beräkningskapaciteten i en processor som sätter gränserna för hur mycket trafik en webbserver kan hantera utan det sekundära minnet [16, s. 21] [12]. Fio är ett mätverktyg för att testa och mäta hur mycket dataflöde ett gränssnitt kan hantera under stress genom att generera godtyck- liga data [2] [12]. Gränssnitten som Fio har funktionalitet att stressa som är relevanta för den här undersökningen är t.ex. skrivning och läsning till primär- och sekundärminne.

3.3.4 JMeter Att inte vara beredd när trafikmängden till en server ökar kraftigt kan resultera i att tillgängligheten till den eller de tjänster servern tillhandahåller blir bristfällig eller helt uteblir [4, s. 7-8]. Apache JMeter är ett mätverktyg som bygger på fri och öppen mjukvara [4, s. 15-16]. Syftet med mätverktyget är att belasta en da- tabasserver genom att generera simulerad trafik i form av HTTP-förfrågningar. Trafiken kan även kompletteras med cookies för att göra mätningarna mer re- alistiska [4, s. 15 - 16]. Resultatet kan därefter visualieras i form av grafiska representationer.

10 Kapitel 4

Experimentets genomförande

Det kommande kapitlet kommer att redogöra för den metod som ligger till grund för hur undersökningen avses att genomföras. Kapitlet kommer dessutom nämna vilka förutsättningar som har formulerats med för att eventuellt besva- ra frågeställningen. De operativsystem som kommer att ingå i undersökningen presenteras i detta kapitel och metoder för kvantifierbar mätning kommer att belysas. Vidare kommer den hårdvara som implementerats för att genomföra undersökningen att förevisas. Genom att undersöka hur effektivt olika operativsystem använder fysiska resurser i ett datorsystem kan en objektiv och mätbar diskurs vara behjälplig i att fatta informerade beslut i en miljö där t.ex. kostnadsoptimering ofta är av stor angelägenhet. Undersökningen kommer genomföras kvantitativt och bestå av att installera samtliga operativsystem på en och samma fysiska datormaskin. Operativsyste- men kommer att bestå dels av Unix-lika och dels av ett ej Unix-likt system. I ett av fallen kommer operativsystemet att skräddarsys och utformas individu- ellt för den specifika hårdvaran och byggas direkt från källkod. För undersök- ningen kommer de tre utvalda operativsystem sättas upp med identisk tredje- partsmjukvara motsvarande en s.k. webbserver-stack. För att genomföra detta fordras mjukvara för tillhandahållande av innehåll för webb samt en databasser- ver. Efter varje installation kommer ett antal olika stresstester (vilka presenteras nedan) att utföras för att producera en större mängd kvantifierbar data. Däref- ter kommer dessa data analyseras för att ligga till grund för ett besvarande av frågeställningen.

4.1 Experimentvariabler

Experimentet består av att installera den mjukvara som krävs för att tillhan- dahålla full webbserverfunktionalitet på tre olika operativsystem. Efter varje fullförd installation kommer ett antal mätningar att genomföras med utgångs- punkt i hur väl operativsystemet nyttjar de tillgängliga resurserna.

11 4.1.1 Oberoende variabler Samtliga operativsystem kommer installeras på samma hårdvara för att förvissa metoden om att testvärdena blir jämförbara med utgångspunkt i tillgängliga fysiska resurser. Val av Linuxdistributioner har skett med hjälp av W3Techs Web Technolo- gy Surveys användningsstatistik gällande serveroperativsystem för webbpublice- ring. W3Techs Web Technology Surveys har undersökt vilken Linuxdistribution som används flitigast i nämnda miljö. Valet av metod bygger på tanken att valet inte skall ske helt slumpmässigt utan istället representera vilken Linuxdis- tribution som faktiskt används i störst utsträckning. Prestandaundersökningen kommer att ske med det operativsystem som W3Techs Web Technology Surveys anser är det populäraste valet av Linuxsystem till webbmiljö, vilket i skrivande stund är Debian GNU/Linux 3.2.2. Ytterligare en Linuxdistribution kommer att undersökas. Detta är Gentoo Linux som redan på förhand valts ut på grund av möjligheten att bygga sy- stemet direkt från källkod och därigenom skräddarsy systemet helt efter behov och applikation. Gentoo Linux och dess egenskaper beskrivs närmare i avsnitt 3.2.1. Källkoden för Gentoo Linux (både Linux-kärnan och användarrelaterad mjukvara) kommer att skräddarsys och kompileras specifikt för den aktuella maskinen och med utgångspunkt i de krav som specificeras i avsnitt 4.1.2. Det tredje och sista operativsystemet som valts ut till undersökningen är Microsofts Windows Server 2012. Detta blir det enda så kallade proprietära operativsystemet som medverkar i undersökningen. Windows Server 2012 be- skrivs närmare i avsnitt 3.2.3.

Operativsystem Detaljer Debian GNU/Linux 7 Bygger på förkompilerade binära paket och öppen samt fri mjukvara Gentoo Linux Bygger helt på källkod, extremt flexibelt, fri och öppen mjukvara Microsoft Windows Server 2012 Proprietär och stängd mjukvara

Tabell 4.1: Oberoende variabler - Operativsystem

Serveroperativsystemen kommer att optimeras för den tänkta mjukvaran i den mån det är möjligt. Om det visar sig att operativsystemen kommer med annan förinstallerad servermjukvara kommer denna funktionalitet att inaktive- ras. Detta redan vid installationen om möjligt. Operativsystemen kommer att installeras med så minimal konfiguration som möjligt, detta för att i sin tur undersöka flexibiliteten i serveroperativsystemets uppbyggnad och installation.

4.1.2 Beroende variabler För att få en så rättvis undersökning som möjligt kommer samma servermjukva- ra (tjänster) installeras på samtliga av de serveroperativsystem som medverkar i undersökningen. Serveroperativsystemen kommer i sin tur installeras på en och samma server. Kravet som finns på servermjukvaran är således att den skall gå att installera på olika operativsystem. I detta fallet handlar det om installation

12 Tjänst Version Kategori Apache HTTP Server 2.4.12 Fri webbserver (Apache License 2.0) Microsoft IIS 8.0 Proprietär webbserver MySQL Community 5.6.24 Fri SQL-databas (GPL version 2)

Tabell 4.2: Beroende variabler - Tjänster i Windows och Linux. De valda servermjukvarorna för webbserverändamål är baserade på öppen källkod och finns representerad för testets samtliga system. Mjukvaran består av webbservermjukvaran Apache HTTP med versionsnummer 2.4.12 och databasmjukvaran MySQL Community Server med versionsnummer 5.6.24. Ytterligare detaljer gällande dessa servermjukvaror kan skådas i tabell 4.2. Hårdvaran som undersökningens operativsystem och servermjukvaror kom- mer att installeras på består av en Dell PowerEdge 1950 [3] 1U rackserver. Ser- vern är utrustad med dubbla Intel Xeon 5160 dual-core processorer på 3 GHz vardera. Servern är förutom detta utrustad med 8 GB primärminne. Serverns sekundärminne är på 300 GB. Serveroperativsystemen som ingår i undersök- ningen kommer att fördelas jämt över tre separata partitioner som skapas på sekundärminnet. Hårddisken är av typen SAS (Serial Attached SCSI) och är ansluten till serverns interna RAID-kontrollerkort. Fullständig specifikation gäl- lande serverhårdvara återfinns i tabell 4.3.

Komponent Beskrivning Modellbeteckning Dell PowerEdge 1950 (EMU01) Styrkrets Intel 5000X Processor Intel Xeon 5160, 3.0 GHz Dual X2 Primärminne 8 GB, DDR-2, 667 MHz Sekundärminne Seagate ST3300657SS, 15K RPM, 6 Gbit/s SAS Styrenhet PERC 5/i, 3 Gbit/s SAS, 256MB cache Nätverk BroadcomNetXtremeII Gigabit Ethernet

Tabell 4.3: Hårdvaruspecifikation - Dell PowerEdge 1950

4.2 Installation av serveroperativsystem med till- hörande mjukvara

De serveroperativsystem som medverkar i undersökningen kommer att fördelas jämt och därför få en lika stor del av den hårddisk på 300 GB som servern är utrustad med. Detta innebär att samtliga serveroperativsystem kommer att få 100 GB hårddiskutrymme. Samtliga serveroperativsystem kommer också att installeras i 64-bitars version. När det gäller installation av Windows Server 2012 3.2.3 finns olika installa- tionstyper att välja mellan. Den installationstyp av Windows Server 2012 som

13 kommer att användas för att utföra prestandaundersökningen är Windows Ser- ver 2012 Datacenter Edition. Valet föll på versionen med tillhörande GUI. Ut- över partitionering av hårddisken blir detta det enda aktiva valet som kommer att göras under installation av detta serveroperativsystem. Det finns inte heller något direkt val när det kommer till filsystem. NTFS kommer därför att använ- das. För detta serveroperativsystem avses förkompilerade binära versioner av servermjukvaran att användas. Debian GNU/Linux 3.2.2 kommer precis som Windows Server 2012 att bli tilldelat 100 GB hårddiskutrymme. Installationsmetoden är den av Debian till- handahållna minimala CD-avbild för nätverksinstallation [19]. Filsystemet som aktivt kommer väljas under installationen är EXT4. Utöver systemverktyg kom- mer all valfri funktionalitet ej nödvändig för att starta upp och använda systemet väljas bort redan i installationsprogrammet. Installation av servermjukvaran kommer att ske genom kompilering av källkod enligt bifogade manualer. Detta för att på ett smidigt sätt kunna säkerställa att rätt version blir installerad. Den återstående delen av hårddisken kommer att användas för att installera Gentoo Linux 3.2.1. Gentoo kommer att optimeras på olika sätt med syftet att få ut bästa möjliga prestanda. För installation av Gentoo Linux används den tillhörande installationsmanualen [7] som tillhandahålls av Gentoo Foundation. Filsystemet som kommer att användas är precis som för Debian GNU/Linux av typen EXT4. För Gentoo Linux finns det olika installationsprofiler [9]. Den in- stallationsprofil som valts är amd64-no-multilib som innebär en ren 64-bitars installationstyp utan några systembibliotek för 32-bitars kompatibilitet. Gen- too’s Linuxkärna kommer även att optimeras i den mån det är möjligt. Kom- pilatorn GCC kommer att optimeras för serverns processortyp och tillgängliga tilläggsinstruktioner osv. Därefter kommer hela systemet kompileras om med de nya kompilatorinställningarna. För att åstadkomma detta används Gentoo’s pakethanteringssystem Portage. Precis som för Debian GNU/Linux kommer servermjukvaran att kompileras från källkod.

4.3 Mätverktyg

För mätning av prestandan i de utvalda serveroperativsystemen används de mätverktyg som berörs i teoriavsnittet. Verktygen är utvalda för att mäta ett flertal olika aspekter i hur operativsystemet nyttjar de tillgängliga resurserna för att mäta ett så brett spektrum av parametrar som möjligt. Bland annat belyser verktygen hur många förfrågningar per tidsenhet som webbservern kan hantera utifrån sett (som användare), hur mycket databasservern kan hantera i belastning. Inkluderat är även ett verktyg som mäter prestandan på primär- minnet och ett verktyg som mäter hur många I/O-operationer operativsystemet klarar att hantera i förhållande till tillgängliga fysiska resurser.

4.3.1 Apache HTTP Server Benchmarking Tool

Apache HTTP Server Benchmarking Tool 3.3.1 är ett mätverktyg [1] som till- sammans med Apache HTTP-server kommer att användas för att ta reda på hur många konkurrerande användare serveroperativsystemet tillsammans med Apache klarar av att hantera.

14 Mätverktyg Version Typ av mätning Apache HTTP Server Bench- 2.4.12 Antal förfrågningar per sekund marking Tool Apache JMeter 2.13r1 Antal förfrågningar per sekund STREAM 5.8 Prestandamätning av primär- minne. Fio - Flexible I/O 2.08 Slumpmässig läsning och skriv- ning till sekundärminne

Tabell 4.4: Mätverktyg

Tre separata tester kommer att utföras där Apache HTTP belastas med 100, 150 samt 300 konkurrerande användare. Vid simulering av 100 konkurre- rande användare kommer totalt 10 000 förfrågningar skickas till webbservern. Vid 150 användare skickas 15 000 förfrågningar och vid 300 användare skickas 300 000. Testet kommer att utföras med keep-alive aktiverat. För att göra undersökningen så tillförlitlig som möjligt testas samma mängd data. En iden- tisk test-sida innehållande slumpmässig HTML-kod och tillhörande JPEG-bild publiceras därför på respektive webbserver. Målet med undersökningen är att få en bättre förståelse för hur operativsystemet i samspel med servermjukva- ran beter sig vid respektive last. För varje testrunda och serveroperativsystem kommer testet utföras tre gånger. Resultatet från varje testrunda samlas in och presenteras. Den bästa rundan för varje serveroperativsystem kommer att an- vändas som referens och vara avgörande i utvärderingen vars syfte är att hitta eventuella prestandaskillnader mellan de olika serveroperativsystemen. Apache HTTP Server Benchmarking Tool har möjlighet att testa andra webbservermjukvaror än den utvecklad av Apache. Eftersom serveroperativsy- stemet Windows Server 2012 inkluderar den egna webbservermjukvaran IIS är det intressant att utöver prestandaundersökning av Apache även utföra tester på detta alternativ. Syftet är att jämföra prestandan mellan Apache HTTP och Microsoft IIS på Windows Server 2012 som har stöd för bägge dessa servermjuk- varor och därefter jämföra resultatet med hur Apache presterade i Linux-miljö. Detta för att se om det går att påtala några prestandaskillnader. Undersökning- en av IIS utförs med samma metod och testverktyg som Apache HTTP.

4.3.2 Apache JMeter Apache JMeter som beskrivs i teoriavsnittet 3.3.4 kommer att användas för att att simulera användaranstormning mot databasservern MySQL. Testet förbereds genom installation av MySQL Community på samtliga av de serveroperativsystem som medverkar i undersökningen. Förutom själva in- stallationen görs ingen ytterligare konfiguration av MySQL. För varje MySQL- installation och operativsystem skapas en tabell bestående av tre kolumner. JMeter används för att generera och skriva slumpmässig data till tabellen och dess kolumner. Testet kommer att utföras genom att simulera 10, 50 och 100 konkurrerande användare som samtidigt ansluter till databasservern och lägger till slumpmässiga värden i tabellen. För 10 respektive 50 användare utförs 1 000

15 skrivningar per användare. I det fall där 100 användare ansluter sker istället 100 skrivningar per användare. Syftet är att mäta antalet skrivningar per sekund (hits/sec) som MySQL tillsammans med servermjukvaran och serveroperativsy- stemen klarar av att hantera. Förhoppningarna är att detta skall kunna ge en indikation beträffande hur effektivt serveroperativsystemen hanterar tillgängli- ga resurser. I detta testmoment kommer testmjukvaran (JMeter) installeras och köras fristående från servern. Testet utförs därför med hjälp av en arbetssta- tion som direktansluts till servern via 1000 Mbit/s Ethernet. Varje separat test kommer att genomföras tre gånger och den bästa av de tre noterade tiderna kommer att användas i analysen.

4.3.3 STREAM STREAM som beskrivs i teoriavsnittet 3.3.2 kommer att användas för att ta re- da på hur effektivt operativsystemen utnyttjar minnesresurser. I detta specifika fall handlar det om primärminnet. Detta test precis som de övriga kommer att utföras för samtliga serveroperativsystem som medverkar i undersökningen. STREAM använder sig av inställningsparametrar. De inställningsparamet- rar som är extra intressanta och som kommer att användas tillsammans med testverktyget för att optimera testrundorna är array_size, omp_num_threads och times. Matrisstorleken för detta test kommer att vara 10 000 000 vilket är standardinställningen för testverktyget. omp_num_threads som syftar till hur många processortrådar som skall användas kommer att sättas till fyra. Detta då serverdatorn är utrustad med dubbla processorer med två separata kärnor per processor. Detta blir totalt fyra kärnor vilket innebär fyra trådar. times syftar på antalet testrundor vilket för detta test kommer att vara 40. Även detta är en standardinställning. Resultatet från undersökningen kommer att presenteras i antalet MB/s för STREAM’s olika mätegenskaper Copy, Scale, Add och Triad. Innebörden av dessa egenskaper förklaras närmare i teoriavsnittet. Det bästa noterade värdet för varje mätegenskap och operativsystem kommer att använ- das i analysen. Resultatet kommer sedan att jämföras serveroperativsystemen emellan för att se om det går att påtala några prestandaskillnader.

4.3.4 Fio - Flexible IO Fio - Flexible IO som beskrivs i teoriavsnittet 3.3.3 kommer att användas för undersöka sekundärminnets prestanda för de serveroperativsystem som ingår i undersökningen. Fio’s uppgift är att utföra slumpmässiga läs/skriv-test. Detta genom blandad läsning och skrivning där storleken på förhand specificerats till 4 kB. Hur ofta läs- respektive skriv-test skall ske kommer också att specificeras genom en ratio på 3:1. Detta innebär att tre läsningar kommer att utföras för varje skrivning till sekundärminnet. En server måste kunna hantera många an- vändare som alla konkurrerar om samma resurs. Ett sådant scenario kommer att simuleras genom att utföra samtliga testrundor med 64 I/O-operationer (trå- dar) åt gången, vilket simulerar 64 konkurrerande användare. Mängden data som skall läsas/skrivas för varje testrunda kommer att vara i storleksordningen 20, 50 och 100 MB. Resultatet från undersökningen kommer att presenteras i In- put/Output Operations per Second (IOPS). Varje test kommer att genomföras tre gånger och det bästa av de noterade IOPS-värdena kommer att användas i

16 analysen. Resultatet kommer sedan att jämföras serveroperativsystemen emel- lan för att se vilka prestandaskillnader som går att upptäcka både gällande intern hantering av lagringsenheter (bussar) och filsystem.

17

Kapitel 5

Resultat

I det kommande kapitlet presenteras resultatet från undersökningen, det vill säga de mätdata som genererades från de tester som utfördes. Prestandamät- ningar har utförts på en Dell PowerEdge server med serveroperativsystemen Debian GNU/Linux, Gentoo Linux och Windows Server 2012 installerat. Detta med en rad testverktyg avsedda att mäta olika aspekter av operativsystemens prestanda. Testverktygen som har använts är Apache Benchmarking Tool, Apache JMe- ter, STREAM och Fio - Disk I/O. Testverktyget Apache Benchmarking Tool användes först och främst för att utföra belastningstest mot Apache HTTP- server, men även Microsoft IIS där det sistnämnde inkluderades på grund av sin nära koppling till Windows Server 2012. Verktyget JMeter har använts för att utföra belastningstester mot MySQL-databaserna. Fio har använts för att läsa och skriva slumpmässig data till sekundärminnet och STREAM för prestanda- mätningar av primärminnet.

5.1 Prestandaoptimering av Gentoo Linux

I enlighet med uppsatt metod har serveroperativsystemet Gentoo Linux prestan- daoptimerats inför prestandaundersökningen. Kompilatorn GCC har optimerats enligt inställningarna specificerade i bilaga B.1. De optimerade inställningarna för Linux-kärnan kan skådas i bilaga B.2.

5.2 Prestandaundersökning av Apache HTTP

Belastningstestet av webbservern Apache Community utfördes på samma sätt som för Microsoft IIS. Detta med hjälp av mätverktyget Apache HTTP Server Benchmarking Tool. De ingående parametrar som användes tillsammans med testverktyget återfinns i bilaga A.1. Resultatet från undersökningen återfinns i tabell 5.1. Resultatet presenteras även i figur 5.1 som illustrerar ett stapeldia- gram där det högst uppmätta mätvärdet för varje specifik testrunda presenteras. Detta även för de mätningar som utfördes på Microsft IIS. Kolumnen Operativsystem beskriver vilket operativsystem som den specifika mätrundan utförts på. Kolumnen Parameter beskriver antalet konkurrerande användare (första värdet) och det totala antalet HTTP-förfrågningar (andra

19 Operativsystem Parameter u/r Mätrunda Mätdata r(s) Debian 100 / 10 000 1 19 240,13 Debian 100 / 10 000 2 19 369,56 Debian 100 / 10 000 3 19 638,38 Debian 150 / 150 000 1 18 832,84 Debian 150 / 150 000 2 19 058,34 Debian 150 / 150 000 3 19 300,90 Debian 300 / 300 000 1 18 443,75 Debian 300 / 300 000 2 18 036,95 Debian 300 / 300 000 3 18 177,60 Gentoo 100 / 10 000 1 29 280,60 Gentoo 100 / 10 000 2 32 967,83 Gentoo 100 / 10 000 3 50 187,95 Gentoo 150 / 150 000 1 55 866,63 Gentoo 150 / 150 000 2 56 993,07 Gentoo 150 / 150 000 3 57 017,14 Gentoo 300 / 300 000 1 52 046,91 Gentoo 300 / 300 000 2 46 615,14 Gentoo 300 / 300 000 3 40 273,20 Windows Server 100 / 10 000 1 4 685,81 Windows Server 100 / 10 000 2 4 682,39 Windows Server 100 / 10 000 3 4 682,39 Windows Server 150 / 150 000 1 4 618,30 Windows Server 150 / 150 000 2 4 561,33 Windows Server 150 / 150 000 3 4 501,54 Windows Server 300 / 300 000 1 4 317,60 Windows Server 300 / 300 000 2 4 386,54 Windows Server 300 / 300 000 3 4 408,66

Tabell 5.1: Testresultat för Apache HTTP värdet) som webbservern belastades med. Varje test har enligt specificerad me- tod utförts tre gånger för varje given parameter. Kolumnen Mätrunda syftar till vilken av dessa det avser. Mätdata specificerar resultatet från mätningen i antalet förfrågningar per sekund.

5.3 Prestandaundersökning av Microsoft IIS

Belastningstestet av webbservern Microsoft IIS utfördes lokalt på servern med hjälp av mätverktyget Apache HTTP Server Benchmarking Tool. De ingåen- de parametrar som användes tillsammans med testverktyget återfinns i bilaga A.1. Resultatet från undersökningen återfinns i tabell 5.2. Resultatet presente- ras även i figur 5.1 som illustrerar ett stapeldiagram där det högst uppmätta mätvärdet för varje specifik testrunda presenteras. Resultatet jämförs även med de mätningar som utfördes på Apache HTTP för samtliga av de serveroperativ- system som medverkade i undersökningen.

20 Operativsystem Parameter u/r Mätrunda Mätdata r(s) Windows Server 100 / 10 000 1 18 314,82 Windows Server 100 / 10 000 2 20 677,95 Windows Server 100 / 10 000 3 21 367,25 Windows Server 150 / 150 000 1 18 490,92 Windows Server 150 / 150 000 2 19 623,00 Windows Server 150 / 150 000 3 20 902,81 Windows Server 300 / 300 000 1 19 002,55 Windows Server 300 / 300 000 2 19 563,15 Windows Server 300 / 300 000 3 19 784,54

Tabell 5.2: Testresultat för prestandaundersökning av Microsoft IIS

Kolumnen Operativsystem beskriver vilket operativsystem som den specifika mätrundan utförts på. Kolumnen Parameter beskriver antalet konkurrerande användare (första värdet) och det totala antalet HTTP-förfrågningar (andra värdet) som webbservern belastades med. Varje test har enligt specificerad me- tod utförts tre gånger för varje given parameter. Kolumnen Mätrunda syftar till vilken av mätrundorna detta avser. Mätdata specificerar resultatet från mät- ningen i antalet förfrågningar per sekund.

5.4 Prestandaundersökning av primärminnet

Tester på primärminnet utfördes lokalt på servern med hjälp av testverktyget STREAM. De specifika inställningsparametrarna som använts för att utföra undersökningen är en matrisstorlek på 10 000 000, 4 trådar och 40 testrundor. Inställningarna finns representerade i bilaga A.4. Resultatet från undersökning- en återfinns i tabell 5.3. Resultatet presenteras även i figur 5.3 som illustrerar ett stapeldiagram där det högst uppmätta mätvärdet för varje specifik testrunda och serveroperativsystem presenteras.

Parameter Debian Gentoo Windows Copy 4 874,1576 4 881,3547 6 144,3436 Scale 4 861,4464 4 870,0192 6 140,3898 Add 5 251,7697 5 259,1230 5 762,5654 Triad 5 259,8100 5 269,5295 5 797,0493

Tabell 5.3: Testresultat för prestandaundersökning av primärminnet (MB/s)

Kolumnen parameter beskriver de olika testmomenten Copy, Scale, Add och Triad. För varje egenskap har testverktyget valt ut det högst uppmätta värdet. Detta från de 40 testrundor som utförts per individuell mätning och server.

5.5 Prestandaundersökning av sekundärminnet

Ett slumpmässigt läs och skriv-test utfördes till sekundärminnet med hjälp av mätverktyget Fio - Flexible I/O. De ingående parametrar som användes tillsam-

21 mans med testverktyget återfinns i bilaga A.2. Resultatet från undersökningen återfinns i tabell 5.4. Resultatet presenteras även i figur 5.4 som illustrerar ett stapeldiagram där det högst uppmätta mätvärdet för varje specifik testrunda och serveroperativsystem presenteras.

Operativsystem Parameter MB Mätrunda Mätdata r/w Debian 20 MB 1 632 / 203 Debian 20 MB 2 623 / 209 Debian 20 MB 3 662 / 214 Debian 50 MB 1 650 / 216 Debian 50 MB 2 641 / 213 Debian 50 MB 3 647 / 221 Debian 100 MB 1 617 / 210 Debian 100 MB 2 617 / 201 Debian 100 MB 3 612 / 209 Gentoo 20 MB 1 616 / 197 Gentoo 20 MB 2 593 / 190 Gentoo 20 MB 3 634 / 203 Gentoo 50 MB 1 613 / 204 Gentoo 50 MB 2 616 / 205 Gentoo 50 MB 3 611 / 203 Gentoo 100 MB 1 631 / 210 Gentoo 100 MB 2 632 / 211 Gentoo 100 MB 3 641 / 214 Windows Server 20 MB 1 624 / 200 Windows Server 20 MB 2 649 / 208 Windows Server 20 MB 3 632 / 202 Windows Server 50 MB 1 651 / 217 Windows Server 50 MB 2 656 / 218 Windows Server 50 MB 3 653 / 217 Windows Server 100 MB 1 664 / 222 Windows Server 100 MB 2 661 / 220 Windows Server 100 MB 3 666 / 222

Tabell 5.4: Testresultat för prestandaundersökning av sekundärminnet

Kolumnen Operativsystem beskriver vilket operativsystem som den specifi- ka mätrundan utförts på. Kolumnen Parameter beskriver andelen slumpmässig data som skall läsas från och skrivas till sekundärminnet i MB. Varje test har enligt specificerad metod utförts tre gånger för varje given parameter. Kolum- nen Mätrunda syftar till vilken av dessa rundor det avser. Mätdata specificerar resultatet i enheten IOPS (Input Output per Second). Detta för både läsning (första värdet) och skrivning (andra värdet) till sekundärminnet.

22 5.6 Prestandaundersökning av MySQL

Belastningstest av databasservern MySQL utfördes från en extern nätverkskopp- lad dator utrustad med testverktyget Apache JMeter. De ingående parametrar som användes för att utföra testerna återfinns i bilaga A.3. Resultatet från un- dersökningen återfinns i tabell 5.5. Resultatet presenteras även i figur 5.2 som illustrerar ett stapeldiagram där det högst uppmätta mätvärdet för varje specifik testrunda och serveroperativsystem presenteras.

Operativsystem Parameter Mätrunda Mätdata h(s) Debian 10 / 1 000 1 389 Debian 10 / 1 000 2 405 Debian 10 / 1 000 3 410 Debian 50 / 1 000 1 2 110 Debian 50 / 1 000 2 1 870 Debian 50 / 1 000 3 1 930 Debian 100 / 100 1 2 569 Debian 100 / 100 2 2 714 Debian 100 / 100 3 2 527 Gentoo 10 / 1 000 1 339 Gentoo 10 / 1 000 2 425 Gentoo 10 / 1 000 3 313 Gentoo 50 / 1 000 1 1 415 Gentoo 50 / 1 000 2 1 815 Gentoo 50 / 1 000 3 1 689 Gentoo 100 / 100 1 2 339 Gentoo 100 / 100 2 2 400 Gentoo 100 / 100 3 2 625 Windows Server 10 / 1 000 1 561 Windows Server 10 / 1 000 2 539 Windows Server 10 / 1 000 3 560 Windows Server 50 / 1 000 1 533 Windows Server 50 / 1 000 2 546 Windows Server 50 / 1 000 3 544 Windows Server 100 / 100 1 485 Windows Server 100 / 100 2 545 Windows Server 100 / 100 3 500

Tabell 5.5: Testresultatet för prestandaundersökning av MySQL

Kolumnen Operativsystem beskriver vilket operativsystem som den specifika mätrundan avser. Kolumnen Parameter beskriver antalet konkurrerande anslut- ningar (första värdet) och antalet skrivningar till databas (andra värdet). Varje test har enligt specificerad metod utförts tre gånger för varje given parameter. Kolumnen Mätrunda syftar till vilken av dessa mätrundor det avser. Mätdata specificerar resultatet från mätningen i antalet skrivningar till databasen per sekund (hits/sec).

23 Debian Gentoo Windows Server W.S IIS

60,000

55,000

50,000

45,000

40,000

35,000

30,000

Resultat (förf/s) 25,000

20,000

15,000

10,000

5,000

0 100 / 10 000 150 / 150 000 300 / 300 000

Figur 5.1: Testresultat för prestandaundersökning av Apache HTTP och Micro- soft IIS

24 Debian Gentoo Windows Server

2,800

2,600

2,400

2,200

2,000

1,800

1,600

1,400

Resultat (förf/s) 1,200

1,000

800

600

400

200

0 10 / 1 000 50 / 1 000 100 / 100

Figur 5.2: Testresultatet från prestandaundersökning av MySQL

25 Debian Gentoo Windows Server

6,500

6,000

5,500

5,000

4,500

) 4,000 s /

MB 3,500

3,000 Resultat ( 2,500

2,000

1,500

1,000

500

0 Copy Scale Add Triad

Figur 5.3: Testresultatet från prestandaundersökning av primärminnet

26 Debian Gentoo Windows Server

700

650

600

550

500

450

400

350

Resultat (IOPS) 300

250

200

150

100

50

0 20 50 100

Figur 5.4: Testresultat från prestandaundersökning av sekundärminnet

27 28 Kapitel 6

Analys

I det kommande kapitlet sammanställs och analyseras resultatet från den under- sökning som utfördes och vars resultat tidigare presenterades i resultatavsnittet. Varje mätning har enligt för undersökningen vald metod utförts tre gånger per testparameter. I detta kapitel samlas det högst uppmätta mätvärdet för respek- tive mätparameter för en analys. Detta för prestandaundersökningar gällande Apache HTTP, Microsoft IIS och MySQL varav det två första representerar de webbservermjukvaror som undersöktes och det sistnämnda den databasserver som undersöktes. Utöver detta analyseras även de mätdata som genererades från tester utförda på primär- och sekundärminne.

6.1 Analys av mätdata för mätningar utförda på Apache HTTP och Microsoft IIS

Gentoo Linux tillsammans med Apache HTTP hanterade vid den bästa mätrun- dan 57 017,14 sidvisningar per sekund. Resultatet uppnåddes då Apache HTTP belastades med 150 konkurrerande användare och 150 000 förfrågningar. De- bian GNU/Linux och Windows Server 2012 uppnådde istället sina respektive högst uppmätta mätvärden vid belastning med 100 konkurrerande användare och 10 000 förfrågningar. Resultatet var 19 638,38 sidvisningar per sekund för Debian GNU/Linux och 4 685,81 sidvisningar per sekund för Windows Server 2012. Debian GNU/Linux visade alltså ett sämre mätresultat än Gentoo Linux som hanterade mer än dubbelt så många sidvisningar per sekund. Windows Server 2012 visade sig prestera betydligt sämre än samtliga av de Linuxbase- rade serveroperativsystem som deltog i undersökningen. Detta med 4 685,81 sidvisningar per sekund som det högst uppmätta värdet, vilket är 52 331,33 sidvisningar färre än det högsta som uppnåddes med Gentoo Linux. Det skilde totalt 1 194,63 sidvisningar per sekund mellan det högst uppmätta mätvärdet för Debian GNU/Linux mot det lägst uppmätta mätvärdet för samma servero- perativsystem. För Gentoo Linux skilde det 6 829,19 sidvisningar per sekund mellan det högst och det lägst uppmätta mätvärdet. Slutligen för Windows Ser- ver 2012 skilde det 277,15 sidvisningar per sekund mellan det högst och lägst uppmätta mätvärdet. Microsoft Windows Server 2012 tillsammans med Microsoft IIS hanterade vid den bästa mätrundan 21 367,25 sidvisningar per sekund. Även här nåddes

29 högst uppmätt resultat då IIS belastades med 100 användare och 10 000 för- frågningar. Microsoft IIS presterade 16 681,44 fler sidvisningar per sekund än vad Apache gjorde i samma operativsystemsmiljö. Detta sett till det högst upp- mätta mätvärdet för både IIS och Apache HTTP. IIS i Windowsmiljö hanterade i sin tur fler sidvisningar än Apache HTTP i Debian-miljö. Hela 1 728,87 fler sidvisningar per sekund sett till det högst uppmätta mätvärdet för båda. För Microsoft IIS och Windows Server 2012 skilde det 1 582,71 sidvisningar per se- kund mellan det högst uppmätta mätvärdet och det lägst uppmätta mätvärdet. Totalt sett hade Gentoo Linux det högst uppmätta mätvärdet med 57 017,14 sidvisningar per sekund. Debian GNU/Linux visade de mest konsistenta mätre- sultatet med endast 1 194,64 sidvisningar i skillnad mellan det högst uppmätta mätvärdet och det lägst uppmätta mätvärdet i den givna operativsystemsmiljön.

Operativsystem Webbserver Parameter u/r Mätdata r(s) Debian Apache HTTP 100 / 10 000 19 638,38 Debian Apache HTTP 150 / 150 000 19 300,90 Debian Apache HTTP 300 / 300 000 18 443,75 Gentoo Apache HTTP 100 / 10 000 50 187,95 Gentoo Apache HTTP 150 / 150 000 57 017,14 Gentoo Apache HTTP 300 / 300 000 52 046,91 Windows Server Apache HTTP 100 / 10 000 4 685,81 Windows Server Apache HTTP 150 / 150 000 4 618,30 Windows Server Apache HTTP 300 / 300 000 4 408,66 Windows Server Microsoft IIS 100 / 10 000 21 367,25 Windows Server Microsoft IIS 150 / 150 000 20 902,81 Windows Server Microsoft IIS 300 / 300 000 19 784,54

Tabell 6.1: Analys av mätdata för Apache HTTP och Microsoft IIS

6.2 Analys av mätdata för mätningar utförda på MySQL Community

Högst uppmätt mätvärde för Debian Linux var 2 714 skrivningar till databas per sekund. Detta med 100 databaskopplingar och 100 databasskrivningar per data- baskoppling. Även operativsystemet Gentoo Linux presterade bäst med just 100 databaskopplingar och 100 skrivningar per databaskoppling. Det högsta notera- de resultatet för Gentoo Linux var 2 625 vilket indikerar något färre skrivningar än Debian GNU/Linux klarade av att hantera. Windows Server 2012 lyckades istället uppnå bästa resultat med 10 databaskopplingar och 1 000 skrivningar till databas per databaskoppling. Detta gav ett resultat på 561. Totalt lyckades Debian GNU/Linux utföra flest skrivningar till databas. Skillnaden i högst no- terat värde mellan Gentoo Linux och Debian GNU/Linux blev 89 skrivningar per sekund. Mellan Debian GNU/Linux och Windows Server 2012 skilde det istället 2 153 till Debian’s fördel. För de Linuxbaserade operativsystemen som medverkade i undersökningen gavs sämst resultat vid testrundan med 10 da-

30 tabaskopplingar och 1 000 skrivningar till databas per databaskoppling. För de Linuxbaserade operativsystemen gäller att samtliga presterar bättre vid 50 konkurrerande databaskopplingar och 1 000 skrivningar. Högst uppmätta re- sultat noterades vid 100 databaskopplingar och 100 skrivningar. Windows Ser- ver 2012 presterade dock bättre än de Linuxbaserade alternativen vid 10 data- baskopplingar och 1 000 skrivningar per databaskoppling. Debian utförde 151 och Gentoo 136 färre skrivningar än Windows Server 2012. Mätresultaten för te- strundorna på Windows Server 2012 noterades vara sämre ju fler konkurrerande databaskopplingar.

Operativsystem Parameter Mätdata h(s) Debian 10 / 1 000 410 Debian 50 / 1 000 2 110 Debian 100 / 100 2 714 Gentoo 10 / 1 000 425 Gentoo 50 / 1 000 1 815 Gentoo 100 / 100 2 625 Windows Server 10 / 1 000 561 Windows Server 50 / 1 000 546 Windows Server 100 / 100 500

Tabell 6.2: Analys av mätdata för MySQL Community

6.3 Analys av mätdata för mätningar utförda på primärminnet

För mätegenskapen Copy visade det sig att Windows Server 2012 lyckades pre- stera bäst med 6144, 3436 MB/s. Detta hela 1 270,186 MB/s snabbare än Debian GNU/Linux och 1262, 9889 MB/s snabbare än Gentoo Linux. Windows Server 2012 visade även bättre mätvärden för de övriga egenskaperna Scale, Add och Triad. För Scale presterade Windows Server 2012 6140, 3898 MB/s vilket är 1278, 9434 MB/s snabbare än Debian GNU/Linux och 1270, 3706 MB/s snab- bare än Gentoo Linux. För egenskapen Add presterade Windows Server 2012 5762, 5654 MB/s. Detta hela 510, 7957 MB/s snabbare än Debian GNU/Linux och 503,4424 snabbare än Gentoo Linux. Slutligen för Triad presterade Win- dows Server 2012 5797, 0493 MB/s. Detta 537, 2393 MB/s snabbare än Debi- an och 527, 5198 MB/s snabbare än Gentoo Linux. Windows Server 2012 gav högst uppmätta mätvärden för samtliga mätegenskaper. De Linuxbaserade ope- rativsystemen som medverkade i undersökningen mätte snarlikt, dock lägre än Windows Server 2012.

31 Parameter Debian Gentoo Windows Ser- ver Copy 4 874,1576 4 881,3547 6 144,3436 Scale 4 861,4464 4 870,0192 6 140,3898 Add 5 251,7697 5 259,1230 5 762,5654 Triad 5 259,8100 5 269,5295 5 797,0493

Tabell 6.3: Analys av mätningar utförda på primärminnet (MB/s)

6.4 Analys av mätdata för mätningar utförda på sekundärminnet

Högst uppmätta mätvärde för Debian Linux var 662 IOPS när det gällde läsning och 221 IOPS när det gällde skrivning av slumpmässig data till sekundärminnet. För läsning nåddes det högst uppmätta mätvärdet där mätparametern var spe- cificerad till 20 MB. För skrivning var det istället mätparametern 50 MB som gav det högst uppmätta mätvärdet för serveroperativsystemet. Gentoo Linux nådde istället sitt högst uppmätta mätvärde när mätparametern vad specifice- rad till 100 MB vilket gav 641 IOPS för läsning. Samma mätparameter skulle även visa sig ge det högst uppmätta mätvärdet för skrivning. Windows Server uppnådde precis som Gentoo Linux sist högst uppmätta mätvärde då mätpara- metern var specificerad till 100 MB. Windows Server 2012 skulle även visa sig vara det serveroperativsystem som presterade bäst med 666 IOPS för läsning och 222 IOPS för skrivning. Debian GNU/Linux skulle visa sig prestera näst bäst med 22 IOPS färre läsningar än Windows Server 2012. Gentoo Linux visa- de sämst mätresultat med 25 IOPS färre läsningar. Gällande skrivning visade mätresultatet en skillnad på endast 1 IOPS mellan det högst uppmätta mätvär- det för Windows Server 2012 och det för Debian GNU/Linux. Mellan Debian GNU/Linux och Gentoo Linux skilde det 7 IOPS till Debian’s fördel.

Operativsystem Parameter MB Mätdata r/w Debian 20 MB 662 / 214 Debian 50 MB 647 / 221 Debian 100 MB 617 / 210 Gentoo 20 MB 634 / 203 Gentoo 50 MB 616 / 205 Gentoo 100 MB 641 / 214 Windows Server 20 MB 649 / 208 Windows Server 50 MB 656 / 218 Windows Server 100 MB 666 / 222

Tabell 6.4: Analys av mätningar utförda på sekundärminnet (IOPS)

32 Kapitel 7

Diskussion och slutsats

Diskussionskapitlet kommer att inledas med en kort repetition av projektets frågeställningar, följt av en redogörelse av experimentets resultat. Med utgångs- punkt i experimentets resultat kommer kapitlet därefter belysa experimentets nyckelpunkter genom en kritisk diskussion och belysas utifrån den forskning som tidigare bedrivits inom området och experimentets resultat.

7.1 Inledning och frågeställningar

Syftet med projektet var att undersöka tre operativsystem för servrar, mäta och undersöka systemens prestanda utifrån rollen som webbserver. Operativsyste- men som valdes ut för experimentet var dels Microsoft Windows Server 2012, Debian GNU/Linux samt utmanaren Gentoo Linux. Valet av dessa system grun- dade sig framförallt i den popularitet som förknippas med Windows Server 2012 och Debian GNU/Linux i rollen som just webbserver. Gentoo Linux valdes ut för den flexibilitet och anpassningsförmåga som systemet erbjuder utifrån det faktum att systemet helt och hållet byggs från källkod optimerad för den ak- tuella hårdvaran och de aktuella behoven. Operativsystemen installerades på respektive partition på det sekundära minnet i en Dell PowerEdge 1950 rackser- ver och Apache webbserver samt MySQL databasserver installerades i samtliga tre operativsystem. Dessutom inkluderades Microsofts egen webbserver IIS i ex- perimentet för att tillföra ytterligare värde till projektet. Mot denna bakgrund och uppsättning av experimentet hoppades projektet kunna bidra till fältet ge- nom att dels komplettera den tidigare forskning som bedrivits med liknande frågeställningar och dels för att kontextualiseras som en del i beslutsprocessen i ett presumtivt företag där effektivisering av datorsystem är av hög prioritet.

7.2 Projektets nyckelpunkter

Nyckelpunkterna med detta projekt har varit att genomföra belastning och stresstesta Apache, MySQL och Microsoft IIS i ovan nämnda operativsystem och undersöka om huruvida endera operativsystem lämpar sig bättre eller sämre i ett datacenter för ett presumtivt företag. Resultaten visar att det inte är ställt bortom allt rimligt tvivel vilket system som mest effektivt nyttjar tillgängliga resurser. Det beror till viss mån på vilka behov och parametrar som är aktuella

33 och att dessa bör tas hänsyn till innan något beslut tas. Frågeställningarna som ställdes i inledningen gällde om huruvida Unix-lika operativsystem mer effektivt nyttjar fysiska resurser jämfört med Microsoft Windows Server 2012. Dessutom gällde frågeställningarna om huruvida Unix-lika operativsystem byggda från källkod nyttjar fysiska resurser bättre än Unix-lika operativsystem orienterade runt förkompilerade programvarupaket.

7.3 Potentiellt besvarande av frågeställningar

Angående den inledande frågeställningen och operativsystems minneshantering (både primär- och sekundärminne) visar resultaten övergripande att samtliga tre operativsystem inom en felmarginal på cirka 1 % presterar lika bra beträffande prestandan i hanteringen av sekundärminnet i datorsystemet. Däremot visar re- sultaten att Windows Server 2012 presterar bättre när det gäller kommunikation med primärminnet i datorsystemet jämfört med båda Linux-systemen vilka pre- sterar i princip identiskt. Skillnaderna som påvisats genom mätningar av både primär- och sekundärminne mellan Debian GNU/Linux och Gentoo Linux visar på mycket små skillnader med en liten fördel för Debian GNU/Linux beträffande sekundärminnet men en i princip obefintlig skillnad beträffande primärminnet. Vid första anblick kan man således dra slutsatsen att svaret på båda frå- geställningarna i projektet är att nej, Unix-lika operativsystem presterar inte bättre än Windows Server 2012 beträffande fysiska resurser samt att nej, Unix- lika operativsystem kompilerade från källkod och optimerade för aktuellt datorsy- stem presterar inte bättre än Unix-lika system orienterade runt förkompilerade programvarupaket. Dock visar forskningen i detta projekt vidare att detta inte är hela sanningen. Mätresultaten till trots visar mätningarna gjorda av effek- tiviteten i Apache gällande de tre operativsystemen beträffande genomsnittlig svarstid i relation till antalet förfrågningar att Linux-systemen presterar bättre än Windows Server. Undersöks enbart Apache innebär detta, med andra ord, att man kan servera en signifikant större andel besökare om man använder Li- nux med samma hårdvara. Detta till trots att mätningarna av prestandan visar sig vara snarlik mellan de tre systemen. Dock ska tilläggas att om vi även in- kluderar IIS i analysen får Windows Server 2012 ett visst övertag gentemot Debian GNU/Linux. Något som sticker ut är det enorma övertag som Gentoo Linux har gentemot övriga operativsystem när det gäller hur många samtidiga anslutningar datorsystemet kan hantera mot webbservern. Beträffande de mätningar som genomförts i de tre operativsystemen och hur effektivt de hanterar anslutningar till en MySQL-databas finns det initialt ett visst övertag för Windows Server 2012 när anslutningarna är relativt få. Däremot när antalet anslutningar stiger sjunker effektiviteten i Windows Server 2012, samtidigt som effektiviteten stiger kraftigt för båda Linux-systemen med ett visst övertag för Debian GNU/Linux. Windows Server 2012 presterar bättre än Linux när systemet hanterar färre databaskopplingar men fler skrivningar per databaskoppling vilket innebär att man kan dra slutsatsen att just i ett scenario med få kopplingar men hög belastning kan Windows Server 2012 ha en fördel gentemot Linux. Ju fler databaskopplingar desto bättre presterar Linux- systemen i förhållande till Windows Server 2012.

34 7.4 Återkoppling till tidigare forskning

Forskningen i den här rapporten bekräftar flera av de tidigare forskningsresul- tat som belysts i kapitel 2 beträffande tidigare forskning. Visserligen visade den forskning som bedrivits av Pósenér [20] att det inte var så stora skillnader mel- lan Linux och Windows Server i avseendet med en webbserver-stack. Men det är värt att poängtera att Pósenér, vilket också styrks av forskningen här, visa- de att skillnaderna mellan Linux och Windows Server minskar när Microsofts egen webbserver används i Windows snarare än Apache. IIS tenderar preste- ra bättre än Apache i Windows Server 2012 och jämnar således ut skillnaderna mellan Windows Server 2012 och Debian GNU/Linux beträffande genomsnittlig svarstid vid syntetiska belastningstester av respektive system. Ristov och Gusev [21] visade med sin forskning att beräkningskapaciteten vid virtualiserade komplexa matrismultiplikationer i Windows Server var hög- re jämfört med Linux. Ställd mot resultaten som framkommit i denna rapport skulle det potentiellt kunna vara ett bekräftande av Ristov och Gusevs forsk- ning. I synnerhet beträffande det faktum att Windows Server framstår som mer effektivt i hantering av primärminne och här skulle beräkningskapacitet kunna vara en tänkbar förklaring till varför detta är fallet.

7.5 Begränsningar i forskningen

I möjligaste mån har avsikten varit att minimera störningar i experimentet för att möjliggöra kontroll och isolering av operativsystemen. Syftet med projek- tet har varit att undersöka om huruvida något av systemen mer eller mindre effektivt nyttjar tillgängliga resurser i datorsystemet. För att lyckas med detta bör störningarna vara så få som möjligt. Dessvärre finns det oftast variabler som ändå riskerar störa experimentet och dessa variabler skulle t.ex. kunna vara bak- grundsprocesser i Windows Server 2012 som inte går att styra över i någon större utsträckning, regelbundna aktiviteter i Linux, samt potentiella störningar från kringliggande nätverkenheter som förbrukar resurser och liknande i systemet. Några signifikanta störande variabler noterades dock inte under experimentet. Experimentet har omfattat hårdvarurelaterad belastning och mätning av prestanda beträffande primär- och sekundärminne samt s.k. IOPS, alltså skriv- och läsprestanda för sekundärminnet samt dess relevans vid användningen av webbserverrelaterad programvara. Experimentet omfattar inga specifika mät- ningar av beräkningskraften i datorsystemet vilket gör att resultaten saknar om huruvida endera operativsystem hanterar belastning på datorsystemets CPU:er bättre eller sämre. Hade denna metrik inkluderats hade den potentiellt kunnat påvisa och förklara de intressanta skillnaderna mellan t.ex. Apache i Debian GNU/Linux och Gentoo Linux. Detta är något som borde problematiseras i framtiden och kan vara underlag för framtida forskning. Då versionen av Apache HTTP i Debian GNU/Linux var en mycket gam- mal version som inte överensstämde med versionerna som installerades i Gentoo Linux och Windows Server 2012 fick Apache HTTP, istället för att installe- ras som binärt paket, kompileras från källkod. Detta innebär att metoden av- vek något från det rekommenderade tillvägagångssättet att installera med hjälp av APT, vilket potentiellt kan ha påverkat resultatet av prestandan i Debian GNU/Linux. Mätningarna av Apache HTTP i Gentoo Linux visar, dock, att

35 kompilering från källkod av den aktuella mjukvaran bör ha verkat till fördel för Debian GNU/Linux. Detta dels eftersom resultaten från detta experiment visar på det samt dels att versionen av Apache HTTP var nyare än den som tillhandahålls centralt via Debian-projektets programvarudatabaser.

7.6 Etiska aspekter

Som noterades från resultatet av undersökningen hade Apache HTTP möjlighet att hantera fler sidvisningar per sekund i de Linux-baserade serveroperativsyste- men som medverkade i undersökningen. Genom att optimera Gentoo lyckades Apache HTTP hantera fler sidvisningar per sekund än vad Windows Server gjorde tillsammans med IIS. Mer än dubbelt så många. Detta innebär rent te- oretiskt att det går två Windows-servrar på en Gentoo-server när det kommer till prestanda. En server som kan hantera många sidvisningar per sekund kan i teorin även hantera många besökare. Välja ett serveroperativsystem och server- mjukvara optimerat för att hantera många besökare innebär att man i slutänden inte behöver lika många servrar. För varje server som installeras i datacentret ökar energiförbrukningen. Detta innebär att färre servrar lönar sig när det kommer till elkostnad. Istället för att installera nya servrar när besökarna blir fler kan det istället löna sig att se över och försöka optimera den hårdvara som redan är installerad och finns tillgänglig. Att ha färre servrar innebär inte bara nytta för företag som bedriver någon form av serverdrift, färre servrar innebär lägre elförbrukning vilket även är bättre för miljön.

7.7 Framtida forskning

Resultaten som framkommit i det här projektet visade att den relativa pre- standan hos Apaches webbserver var sämre i Windows Server 2012 i relation till Microsoft IIS. Dock uppdagades MySQL inte lida av samma låga prestan- da i Windows Server 2012. Vad denna diskrepans mellan Apache och MySQL skulle kunna härledas till ligger utanför detta projekts omfattning men är nå- got som i allra högsta grad skulle utgöra en intressant frågeställning i framtida forskningsprojekt. Eftersom detta projekt endast involverade nyinstallerade system och inte tagit någon hänsyn till hur operativsystemen presterar över tid allteftersom operativsystemen åldras utgör detta ett område som är mycket intressant för komplettering genom framtida forskning. Till exempel skulle ett potentiellt pro- jekt kunna reproducera experimentet presenterat i denna rapport och låta ge- nomföra tester av prestandan vid nyinstallation och belasta systemen över tid och därefter genomföra samma tester igen vid förutbestämda intervall. Detta skulle potentiellt kunna påvisa om huruvida prestandan i systemen står sig över tid eller om det går att påvisa några signifikanta förändringar. Detta skulle vara ett område som eventuellt skulle kunna vara av stort intresse för företag i ett långsiktigt perspektiv.

36 7.8 Slutsats

Med utgångspunkt i de resultat som framkommit genom detta projekt har det påvisats att de hårdvarumässiga prestandaskillnaderna mellan Microsoft Win- dows Server 2012, Debian GNU/Linux och Gentoo Linux är relativt små. Un- dersökningen har omfattat mätningar av prestandan under belastning och be- träffande primärminnet är skillnaderna små med en viss fördel för Windows Server 2012 och beträffande sekundärminnet är skillnaderna mellan de tre ope- rativsystemen mycket små. Detta till trots visar sig skillnaderna i prestanda mellan de mjukvarurelaterade aspekterna av undersökningen variera desto mer. Gentoo Linux presterar överlägset bäst när det gäller antal webbserverförfråg- ningar som systemet klarar av att hantera per sekund. Windows Server 2012 presterar något bättre beträffande MySQL när anslutningarna är få men att ju större belastningen blir desto bättre presterar Linux medan Windows Server 2012 presterar stabilt. Slutsatsen är således att diskursen måste breddas för att på ett hållbart sätt utreda vilka faktorer som är avgörande för vilket system som mest effektivt nyttjar tillgängliga resurser. Operativsystemen har både för- och nackdelar beträffande effektivitet och olika kontexter kan ha varierande be- hov som är avgörande för att fatta informerade beslut. Däremot i de fall där kostnader för investering i t.ex. licenser och liknande är en avgörande faktor kan Linux potentiellt vara att föredra.

37

Litteraturförteckning

[1] Apache. ab - apache http server benchmarking tool. http://httpd. apache.org/docs/2.2/programs/ab.html, 2015. Online; accessed 2015- 04-13.

[2] Axboe, Jens. Flexible i/o tester. https://github.com/axboe/fio, 2015. Online; accessed 2015-04-13.

[3] Dell. Dell poweredge 1950 server. http://www.dell.com/downloads/ global/products/pedge/en/1950_specs.pdf, 2015. Online; accessed 2015-04-14.

[4] Erinle, Bayo. Performance Testing With JMeter 2.9. Packt Publishing, första utgåvan, 2013.

[5] Foundation, Free Software. Gnu general public license. http://www.gnu. org/licenses/gpl-3.0.en.html, 2015. Online; accessed 2015-05-25.

[6] Foundation, Gentoo. About gentoo. https://www.gentoo.org/get- started/about/, 2015. Online; accessed 2015-05-25.

[7] Foundation, Gentoo. Handbook:amd64. https://wiki.gentoo.org/ wiki/Handbook:AMD64, 2015. Online; accessed 2015-05-28.

[8] Foundation, Gentoo. Handbook:amd64/portage/files. https://wiki. gentoo.org/wiki/Handbook:AMD64/Portage/Files, 2015. Online; acces- sed 2015-05-25.

[9] Foundation, Gentoo. Profile. https://wiki.gentoo.org/wiki/Profile, 2015. Online; accessed 2015-06-06.

[10] Hut, James C., Mungee, Sumedh, och Schmidt, Douglas C. Techniques for developing and measuring high performance web servers over high speed networks. INFOCOM ’98. Seventeenth Annual Joint Conference of the IEEE Computer and Communications Societies. Proceedings. IEEE, 3:1222 – 1231, Mar 1998.

[11] Initiative, Open Source. The bsd 3-clause license. http://opensource. org/licenses/BSD-3-Clause, 2015. Online; accessed 2015-05-25.

[12] Martin, Ben. Inspecting disk io performance with fio. https: //www.linux.com/learn/tutorials/442451-inspecting-disk-io- performance-with-fio/, 2015. Online; accessed 2015-04-13.

39 [13] McCalpin, John D. Sustainable memory bandwidth in current high per- formance computers. http://www.cs.virginia.edu/~mccalpin/papers/ bandwidth/bandwidth.html, 1995. Online; accessed 2015-06-06.

[14] Minasi, Mark, Booth, Christian, och Butler, Robert. Mastering Windows Server 2012. John Wiley and Sons, 2013.

[15] Narayan, Shaneel, Shang, Peng, och Fan, Na. Performance evaluation of ipv4 and ipv6 on windows vista and linux ubuntu. 2009 International Conference on Networks Security, Wireless Communications and Trusted Computing, ss 653 – 656, 2009.

[16] Parrella, Jose Miguel. Instant Debian: Build a Web Server. Packt Publishing, första utgåvan, 2013.

[17] Project, Debian. About debian. https://www.debian.org/releases/ stable/mips/ch01s03.html.en, 2015. Online; accessed 2015-06-05.

[18] Project, Debian. Debian packages. https://www.debian.org/distrib/ packages, 2015. Online; accessed 2015-06-05.

[19] Project, Debian. Nätverksinstallation från en minimal cd. https://www. debian.org/CD/netinst/#netinst-stable, 2015. Online; accessed 2015- 06-06.

[20] Póserné, O. V. Comparing the webservers of the open source and the closed source operation systems. 5th International Symposium on Applied Computational Intelligence and Informatics, ss 169 – 172, May 2009.

[21] Ristov, Sasko och Gusev, Marjan. Performance vs cost for windows and linux platforms in windows azure cloud. 2013 IEEE 2nd International Conference on Cloud Networking (CloudNet), ss 214 – 218, Feb 2013.

[22] Silberschatz, Abraham, Galvin, Peter Baer, och Gagne, Greg. Concepts. John Wiley and Sons, nionde utgåvan, 2013.

[23] Singh, Vishnu P. Linux OS Fundamentals. Computech Publications Limi- ted, 2008.

[24] Sommerville, Ian. Software Engineering. Pearson Education International, nionde utgåvan, 2011.

[25] Surveys, W3Techs Web Technology. Usage of operating systems for websi- tes. http://w3techs.com/technologies/overview/operating_system/ all, 2015. Online; accessed 2015-06-06.

[26] Surveys, W3Techs Web Technology. Usage of web servers for web- sites. http://w3techs.com/technologies/overview/web_server/all, 2015. Online; accessed 2015-06-06.

[27] Surveys, W3Techs Web Technology. Usage statistics and market share of linux for websites. http://w3techs.com/technologies/details/os- linux/all/all, 2015. Online; accessed 2015-06-06.

40 [28] Williams, Bill. The Economics of Cloud Computing: An Overview for De- cision Makers. Cisco Press, första utgåvan, 2012.

[29] Zhou, Qingguo, Bai, Shuwei, Li, Chanjuan, och Zhang, Wei. Affordable high-performance environment for education in undeveloped regions. Pro- ceedings of 2008 IEEE International Symposium on IT in Medicine and Education, ss 911 – 914, Dec 2008.

41

Bilaga A

Testparametrar

A.1 Apache HTTP Server Benchmarking Tool ab -kc 100 -n 10000 http://localhost/testpage/index.html ab -kc 150 -n 150000 http://localhost/testpage/index.html ab -kc 300 -n 300000 http://localhost/testpage/index.html

A.2 Fio - Flexible I/O

[random-readwrite] randrepeat=1 direct=1 gtod_reduce=1 bs=4k iodepth=64 size=20M # runda 1 size=50M # runda 2 size 100M # runda 3 readwrite=randrw rwmixread=75 directory=temp ioengine=libaio # Linux ioengine=windowsaio # Windows

A.3 Apache JMeter

CREATE TABLE transactions ( id INT NOT NULL AUTO_INCREMENT, customer_id INT NOT NULL, order_id INT NOT NULL, result INT, PRIMARY KEY (id) );

43 Figur A.1: Konfiguration av databaskoppling i testmjukvaran JMeter

Figur A.2: Konfiguration av trådar, Ramp-Up-Period och antalet förfrågningar i testmjukvaran JMeter

44 Figur A.3: Konfiguration av SQL-syntax i testmjukvaran JMeter

Figur A.4: Konfiguration av slumpgeneratorn i testmjukvaran JMeter för vari- ablerna user_id, order_id och result

45 A.4 STREAM

Array size = 10000000, Offset = 0 OMP_NUM_THREADS=4

This system uses 8 bytes per DOUBLE PRECISION word. ------Array size = 10000000, Offset = 0 Total memory required = 228.9 MB. Each test is run 40 times, but only the *best* time for each is used. ------Number of Threads requested = 4 ------

46 Bilaga B

Installation och optimering av Gentoo Linux

B.1 Optimering av kompilator

CFLAGS="-march=core2 -O2 -pipe" CXXFLAGS="${CFLAGS}" CPU_FLAGS_X86="mmx mmxext sse sse2 sse3 ssse3" FEATURES="ccache parallel-fetch splitdebug" CHOST="x86_64-pc-linux-gnu" MAKEOPTS="-j9"

B.2 Optimering av Gentoo Linux Kernel

CONFIG_MCORE2=y # CONFIG_GENERIC_CPU is not set CONFIG_NR_CPUS=8 CONFIG_SCHED_SMT=y CONFIG_SCHED_MC=y CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set CONFIG_HZ_100=y # CONFIG_CPU_FREQ is not set # CONFIG_MAGIC_SYSRQ is not set # CONFIG_DEBUG_KERNEL is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set # CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set # CONFIG_FRAME_POINTER is not set

47