Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer?

Relevanta dokument
Schemaläggnings metoderna AMP & SMP i en Multiprocessor

Hyper-Threading i Intelprocessorer

Multi-ported cache En rapport om några lösningar till att få flera minnesaccesser simultant.

Lunds Tekniska Högskola Datorarkitektur med operativsystem EITF60. Superscalar vs VLIW. Cornelia Kloth IDA2. Inlämningsdatum:

TDDIU81. Processer och trådar. Andreas Dahlberg, Jonathan Doherty, Tony Magnusson, Patrik Ottosson, Rasmus Siljedahl

Öka prestanda i Shared-Cache multi-core processorer

Datorteknik ERIK LARSSON

Operativsystem. Hierarkin för hårdvara läses nerifrån

Aktivitetsschemaläggning för flerkärninga processorer

Cache-koherens protokoll MESI och MOSI

Hyper Threading Intels implementation av SMT. Datorarkitekturer med operativsystem - EITF60. Felix Danielsson IDA2

Pipelining i Intel Pentium II

Operativsystem DVG A06. Definition. Varför operativsystem? - Vad är ett operativsystem?

Dagens OS. Unix, Linux och Windows. Unix. Unix. En översikt av dagens OS Titt på hur de gör. Många varianter Mycket gemensamt. En del som skiljer

Operativsystem. Innehåll. Operativsystemets funktion. Vad är ett OS? Vart hittar men ett OS? OS hanterar processorns resurser

Hantering av hazards i pipelines

Emil Kristiansson Kurs: EDT621 Delmoment: Rapport. En introduktion till Smart cache

Jämförelse av skrivtekniker till cacheminne

Realtidssystem HT03. Vad är realtidssystem? Inbyggda system. Att programmera, Tasks (Uppgifter) Realtidssystem kräver analys

Cacheminne Intel Core i7

DVG A06. Operativsystem, mm. Karlstads universitet Datavetenskap. DVG A06 Johan Eklund. Datavetenskap, Karlstads universitet 1

Operativsystem. Informationsteknologi sommarkurs 5p, Agenda. Slideset 7. Exempel på operativsystem. Operativsystem

Schemaläggning Unix. Minneshantering etc. Linux. Schemaläggning av trådar (kernel threads) Detaljer. Operativsystem - Lektion 7

Minnesisolering för virtuella maskiner en hypervisorstudie

Datorsystem 2 CPU. Förra gången: Datorns historia Denna gång: Byggstenar i en dators arkitektur. Visning av Akka (för de som är intresserade)

Operativsystem - Processkedulering

Definition DVG A06. Varför operativsystem? Operativsystem. Översikt. - Vad är ett operativsystem?

MESI i Intel Core 2 Duo

Olika OS. Unix, Linux och Windows. Unix. Unix. En översikt av ett par OS. Titt på hur de gör. Många varianter. Mycket gemensamt. En del som skiljer

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

SVAR TILL TENTAMEN I DATORSYSTEM, VT2013

Parallellism i CDC 7600, pipelinens ursprung

DIG IN TO Dator och nätverksteknik

32 Bitar Blir 64 Sammanfattning

Fö 7: Operativsystem. Vad är ett operativsystem? Målsättning med operativsystem. Styr operativsystemet datorn?

Pipelining i Intel 80486

Parallellism i NVIDIAs Fermi GPU

Fö 8: Operativsystem II. Minneshantering. Minneshantering (1) Minneshantering (2) Minneshantering och Virtuelltminne.

Processer och trådar. Rasmus Cronstrand Per Jonsson Ante Wall Fabian Åberg

Processor pipelining genom historien (Intel i9-intel i7)

Multithreading in Intel Pentium 4 - Hyperthreading

Rapport (1,5 HP) Lunds Universitet HT15

Fö 5+6 TSEA81. Real-time kernel + Real-time OS

