Multi-Core Parallelism in a Column-Store M.M. Gawade Samenvatting De hoeveelheid gegenereerde data blijft snel groeien, het vinden van betekenisvolle patronen in zulke data is cruciaal. Analytische database systemen zijn een van de belangrijkste hulpmiddelen om dit te bereiken. De rekenkracht van computers neemt nog steeds snel toe. Niet door het verhogen van de kloksnelheid, maar door het gebruik van parallelle verwerking middels multi- en many-core systemen. Het her-ontwerp van bestaande en nieuwe software, waaronder database management systemen, om hier optimaal gebruik van te kunnen maken is een belangrijke wetenschappelijke uitdaging. Analytische database systemen gebruiken query parallellisatie als een standaard techniek om de verwerkingstijd van analytische queries te verbeteren. Query parallellisatie is een wetenschappelijke uitdaging dat op een holistische manier moet worden benaderd. Een van de eerste stappen is identificatie van performance bottlenecks tijdens het uitvoeren van queries. Goede visualisatie technieken zijn hierbij cruciaal om zulke bottlenecks snel te vinden. We hebben zo’n visualisatie techniek ontwikkeld en daarmee het gedrag van de parallelle verwerking van queries op MonetDB onderzocht. Een van de belangrijkste factoren is het vinden van de optimale graad van parallellisme. Query plannen worden normaal gesproken gegenereerd zonder variaties in runtime mee te nemen, waardoor de performance gedurende het parallel uitvoeren van queries lijdt onder de variabiliteit van runtime resources zoals CPU, memory, etc. Een statische parallellisatie techniek kiest vaak een te laag nivo, waarbij cores ongebruikt worden, of leidt tot een te hoge parallelisatie graad met als gevolg congestie op de toegang van cruciale hulpmiddelen. Deze observaties hebben ons aangezet tot het introduceren een nieuwe techniek voor het genereren van mulitcore parallelle executie plannen op basis van Machine Learning technieken, die gebruik maakt van execution feedback. Om de rekenkracht verder te verhogen zijn multi-socket machines geintroduceerd. Ogenschijnlijk bieden ze de programmeur transparente toegang naar elk stuk van het geheugen, maar is de performance sterk afhanklijk van toegang tot local of remote geheugen. Dit lijdt tot problemen met niet-uniforme memory access en variatie in de prestaties van query verwerking. We hebben laten zien dat met een simpele techniek, waarin een multi-socket systeem wordt behandeld als een gedistribueerd database systeem, de remote memory acces kan worden beperkt met als gevolg gecontroleerde query executie prestaties. Many-core systeem architecturen zijn de laatste trend die probeert een GPUachtige parallelle executie te realiseren. Een voorbeeld is de Xeon-Phi processor met 240 threads op 60 cores. Data transfer over de PCIe bus die de Xeon-Phi coprocessor verbind met de host is echter een bottleneck door de beperkte bandbreedte. Om optimaal gebruik te kunnen maken van de beschikbare PCIe bandbreedte hebben we het effect van streaming executie van een aantal geselecteerde queries geanalyseerd en om te begrijpen of het mogelijk is om de Xeon-Phi knights corner architectuur te gebruiken bij data-analytische workloads. Met dit proefschrift hebben we een bijdrage geleverd aan het beter uitnutten van multi- en many-core CPUs in de context van een analytisch database systeem, geil-lustreerd aan de hand van het systeem MonetDB. De lessen, ervaringen en inzichten zijn van groot belang voor de verdere ontwikkelingen in dit veld.