< Terug naar vorige pagina

Project

Multithreading Verder in de Cloud Verheffen

Omwille van de toenemende populariteit van cloud computing alsook de opkomst van verschillende nieuwe, van nature parallelle toepassingen is het uitvoeren van applicaties die gebruik maken van multithreading in een gevirtualiseerde context een standaardpraktijk geworden in de industrie. Desalniettemin staat multithreading erom bekend zeer gevoelig te zijn voor performantieproblemen in een gevirtualiseerde omgeving. Omwille hiervan zijn virtualisatietechnologieën doorheen de jaren aan een hoog tempo geëvolueerd; zelfs zodanig dat virtuele machines de dag van vandaag gelijkwaardig worden geacht aan hun fysieke tegenhangers wat betreft performantie. Precies door het hoge tempo van deze evolutie is empirisch bewijs ter ondersteuning van deze consensus echter op zijn zachtst gezegd beperkt. Daarenboven suggereren de enorme performantiedegradaties beschreven in literatuur die nog maar enkele jaren oud is dat er op dit gebied meer dan waarschijnlijk nog tal van uitdagingen overblijven. De voornaamste doelstellingen van dit werk zijn dan ook het identificeren en het aanpakken van deze uitdagingen.

Omdat virtualisatie een zeer breed begrip is vangt dit werk aan met een beschrijving van het virtualisatieproces in het algemeen en een afbakening van het gebied dat dit doctoraatsproject bestrijkt binnen dit brede landschap. Vervolgens gaat dit werk de stand van zaken binnen dit gebied na door aan de hand van experimenten virtualisatie-overhead op te meten voor een brede waaier aan applicaties die gebruik maken van multithreading, na eerst formeel te definiëren wat virtualisatie-overhead eigenlijk inhoudt binnen deze context. Hierop volgt een reflectie over mogelijke oplossingen voor de resterende problemen die deze experimenten onthullen. Ten slotte wijdt dit werk uit over drie van de meest veelbelovende dezer mogelijke oplossingen, die aandachtig geselecteerd zijn zodat ze elk betrekking hebben op een verschillende laag in de systeem stack en elkaar dus automatisch aanvullen.

Dit werk maakt duidelijk dat virtualisatie-overhead uit vele facetten bestaat en in eerste instantie een louter intern systeemfenomeen is dat zich manifesteert in de vorm van verminderde systeembronefficiëntie. Deze verminderde systeembronefficiëntie kan op zijn beurt echter extern worden waargenomen in de vorm van verminderde tijdsefficiëntie. Specifiek voor applicaties die gebruik maken van multithreading kunnen de groottes van deze systeem- en applicatie-effecten sterk van elkaar verschillen. Concreet toont dit werk aan dat deze effecten nog steeds respectievelijk 170% en 80% kunnen bedragen voor applicaties die gebruik maken van multithreading in zelfs de modernste gevirtualiseerde omgevingen. Hoewel deze resultaten suggereren dat er nog veel werk voor de boeg ligt vormen de technieken die dit proefschrift naar voor draagt een aanzienlijke stap in de goede richting. Specifiek stelt hoofdstuk 6 het concept van ’virtual scheduler ticks’ voor als een manier om buitensporige virtualisatie-overhead veroorzaakt door snelle overgangen tussen actieve en inactieve vCPU toestanden in tickless systemen tegen te gaan door paravirtualisatie toe te passen op de scheduler tick. Verder pakt hoofdstuk 7 TLB shootdown overhead veroorzaakt door aan een hoog tempo de geheugenruimte van applicaties in grootte aan te passen aan, wat leidt tot het concept van ’global hysteresis’ wat op zijn beurt performantiewinsten tot 45% bewerkstelligt. Ten slotte beschrijft hoofdstuk 8 een reeks richtlijnen voor programmeurs met als doel de kans dat zij code schrijven die significante virtualisatie-overhead veroorzaakt te minimaliseren. Hoewel het effect van deze richtlijnen sterk afhankelijk is van de specifieke applicatie waarop ze worden toegepast, bereikt de bijgevoegde demonstratieve applicatie een performantiewinst van 40% na toepassing van deze richtlijnen.

Datum:28 jul 2017 →  21 jun 2022
Trefwoorden:Cloud computing, Functional programming
Disciplines:Toegepaste wiskunde, Computerarchitectuur en -netwerken, Distributed computing, Informatiewetenschappen, Informatiesystemen, Programmeertalen, Scientific computing, Theoretische informatica, Visual computing, Andere informatie- en computerwetenschappen
Project type:PhD project