CPU Upgrade eines SSAS Servers: Lessons Learned

9. Dezember 2015

Nach Aufrüstung eines SSAS-Servers um eine weitere CPU (initial ein Dual-Socket Rechner, aus Kostengründen wurde nur eine CPU eingebaut) ist die Cubeverarbeitung nicht schneller, sondern spürbar langsamer geworden. Die Verlangsamung äußerte sich durch mehrminütige Pausen, während deren der Server scheinbar nichts tat.

Da es sich um eine ältere 2008R2-Instanz handelte, war die erste Hypothese, dass es an der fehlenden NUMA-Unterstützung liegen könnte (Details hier und hier nachzulesen), allerdings passte die Vermutung nicht zu dem ruckeligen Verarbeitungsablauf.

Tatsächlich waren die Übeltäter in der msmdsrv.ini Datei versteckt. Sie enthält viele wichtige SSAS-Konfigurationsparameter (manche sind auch undokumentiert). Außer MSDN liefert der Analysis Services Operations Guide wertvolle Informationen zu den einzelnen Konfigurationsparametern (sehr empfohlen zusammen mit dem Analysis Services Performance Guide).

Die optimalen Einstellungen für manche Parameter wie "ThreadPoolProcessMaxThreads" oder "ThreadPoolQueryMaxThreads" sind abhängig von der Anzahl der CPU-Kerne auf dem Server. Diese Einstellungen werden bei der SSAS-Installation initialisiert, nach der CPU-Aufrüstung wurde aber vergessen auch die msmdsrv.ini entsprechend anzupassen.

SSAS entschied sich ausgehend von verfügbaren Hardware Ressourcen (CPU, RAM) für eine höhere Parallelisierung in der Verarbeitung. Das führte im Endeffekt dazu, dass oft keine zusätzlichen Threads angelegt werden konnten. Verfügbare Threads wurden aber schon für die Steuerung verwendet. Dadurch ist im Endeffekt die ganze Verarbeitung ins Stocken geraten.

Besonders deutlich war dies im Performance Monitor ersichtlich. Die kumulierten Werte der Indikatoren "Processing Pool Idle Threads", "Processing Pool Busy Threads" und "Processing Pool Job Queue Length" lagen über einen langen Zeitraum gleich oder knapp über dem konfigurierten Wert für "ThreadPoolProcessMaxThreads."

ssas_process_maxthreads

Nach Verdopplung der MaxThreads in den Einstellungen waren die Aussetzer verschwunden und die Verarbeitung lief um 30% schneller, als mit einer CPU.

Hilfreiche Links zum Thema: