Multi-Core Parallelism in a Column

advertisement
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.
Download