Ik heb het al geruime tijd over het belang van sequentiële doorvoerprestaties voor SQL Server. Sequentiële doorvoer is van cruciaal belang voor veel voorkomende bewerkingen in SQL Server, waaronder:
- Volledige database back-ups en herstel
- Het maken en onderhouden van indexen
- Replicatie snapshots en abonnementen initialiseren
- AlwaysOn AG-replica's initialiseren
- Initialiseren van databasemirrors
- Secundaire log-verzending initialiseren
- Relationele datawarehouse-queryworkloads
- Relationele datawarehouse ETL-bewerkingen
Ondanks het belang van sequentiële doorvoer voor SQL Server, zie ik nog steeds veel mensen die zich alleen concentreren op willekeurige I/O-prestaties en latentie, terwijl de sequentiële doorvoerprestaties grotendeels worden genegeerd. Als u nadenkt over sequentiële doorvoerprestaties, moet u rekening houden met het volledige pad van de gegevens, van het in rust zijn op uw opslagmedia tot het wordt verbruikt door uw processorkernen.
Afhankelijk van het type opslagtechnologie dat u gebruikt, kan deze worden aangesloten op uw hostserver via een Ethernet-netwerkinterfacekaart (NIC) of InfiniBand hostkanaaladapterkaart (HCA). Dit type verbinding is het meest gebruikelijk voor iSCSI SAN's en voor externe server message block (SMB) 3.0-bestandsshares. Microsoft TechNet heeft een goede referentie over dit onderwerp, genaamd Improve Performance of a File Server with SMB Direct.
De theoretische sequentiële doorvoer van een enkel NIC/HCA-apparaat (per poort) wordt weergegeven in Afbeelding 1:
Figuur 1:Theoretische NIC/HCA-doorvoer
Voor het geval je je afvraagt waar InfiniBand (QDR) of Infiniband (FDR) naar verwijzen, de InfiniBand Trade Association houdt een InfiniBand Roadmap bij die de geschiedenis en geplande vooruitgang in InfiniBand-bandbreedte in de komende jaren laat zien. Infiniband heeft een lijst met acroniemen die de relatieve prestaties van een InfiniBand-link beschrijven, zoals hieronder weergegeven:
- SDR – Enkele datasnelheid
- DDR – dubbele datasnelheid
- QDR – Viervoudige datasnelheid
- FDR – Veertien datasnelheid
- EDR – verbeterde gegevenssnelheid
- HDR – Hoge gegevenssnelheid
- NDR – Volgende gegevenssnelheid
Traditionele Fibre Channel (FC) SAN's gebruiken doorgaans een of meer hostbusadapters (HBA) met een of meer poorten voor optische kabels die worden aangesloten op een FC-switch of rechtstreeks op de FC SAN zelf. Het is nog steeds relatief zeldzaam dat 16 Gb FC HBA's wijdverbreid worden gebruikt, dus de meeste hostservers hebben nog steeds 4 Gb of 8 Gb FC HBA's.
De theoretische sequentiële doorvoer van een enkel HBA-apparaat (per poort) wordt weergegeven in Afbeelding 2:
Figuur 2:Theoretische HBA-doorvoer
Ongeacht welk type interface-apparaat of technologie u gebruikt, u moet zich zorgen maken over wat voor soort uitbreidingsbussleuf het is aangesloten op uw hostserver. Afhankelijk van de leeftijd van uw server en het type processor dat wordt gebruikt, kan dit een enorme impact hebben op de totale bandbreedte die het busslot kan ondersteunen. Peripheral Component Interconnect Express (PCIe) Gen 3-slots hebben tweemaal de bandbreedte per rijstrook als een ouder PCIe Gen 2-slot. U kunt bepalen hoeveel en welk type uitbreidingsslots u in uw hostserver heeft door te kijken naar de specificaties en documentatie voor uw merk en model server. Tot nu toe ondersteunen alleen Intel Xeon E3 v2, Xeon E3 v3, Xeon E5, Xeon E5 v2, Xeon E5 v3 en Xeon E7 v2 familieprocessors PCIe Gen 3-slots. Alles wat ouder is, heeft PCIe Gen 2-slots, of misschien zelfs PCIe Gen 1-slots als het extreem oud is (in computertermen).
De theoretische sequentiële doorvoer van een enkele PCIe-sleuf wordt weergegeven in Afbeelding 3:
Figuur 3:Theoretische doorvoercapaciteit voor uitbreidingsslots
Sinds de introductie van de Intel Nehalem-microarchitectuur in 2008 ondersteunen alle 2P en grotere Intel-serverprocessors Intel QuickPath Interconnect (QPI) voor verbindingen tussen de processors en het geheugen in een server, waardoor deze nieuwere processors ondersteuning bieden voor niet-uniforme geheugentoegang (NUMA), die de oudere front-side bus (FSB) verving. NUMA verbetert de schaalbaarheid behoorlijk aanzienlijk naarmate het aantal fysieke processors in een systeem toeneemt, vooral wanneer u vier of meer fysieke processors in een hostsysteem hebt.
Moderne Intel-processors hebben geïntegreerde geheugencontrollers die Intel QPI ondersteunen. Als u de specificaties voor een bepaalde Intel-processor in de online ARK-database bekijkt, ziet u de nominale QPI-prestaties in GigaTransfers per seconde (GT/sec). Een GigaTransfer per seconde is gewoon een miljard handelingen die gegevens per seconde overdragen.
Een moderne, high-end Intel Xeon E5-2667 v3-processor (Haswell-EP) heeft bijvoorbeeld een Intel QPI-snelheid van 9,6 GT/sec, terwijl een oudere, low-end Intel Xeon E5503-processor (Nehalem-EP) een Intel QPI-snelheid van slechts 4,8 GT/sec. Zelfs tussen processors van dezelfde generatie microarchitectuur zie je variaties in de nominale Intel QPI-snelheid. In de 22nm Haswell-EP-familie heeft de low-end Intel Xeon E5-2603 v3-processor bijvoorbeeld een vermogen van 6,4 GT/sec, terwijl de duurdere Intel Xeon E5-2660 v3-processor een rating heeft van 9,6 GT/sec. Intel Xeon E5-, E5 v2- en E5 v3-processors hebben twee QPI-links per processor, terwijl Intel E7- en E7 v2-familieprocessors drie QPI-links per processor hebben.
De theoretische sequentiële doorvoer van een enkele Intel QPI-link wordt weergegeven in Afbeelding 4:
Figuur 4:Theoretische Intel QPI-doorvoer
Afhankelijk van de leeftijd van uw hostserver, de exacte processor die deze gebruikt en het type, de snelheid en de hoeveelheid geheugen die is geïnstalleerd, beschikt u over verschillende hoeveelheden theoretische sequentiële doorvoer van elke geheugenmodule. Alle moderne Intel-processors hebben geïntegreerde geheugencontrollers die de hoeveelheid en frequentie regelen van het geheugen dat de processor ondersteunt. De meeste recente vintage hostservers gebruiken DDR3-geheugen, terwijl de nieuwste generatie Haswell-EP-processors (Intel Xeon E5 v3-familie) DDR4-geheugen ondersteunen. DDR4-geheugen ondersteunt hogere snelheden, hogere doorvoer, hogere geheugendichtheid, lager stroomverbruik en verbeterde betrouwbaarheid in vergelijking met DDR3-geheugen.
De theoretische sequentiële doorvoer van een enkele geheugenmodule wordt weergegeven in Afbeelding 5:
Figuur 5:Theoretische doorvoer van geheugenmodule
Als u naar de afzonderlijke componenten in een bestaand of gepland nieuw systeem kijkt, moet u uitkijken naar niet-overeenkomende componenten die kunstmatige sequentiële prestatieknelpunten in het systeem kunnen introduceren. U hebt bijvoorbeeld een gloednieuwe server met geavanceerde processors die verlamd is door het feit dat deze een 4Gb FC HBA gebruikt om toegang te krijgen tot een SAN. Een ander voorbeeld is een zeer snelle PCIe-flashgeheugenkaart of RAID-controller die is geïnstalleerd in een PCIe 2.0 x4-slot met lage bandbreedte, waardoor de totale sequentiële doorvoer van het apparaat kunstmatig wordt beperkt.
Ik weet dat dit veel technische informatie is geweest om te verwerken, vooral voor mensen die geen hardware-enthousiasteling zijn. Ik denk dat het belangrijkste idee dat u uit dit artikel moet halen, is dat sequentiële doorvoerprestaties vrij belangrijk zijn voor veel algemene SQL Server-taken en -workloads. De details op laag niveau over processors, geheugentypes, uitbreidingsslots en uitbreidingsapparaten maken in feite een groot verschil in de sequentiële doorvoerprestaties die u krijgt van een server en zijn opslagsubsysteem. Een goede sequentiële doorvoer maakt uw leven als databaseprofessional zoveel gemakkelijker, waardoor u uw organisatie op een veel hoger niveau kunt ondersteunen.