Hjälpmedel: Inga hjälpmedel förutom penna, suddgummi och glatt humör.

Svar till tentamen den 16 december 2013 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Outline. Datorsystemtekni. Kravspecifikation. Kravspecifikation (forts.)

Realtidssystem. - Schemaläggning - EDAF85 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Diskprestanda Tester

Datorsystem 5. På denna föreläsning skall vi prata om Operativsystem Exempel på tenta (typ fjolårets)

Vad är en dator? Introduktion till datorer och nätverk. Pontus Haglund Institutionen för datavetenskap (IDA) 21 augusti 2018

Hannes Larsson - IDA 2, LTH Campus Helsingborg. NEC V R 4300i. Interlock-handling EDT621

HF0010. Introduktionskurs i datateknik 1,5 hp

Introduktion till hårdvara, mjukvara och operativsystem

Realtidsstöd i Minix. En laborationrapport. Oktober 2012

Realtidsprogrammering Ordinarie tentamen

Cacheminne i en AMD Opteron Processor

Datorhårdvaruteknik 1DV426 - Seminarie 1

CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA

Minnet från processorns sida Datorteknik

Cache coherence hos multicoreprocessorer

Vad är viktigast? Sammanfattning. Processer och trådar. Processer och trådar. Flerprocessorsystem. Schemaläggning. Interprocesskommunikation.

KUNDCASE. Inovia gjorde sin AI-utveckling 10 gånger snabbare med Power-plattformen

Datorarkitekturer med operativsystem ERIK LARSSON

FOTA - 3 COTS och objektorientering i realtidstillämpningar Annika Ohlsson Ericsson Microwave Systems

MESI protokollet och dess derivater

Cacheminne i en Intel Core 2 Duo-processor

Tentamen den 14 januari 2015 Datorarkitekturer med operativsystem, EDT621, 7,5 poäng

Datorarkitekturer med operativsystem ERIK LARSSON

Snapdragon 810: Cacheminnet

Datorsystem. Tentamen

Datorsystem. Tentamen

Parallellprogrammering i C++ 17 EDT621 Datorarkitekturer med Operativsystem Viktor Lindgren

Tentamen den 9 januari 2018 Datorarkitekturer med operativsystem (EITF60)

SVAR TILL TENTAMEN I DATORSYSTEM, HT2013

SIMD i Intel s P5- baserade Pentium MMX

Metoder och verktyg för funktionssäkerhet

Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

Tentamen den 18 mars svar Datorteknik, EIT070

Logging Module into the PRIME Core

Arm Cortex-A8 Pipeline

Improved-MOESI Cache koherens Protokoll

Tentamen den 14 januari 2016 Datorarkitektur med operativsystem, EDT621

Cacheprobe: programbibliotek för extrahering av cacheminnesparametrar

Prestandapåverkan på databashanterare av flertrådiga processorer. Jesper Dahlgren

Flera processer. Minneshantering. Trashing kan uppstå ändå. Ersätta globalt

What Is Hyper-Threading and How Does It Improve Performance

Operativsystem Lektion 1. Lärare. Schema. Kurssajten Finns på adressen. Jan Erik Moström. Set Norman

PARALLELLISERING AV ALGORITMER PROCESSORER FÖR FLERKÄRNIGA

Fördelning. Fördelningsprinciper. Lastbalansering

Grundläggande datavetenskap, 4p

SAS Grid Computing. Kent Odelli, IT Architect SAS Institute. Copyright 2010, SAS Institute Inc. All rights reserved.

Introduktion till programmering

Datorarkitekturer med Operativsystem

Översikt. Datorarkitekturer med operativsystem. Inledning. Inledning

MESI-Protokollet. Richard Elvhammar. Lund Universitet 4/12-16

Grafiska pipelinens funktion

Operative system. LRU-algoritm (2 p) Svar: 7 fel. c) Optimal algoritm (2 p) Svar: 6 fel

