Mit MaxParallel hat DataCore ein Tool entwickelt, das die IO-Leistung von x86-Servern deutlich steigert. Zunächst ist die Software nur für Microsoft-SQL-Server erhältlich. MaxParallel beschleunigt Anwendungen, indem es Disk-IOs von den CPUs nicht mehr seriell, sondern parallel verarbeitet.

Der Storage-Spezialist DataCore hat bereits vor einigen Jahren für seine Storage-Virtualisierungslösungen eine Parallel-IO-Technologie entwickelt, um die Storage-Performance zu steigern und die Latenz zu reduzieren. Nun bringt DataCore mit MaxParallel for SQL ein eigenständiges Produkt auf den Markt, das die Performance von Anwendungen auf x86-Servern deutlich erhöhen kann. Durch die IO-Beschleunigung lässt sich der Lebenszyklus von MS-SQL-Servern verlängern, die sich ihrem Leistungslimit nähern.

MaxParallel ist sowohl als Software für die Vor-Ort-Installation auf physischen oder virtuellen Servern als auch über den Azure Marketplace für in der Cloud betriebene MS-SQL-Server erhältlich. Das Tool unterstützt Microsoft SQL Server 2008, 2012, 2014 und 2016 jeweils in der Standard- oder Enterprise-Edition. Als Betriebssystem sind Windows Server 2008 R2, 2012 R2 oder 2016 möglich. DataCore arbeitet bereits an weiteren Produktvarianten für gängige Datenbanken sowie an einer Version, die auch unter Linux Anwendungen beschleunigen soll.

Funktionsweise von MaxParallel

Bei x86-Servern mit Intel- oder AMD-CPUs benötigt jede IO-Anforderung nach Daten, die außerhalb des CPU-Arbeitsbereichs liegen, einen Interrupt, um den IO-Request über den PCI-Bus an ein daran angeschlossenes Speichergerät zu schicken. Die x86-Architektur unterstützt auch mit Multi-Core-CPUs jeweils nur einen Interrupt pro physischem Socket. Dies hat zur Folge, dass bei IO-intensiven Anwendungen oft mehrere Cores im Leerlauf sind, weil nur ein Core die IO-Anforderungen seriell abarbeiten kann. Bei Servern mit zwei physischen Multi-Core-CPUs ist eine parallele IO-Verarbeitung dann möglich, wenn das Mainboard über eine Northern und Southern Bridge verfügt und die zwei CPUs mithilfe der NUMA-Architektur (Non-Uniform Memory Access) die physisch getrennten RAM-Bereiche gemeinsam nutzen können.

MaxParallel beschleunigt Anwendungen, indem das Tool freie CPU-Cores für parallele IO-Operationen nutzt.

Die von DataCore für seine Storage-Produkte entwickelte IO-Technologie verwendet schon immer einen sogenannten IO-Scheduler, der keine Interrupts benötigt und in der Lage ist, mehrere IO-Vorgänge gleichzeitig auszuführen. Für die IOs lassen sich alle verfügbaren CPU-Kerne nutzen, sodass die IO-Performance mit zunehmender Anzahl der im System vorhandenen Cores ansteigt. DataCore verfügt über ein Patent für diese Interrupt-freie IO-Transporttechnologie.

Bei Benchmark-Tests hat DataCore festgestellt, dass nicht mehr als vier Cores die Parallel-IO-Technologie gleichzeitig verwenden können. Daraufhin haben die Entwickler die Parallelisierung überarbeitet. Mittlerweile ist MaxParallel in der Lage, Cores oder CPU-Cycles dynamisch zu allokieren und wieder freizugeben. Hierfür verwendet das Tool einen Teil des freien Server-RAMs. Aktuell benutzt MaxParallel bis zu 256 Cores parallel und beschleunigt damit die IO-Verarbeitung von Anwendungen auch auf sehr leistungsfähigen Servern. Laut DataCore lässt sich mit MaxParallel sogar die IO-Performance von In-Memory-Datenbanken um bis zu 30 Prozent steigern. Zudem können Container-basierte Anwendungen von dem IO-Turbo profitieren.

MaxParallel im Testbetrieb

