Compile-time Safety and Runtime Performance in Programming Frameworks for Distributed Systems
Tid: Fr 2020-03-06 kl 13.00
Plats: Ka Sal-C, Electrum, Kungliga Tekniska Högskolan, Kistagången 16, Kista (English)
Ämnesområde: Informations- och kommunikationsteknik
Respondent: Lars Kroll , Programvaruteknik och datorsystem, SCS
Opponent: Peter Van Roy, Université catholique de Louvain
Handledare: Seif Haridi, Programvaruteknik och datorsystem, SCS; Jim Dowling, Programvaruteknik och datorsystem, SCS
Abstract
Distribuerade system, det vill säga system som tolererar partiella fel medan paral- lelism utnyttjas, är en grundläggande del av landskapet för mjukvaruutveckling idag. Ändå utgör dessas utveckling och design fortfarande många utmaningar för utvecklare när det gäller tillförlitlighet och prestanda, och dessa utmaningar har ofta en negativ inverkan på utvecklarens produktivitet. Distribuerade programme- ringsramverk och -språk försöker att ge lösningar på vanliga utmaningar, så att applikationsutvecklare kan fokusera på applikationslogik. Sådant ramverk eller språk är baserad på en programmeringsmodell, vars val har en betydande inverkan både på applikationernas runtime-prestanda, liksom dessas tillförlitlighet.
I den här avhandlingen argumenterar vi för programmeringsmodeller som är statiskt typade, både av tillförlitlighets- och prestandaskäl, och som ger kraftfulla abstraktioner, vilket ger utvecklarna verktyg för att implementera snabba algo- ritmer utan att begränsas av valet av programmeringsmodell. Dessutom visar vi hur utformningen av domänspecifika språk (DSL) för sådana distribuerade programmeringsramverk, liksom DSL:er för att testa dessa komponenter skrivna i dem, kan minska den mentala klyftan mellan teoretiska algoritmer och dessas implementation, vilket i följd minskar risken för introduktion av subtila buggar. Specifikt, har vi utformat och implementerat två olika versioner av Kompics Compo- nent modellen. Den första heter Kompics Scala och fokuserar på mönstermatchning av event, samt programmeringsergonomi och likhet med teoretiska algoritmer. Den andra versionen heter Kola som är ett språk och sin egen kompilator med fokus på sä- kerhet i kompileringstid. Slutligen presenterar vi ett tredje ramverk, kallad Kompact, som implementerar en hybrid Actor-Component modell. Ramverket är utformad kring runtime-prestanda och statisk typning, och är implementerad i språket Rust. För att jämföra våra lösningar med andra state-of-the-art lösningar, presenterar vi den första flerspråkiga, distribuerade, message-passing benchmarking-sviten. Vi utvärderade effekterna av nätverksabstraktioner i dessa modeller på prestanda och visar att vår strategi erbjuder mellan 2× till 5× förbättringar av kapaciteten för vissa applikationer. Vi utvärderade också prestanda-tradeoffs för olika message-passing modeller och olika implementationer av samma modell. Vi visar att alla våra imple- mentationer är konkurrenskraftiga, och särskilt att vår hybridmodell har betydande fördelar i ett brett spektrum av scenarion, vilket leder till förbättringar på upp till 27× jämfört med den mest kända state-of-the-art message-passing system.