Realtidssystem. - Schemaläggning - EDA698 - Realtidssystem (Helsingborg) Elin A. Topp. Föreläsning 6

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Datorsystem. Laboration 3: Operativsystem Senast uppdaterad: 14 oktober 2012 Version 1.3. Student: Underskrift: Underskrift: Datum:

Transkript:

LUNDS TEKNISKA HÖGSKOLA Schemaläggningsmetodik för multi-core inom Windows 7 OS Vad är scheduling och hur schemalägger Windows OS sina processer? 2015-12-07

1. Inledning Det är ett faktum idag att multi-core processorarkitektur tillhör nästa generations mikroprocessorarkitektur. Antalet kärnor per processor ökar än ständigt, det är inte ovanligt idag med fyra, kanske till och med i vissa fall upp till 12 kärnor per processor i marknadens konsumentdatorer. Flera kärnor förknippas ofta med desto bättre men applikationernas prestanda kommer alltmer förlita/bli begränsad av processorns minnesbandbredd. Att fördela arbetet parallellt mellan de olika kärnorna är en förutsättning för att få den förväntade prestandaökningen från multicore-system. Denna rapport kommer belysa hur realtidsssytemet Windows OS schemalägger sina processer för att göra cacheminnen mer effektiva inom multicore processorarkitektur. Arbetsområdet kommer att avgränsas och fokus kommer att ligga på homogenous multicore-processorarkitektur, d.v.s. att alla kärnor i en processorer är likadana. 2. Sammanfattning I ett enkelt system med en process körandes går tiden åt att vänta på I/O förlorad, föralltid. Ett system med någon sorts schemaläggningsmetod/algoritm tillåter t.ex. att en process använder en kärna, medans nästa kärna väntar på I/O och kan därmed utnyttja och ta tillvara den annars förlorade tidsåtgången i en klockcykel. Det är CPU scheduler ns uppgift att se till att tilldela nya uppgifter, från ett färdigt schema, till CPU:n att exekversa närhelst processorn blir ledig. I schemat finns alla instruktionerna lagrade för vad som skall tilldelas/exekveras härnäst av de olika CPU-kärnorna. I vilken ordning som instruktionerna skall hämtas från schemat behöver inte nödvändigtvis vara FIFO, utan kan vara en komplex algoritm med flera valmöjligheter och med olika justerbara parametrar för varje algoritm. Det är här de olika schemaläggningsmetoderna kommer in i bilden och möjliggör bl.a. kortare tidsåtgång vid exekevering av processer i bl.a. multicore-arkitekturer. Det kommer ständigt nya algoritmer för olika miljöer och situationer för att effektivisera systemet så mycket som möjligt. En kort översiktlig genomgång av två vanligt förekommande schemaläggninsmetoder inom multipleprocessor gås igenom härunder; Asymmetric multiprocessing; Där en kärna är såkallad master och kontrollerar alla aktiviteter och sköter all kernel-kod (kod som är inladdat i ett skrivskyddat område i minnet), medans resterande kärnor kör användar-kod. Detta tillvägagångsätt är relativt simpelt då ingen kritisk data delas sinsemellean kärnorna.