Für den LANline-Test verwendeten wir einen physischen und einen virtuellen Server. Bei der Hardware handelte es sich um ein System mit einer Intel-4-Core-CPU. Als Betriebssystem kam Windows Server 2016 und als Datenbank SQL 2016 zum Einsatz. Der virtuelle Server hatte 16 vCPUs, lief unter Windows 2012 R2 und war mit SQL 2012 bestückt. Als Host-System nutzten wir einen 2-Wege-Server mit 18 Cores pro CPU.

Bislang kann MaxParallel nur SQL-Server beschleunigen, die auf einer eigenen Datenpartition installiert sind, weil das Tool in der aktuellen Version eine IO-Optimierung der Betriebssystempartition nicht unterstützt. Die Setup-Routine überprüft, ob auf dem System ein SQL-Server vorhanden ist. Fehlt dieser, lässt sich die Software nicht installieren. Zudem benötigt das Tool mindestens das Microsoft Dotnet-Framework ab Version 4.6.1.

Das Setup von MaxParallel dauert etwa eine Minute und erfordert einen Reboot. Das Tool verwendet einen eigenen lokalen Benutzer namens DCSadmin, für den der Nutzer im Setup-Wizard ein Passwort angeben muss. Zu beachten ist, dass das Pagefile des Betriebssystems nicht auf dem Datenlaufwerk liegen darf, weil MaxParallel Partitionen, die ein Pagefile enthalten, nicht beschleunigt. Bei der Installation auf dem physischen Test-Server hatten wir genau dieses Problem. Windows wählt für das Pagefile automatisch die größte auf dem System vorhandene Partition. In unserem Fall war dies das 800 GByte große Datenlaufwerk. Wir mussten deshalb zunächst das Pagefile auf das Laufwerk C: umkonfigurieren und den Server neu starten, damit diese Änderung wirksam wurde. Anschließend konnte MaxParallel die Datenpartition beschleunigen, auf der wir den SQL-2016-Server installiert hatten.

Nach dem Reboot ist MaxParallel standardmäßig aktiv. Im Windows-Task-Manager zeigt der Prozess DcsAddMem.exe an, wie viel RAM das Tool aktuell allokiert hat. Auf dem mit 32 GByte RAM ausgestatteten physischen Test-Server hat sich MaxParallel rund 10 GByte genommen.

Für die RAM-Konfiguration rät DataCore dazu, die Empfehlungen von Microsoft für SQL-Server zu beachten. Die mit MaxParallel erzielbare Performance-Steigerung hängt von der Anzahl der verfügbaren CPU-Cores sowie vom noch nutzbaren RAM ab. Falls MaxParallel zu viel RAM allokiert, sodass der SQL-Server nicht optimal arbeitet, kann der Administrator die maximale RAM-Menge über eine Konfigurationsdatei fest vorgeben.

Um die IO-Operationen zu beschleunigen, virtualisiert MaxParallel die Datenlaufwerke und schiebt sich als Layer zwischen das Betriebssystem und die Disks. Das ursprüngliche Laufwerk wird im Windows-Disk-Manager mit dem Status Offline angezeigt. Das Tool fügt eine neue Disk hinzu, über die es alle IO-Vorgänge beschleunigt. Sobald man die Software deaktiviert, verschwindet die neue Disk wieder und es dauert zwei bis drei Sekunden, bis das ursprüngliche Laufwerk wieder verfügbar ist. Bevor MaxParallel gestoppt oder gestartet wird, sollte der Administrator den SQL-Server anhalten, um Beschädigungen der Datenbank zu vermeiden.

Die Kernkomponenten von MaxParallel sind als Windows-Dienste implementiert. Im Windows-Geräte-Manager finden sich unter den System-Devices die zugehörigen DataCore-Treiber. Außerdem verfügt MaxParallel über eine minimalistische GUI, mit der der Administrator für einzelne Datenlaufwerke den Write-Through-Modus aktivieren kann, damit Write-IOs nicht beschleunigt werden. Read-IOs optimiert das Tool dagegen immer. Geöffnet wird die GUI per Mausklick auf das MaxParallel-Icon in der Taskleiste. Über das Kontextmenü der rechten Maustaste lässt sich die IO-Beschleunigung aktivieren oder deaktivieren. Ein Klick auf Discover sucht nach neu hinzugefügten Laufwerken.

Um Disk-IOs zu beschleunigen, virtualisiert MaxParallel die Datenlaufwerke des Servers.

Die Installation von MaxParallel führt an der SQL-Datenbank keinerlei Änderungen durch. Deshalb lässt sich das Tool auch problemlos wieder deinstallieren. Aufgrund der Virtualisierung der Datenlaufwerke und der hinzugefügten Treiber dürften nach einer Deinstallation in der Registry jedoch ein paar Spuren zurückbleiben.

Hochverfügbare SQL-Cluster, die man als klassische Failover-Cluster betreibt, unterstützt MaxParallel bislang nicht. Den Support für die relativ neuen, von Microsoft mittlerweile als Best-Practice empfohlenen Always-on-Cluster hat DataCore jedoch auf der Roadmap.

Deutliche Steigerung der IO-Performance

Für die Performance-Tests nutzten wir das Open-Source-Tool HammerDB. Es bietet unter anderem eine Test-Suite für den TPC-C-Benchmark, der vorbereitete Transaktionen abarbeitet. Der Administrator kann vorgeben, wie viele gleichzeitige Benutzer die Software emuliert. Zudem lässt sich einstellen, ob die aktuelle Performance in Echtzeit ausgegeben wird, oder ob das Tool die Werte für eine vorgegebene Zeitspanne ermittelt und abspeichert. Der wichtigste Messwert sind die im Test erreichten Transaktionen pro Minute sowie pro Benutzer. Das Setup von HammerDB ist relativ einfach. Die Installation läuft weitgehend automatisch durch. Der Anwender wählt dann die zu testende Datenbank und das gewünschte Testszenario aus. Anschließend geht er in der grafischen Oberfläche im linken Fensterabschnitt die verschiedenen Optionen von oben nach unten durch und gibt die gewünschten Werte ein. Unter anderem lässt sich hier einstellen, wie viele Data Warehouses HammerDB für den Test erzeugt.

Das Tool unterstützt auch verteilte Testszenarien, bei denen bis zu 16 HammerDB-Rechner auf einem SQL-Server Last erzeugen können. Per Klick auf Build erzeugt das Tool in der SQL-Datenbank das für den Test benötigte Schema. Sobald man diesen gestartet hat, lassen sich über das Stiftsymbol in der oberen Menüleiste die Messdaten im rechten Hauptfenster anzeigen.

Bei den Performance-Tests erzielte MaxParallel eine deutliche Beschleunigung der IO-Leistung. Auf dem physischen Server mit einer 4-Core-CPU steigerte das Tool die mit TPC-C ohne Beschleunigung gemessenen Transaktionen von 38.100 pro Minute nach seiner Aktivierung auf 67.038 pro Minute.

Nach der Aktivierung von MaxParallel schaffte der Test-Server 67.000 TPM statt 38.100 TPM.

Die Tests mit dem virtuellen Server, der über 16 vCPUs verfügte, zeigten erwartungsgemäß einen noch größeren Anstieg. Ohne MaxParallel lagen die Transkationen pro Minute (TPM) bei etwa 50.000. Nach der Aktivierung des IO-Turbos erreichten wir rund 130.000 TPM.

Die Benutzer profitieren zudem von einem schnelleren Antwortverhalten und auch die Erzeugung von Reports geht mit MaxParallel schneller vonstatten. Die IO-Beschleunigung ist bei SQL 2008 und 2012 am größten. Ab SQL 2014 hat Microsoft in der Datenbank eine In-Memory-Verarbeitung implementiert, weshalb die IO-Steigerungsraten nicht mehr ganz so groß sind.

Fazit

Die MaxParallel-Software von DataCore ist in der Lage, die IO-Performance von MS-SQL-Servern deutlich zu beschleunigen. In den mit HammerDB durchgeführten Tests konnte MaxParallel die TPM auf dem physischen 4-Core-System um etwa 75 Prozent steigern. Auf dem virtuellen Server mit 16 vCPU erhöhte MaxParallel die TPM sogar um mehr als 100 Prozent.

Die Software ist besonders interessant für ältere SQL-Server, die damit in den meisten Fällen eine deutlich höhere IO-Performance erzielen. Ob sich der Preis von 15 Prozent der SQL-Lizenzkosten für die Lebenszeitverlängerung lohnt, kann die IT-Abteilung relativ schnell ausrechnen. Die kleinste Größe ist ein 4-Core-Paket, das sich in 2-Core-Stufen ausbauen lässt. Im Lizenzpreis ist der MaxParallel-Support bereits enthalten.

Firmen-Info
Info: Datacore
Tel.: 089/46135700
Web: www.datacore.de