Symmetric multiprocessing (SMP); Här sköter och tilldelar varje kärna sitt eget jobb, antingen från ett delat schema bland kärnorna eller från ett separat schema för varje enskild kärna. I stort sett så stödjer samtliga dagens operativsystem SMP, varav bl.a. Linux, Mac OSX och Windows. SMP-system försöker kontinuerligt hålla processer inom samma processor och dess tillhörande cache med hjälp av affinitet (processor affinity) för att slippa behöva gå till primära minnet som kostar tid. En viktigt aspekt att ej glömma bort är att fördelningen mellan processorerna bör vara balanserad så att inte en kärna körs tomt (idle) medans andra är överbelastade. Då många av dagens system använder sig utav separata scheman för varje enskild processor så behöver dessa tas hänsyn till så att bördan fördelas ( load sharing ) balanserat i de olika scheman. Detta görs antingen med; Push migration; Denna metod flyttar processer periodiskt från överbelastade processorer till mindre belastade. Pull migration; Här tar de processorer som körs på idle processer från andra processorers scheman. Man bör vara observant på att flytta processer sinsemellan olika processorer är emot affinitets-principen och om de inte hanteras varsamt så kan tiden för att balansera systemet gå till spillo då cacheminen måste byggas om på nytt. Ett sätt att komma runt detta problem är att endast tillåta migration av arbetet då det råder en obalans som överstigit en viss tillåten gräns. Att utvärdera olika schemaläggningsmetoder må i vissa fall kräva lite arbete men lönar sig genast i form av ett effektivare system. Första steget är att bestämma sig för en algoritm, samt vilka parameter inställningar är lämpliga för den algoritmen, som är lämplig för en viss driftmiljö och dess kriterier som behöver uppfyllas. När kriterier väl har fastställts kan man börja utvärdera och kolla på olika algoritmer och vilken som är bäst. Hur vet man vilken är bäst? Det är inte alltid självtalande att en metod är bättre än den andra, för att underlätta arbetet bör man använda sig något utav följande metoder; Deterministic modeling; Om arbetsbelastningen ( workload ) är känd så kan man t.ex. beräkna genomsnittliga väntetiden etc. För att sedan jämföra vilken algoritm som är

bäst. Deterministisk modellering går snabbt att använda sig utav, men kräver särskilda kända input -värden. Ej glömma att att resultatet endast gäller för just det fallet med den givna indatan. Queuing models; I många fall finns ingen given data tillgängligt, däremot kan man dra nytta av historisk prestanda-värden som i sin tur kan användas för att beskriva vissa parametrar, bl.a. ankomstintensitet, betjäningsprocess, medelvärde för betjäning etc. Med hjälp av dessa och bl.a. Little s sats kan köteori modelleras och därmed möjliggörs det att beräkna vissa egenskaper hos enskilda scheman/köer. Tyvärr är många av dagens moderna realtidssystem såpass komplexa att även med hjälp av matematiken är det svårt att konstruera formler som tar hänsyn till alla aspekter. Simulations; Ett sätt är att köra datorsimuleringar av de utvalda algoritmerna under olika belastningsförhållande för att avgöra vilken som presterar bäst. Implementation; Det enda sättet att egentligen avgöra hur en utvald schemaläggningsalgoritm presterar är genom att implementera den i ett verkligt system. Denna metod må anses vara bäst i första anspråk det är dock inte alltid möjligt att kunna implementera i en färdig produkt. Även om så skulle vara fallet ska man inte glömma att ett systems arbetsbelastning inte är statisk, utan dynamisk och påverkas t.ex. av nya installerade program, ny hårdvara men även sociala beteenden. Senaste åren har användningen av internet ökat explosionsartat vilket har medfört en vikt av att kunna hantera den ökade trafiken med snabba svarstider. 1 2 Nu vidare till rapportens syfte; Dagens mest använda operativsystem med nära 80% 3 av marknaden är Windows Men hur går Windows 7 tillväga för att schemalägga sina processer inom multi-core system? Windows använder sig utav round robin teknik med multilevel feedback-queue scheduling för att schemalägga prioritet av processer i scheman. Schemaläggaren ändrades i Windows Vista med införandet av ett prioriterad schemaläggare och även ett cycle counter register för moderna processorer för att hålla reda på exakt hur många processorcykler en tråd har exekverat. 1 UIC Department of Computer Science: CPU scheduling, hämtat: 2015-12-05 2 Wikipedia: Scheduling (computing), hämtat: 2015-12-05 3 W3schools: OS Platform Statistics, hämtat: 2015-12-07

Round Robin scheduling påminner till en viss grad om First-Come First-Serve scheduling (FCFS) med skillnaden att CPU bursts är tilldelade med en gräns, såkallat time quantum. När processorn har blivit tilldelad en process så sätts en timer (till det värde som time quantum är inställd på). Om processen har hunnit bearbetas innan timern löper ut så lämnar processen CPU:n precis som vid FCFS. Om timern skulle hinna utlösas innan processen ej hunnit bearbetas färdigt så läggs processen sist i det färdiga schemat. Därmed bibehålls schemat/kön cirkulär enligt Figur 1 nedanför. Figure 1: Round Robin scheduling example Multilevel feedback-queue innebär att separate kön/scheman kan etableras där varje kö kategoriseras in i olika schemaläggnings-algoritmer, där de olika processerna sedan läggs in beroende på vilken algoritm som lämpar sig för just den. Processerna kan även flyttas från en kö till en annan beroende på om processens egenskaper har förändrats och/eller hur länge processen har legat i kön. Multilevel feedback-queue är en av de mest flexibla schemaläggningsmetoderna tillgängliga med anledning av att den går att anpassa efter situation. Dess flexibilitet innebär även en hake metoden är en av de mest komplexa att implementera just på grund av av alla parametrar som går att justera. Även priority preemptive scheduling används flitigt i realtidssystem, och så även i Windows 7. Med denna metod har processer med högre prioritet förtur (preemptive) när schemaläggaren säkerställer vid varje given tidpunkt att processorn verkligen exekverar den process som har högst prioritet bland de processer som ligger i det färdiga schemat. Detta går hand i hand med affinitet som tidigare belystes i denna rapport då man eftersträvade att hålla processer med hög prioritet inne i cacheminnet för att slippa gå till primärminnet. Det är alltså

inte nödvändigt att en process för köras färdigt tills timern (time quantum) har löpt ut då Windows implementerar en preemptive schemaläggare vilket med andra ord innebär att om en process med högre prioritet hamnar i det färdiga schemat, över processer som är redo att exekveras, så kan den befintliga pågående processen avbrytas och processen med högre prioritet exekveras istället innan ens dess tidskvanta har börjat. Gällande prioritetsnivåer så använder Windows 32 olika nivåer (som sträcker sig från 0 t.om. 31 enligt Figur 2 nedanför). Figur 2: Thread priority levels De olika prioritetsnivåerna sätts utifrån två perspektiv; Windows API (Application Programming Interfaces) och Windows kernel. API:n kategoriserar först processerna enligt det väde som processen initiellt har tilldelats. I kernel-koden konverteras processens prioritetsklass till en såkallad base priority enligt en fastställd mapping som inte kan ändras. Slutligen är det värt att påpekas att all schemaläggnings-kod är implementerad i kernel-koden hos Windows operativsystem. Med detta sagt kring vad scheduling är och hur Windows 7 schemalägger sina processer är det uppenbart att val av schemaläggningsmetod spelar en stor avgörande roll på hur t.ex. tidseffektivt ett system är. Vid implementation av verkliga realtidssystem bör man noga utvärdera val av algoritm för just de kriterier som sitt system skall upfylla. 2 4 4 Russinovich Mark, Solomon, David, Ionescu, Alex, 2012: s. 408-429

3. Referenslista Russinovich, Mark, Solomon, David, Ionescu, Alex (2012). Windows Internals Part 1 (6 th edition). Redmond, Washington: Microsoft Press UIC Department of Computer Science: CPU scheduling (hämtat: 2015-12-05) https://www.cs.uic.edu/~jbell/coursenotes/operatingsystems/5_cpu_scheduling.html Wikipedia (2015) Scheduling (computing) (hämtat: 2015-12-05) https://en.wikipedia.org/wiki/scheduling_(computing) W3schools.com (2015) OS Platform Statistics (hämtat: 2015-12-07) http://www.w3schools.com/browsers/browsers_os.asp