sql >> Database >  >> RDS >> Sqlserver

Praktische processorselectie voor SQL Server 2014/2016 OLTP-workloads

Waarschijnlijk niet de CPU die u zoekt.

Stel je voor dat je net goedkeuring van het management hebt gekregen voor een nieuwe on-premises databaseserver die een bedrijfskritieke OLTP-workload zal uitvoeren met SQL Server 2014 Enterprise Edition op Windows Server 2012 R2 Standard Edition. Deze nieuwe server vervangt een oudere Dell PowerEdge R910-server met SQL Server 2008 R2 Enterprise Edition op Windows Server 2008 R2 Enterprise Edition. Deze bestaande server heeft vier 45nm Intel Xeon X7560 Nehalem-EX-processors (waardoor je in totaal 32 fysieke cores in het systeem hebt) en heeft 512 GB RAM, wat een premium setup was toen het in 2010 werd gekocht.

Voor dit voorbeeld heb je een wat beperkt hardware- en softwarelicentiebudget beschikbaar voor de platformupgrade. U wilt overstappen op SQL Server 2014 Enterprise Edition, op een nieuwe server met veel betere single-threaded CPU-prestaties (omdat u een OLTP-workload hebt) en een hogere algehele CPU-capaciteit, terwijl u toch uw hardware- en SQL Server-licentiekosten minimaliseert.

Hoe zou u, gezien deze informatie, beslissen welk model server u kiest en welke processor u precies kiest? Zou je iemand in de I.T. afdeling deze beslissingen neemt, of zou u betrokken worden bij het evaluatie- en besluitvormingsproces? In plaats van "Shon the server guy" te laten beslissen, wil ik je een eenvoudige, praktische methode laten zien om dit uit te zoeken, met behulp van TPC-E benchmarkscores, wat eenvoudige rekenkunde en wat gezond verstand.

De eerste stap is om de TPC-E benchmark resultaatscores online te bekijken, op zoek naar het systeem dat het dichtst bij uw bestaande systeem komt. Als u geluk heeft, vindt u een officiële benchmark-inzending die exact overeenkomt met uw systeem. In ons geval vond ik een inzending van 10 april 2010 die toevallig precies overeenkomt met ons oude systeem. Dit Dell PowerEdge R910-systeem had een werkelijke TPC-E-doorvoerscore van 1.933,96, met vier Intel Xeon X7560 acht-coreprocessors. De werkelijke TPC-E-doorvoerscore is een goede maatstaf voor de algehele CPU-capaciteit van het systeem, waardoor u een ruwe indicatie krijgt van het aantal gelijktijdige query's dat het aankan (ervan uitgaande dat u geen opslag- of geheugengerelateerde knelpunten hebt).

De tweede stap is om de werkelijke TPC-E-doorvoerscore voor dit systeem te nemen en deze te delen door het aantal fysieke processorkernen in het systeem, om een ​​idee te krijgen van de single-threaded processorprestaties voor de specifieke processor in het gebenchmarkte systeem . Voor dit systeem zouden we eenvoudig 1.933,96 delen door 32 fysieke kernen, om een ​​"score per kern" van 60,44 te krijgen. De Intel Xeon X7560 heeft een basiskloksnelheid van 2,26GHz, met een Turbokloksnelheid van 2,66GHz. Het heeft een gedeelde L3-cache van 24 MB en een Intel QPI-snelheid van 6,4 GT/s. Quick Path Interconnect (QPI) is een point-to-point-verbinding tussen de CPU en de geïntegreerde geheugencontroller, dus hogere QPI-snelheden betekent snellere geheugentoegang.

De derde stap is het zoeken naar TPC-E-benchmarkresultaten voor systemen en processors van de huidige generatie, waarbij u probeert een resultaat te vinden voor een systeem dat ongeveer gelijk is aan het type nieuw systeem dat u overweegt. Helaas zal dit soms moeilijk zijn omdat de serverleveranciers niet zoveel nieuwe systemen hebben ingediend als vroeger, en omdat ze altijd systemen indienen die het "vlaggenschip" gebruiken, de processor met het hoogste aantal cores voor een bepaalde processorgeneratie en -familie. Dit maakt de daadwerkelijke TPC-E Throughput-score hoger, maar maakt een systeem dat die processor gebruikt ook veel duurder om een ​​licentie voor SQL Server te nemen vanwege het hogere aantal cores. Een ander probleem met deze "vlaggenschip"-processormodellen is dat ze doorgaans hogere fysieke core-tellingen inruilen voor lagere basiskloksnelheden, zodat u uiteindelijk veel hogere licentiekosten betaalt en feitelijk lagere single-threaded CPU-prestaties krijgt.

Conventionele wijsheid zou zijn dat u een nieuwe vier-socket-server zou willen om uw bestaande vier-socket-server te vervangen. Met moderne two-socket servers is dat misschien niet meer nodig, afhankelijk van de omvang van uw workload. Er was een periode, van begin 2012 tot begin 2014, toen nieuwe two-socket Xeon E5 familie serverprocessors veel sneller waren voor single-threaded prestaties dan nieuwe four-socket Xeon E7 familie serverprocessors. Deze prestatiekloof werd behoorlijk gedicht toen de Xeon E7 v2 Ivy Bridge-EX-familie begin 2014 werd uitgebracht. Sindsdien zijn de E5- en E7-families nu nog dichterbij omdat beide de Haswell-microarchitectuur gebruiken.

Gezien deze vrijwel gelijkblijvende CPU-prestaties, komt de keuze van uw servermodel neer op de algehele geheugen-, CPU- en IO-capaciteit. De huidige servers met twee sockets zijn praktisch beperkt tot 768 GB RAM met 32 ​​GB DIMM's, terwijl de huidige servers met vier sockets 3 TB RAM kunnen hebben met 32 ​​GB DIMM's. De meeste klanten die ik tegenkom, kunnen hun werklast comfortabel uitvoeren op 768 GB RAM, maar een paar hebben meer nodig dan dat. Zowel servers met twee sockets als servers met vier sockets kunnen Haswell-processors gebruiken met elk 18 fysieke cores, dus je hebt een limiet van 36 of 72 fysieke cores in je systeem, afhankelijk van je aantal sockets.

Voor deze oefening is er een TPC-E-benchmarkresultaat voor een Fujitsu Primergy RX2540 M1-systeem met twee sockets met een werkelijke TPC-E-doorvoerscore van 3.772,08, met behulp van twee Intel Xeon E5-2699 v3 achttien-core Haswell-EP-processors en 512 GB aan RAM. De Xeon E5-2699 v3-processor heeft een basiskloksnelheid van 2,3 GHz, met een turbokloksnelheid van 3,6 GHz. Het heeft een gedeelde L3-cache van 45 MB en een Intel QPI-snelheid van 9,6 GT/s. Voor dit systeem zouden we de werkelijke score van 3.772,08 delen door 36 fysieke kernen, om een ​​"score per kern" van 104,78 te krijgen.

Dit nieuwe systeem met twee sockets zou bijna het dubbele van de totale CPU-capaciteit van het oude systeem hebben, met ongeveer 1,57 keer de single-threaded prestaties. Vanuit een CPU-capaciteit en single-threaded prestatieperspectief zou ik er vrij zeker van zijn dat dit nieuwe two-socket systeem een ​​goede vervanging zou zijn voor het legacy systeem. Dit nieuwe systeem zou ook PCIe 3.0-uitbreidingsslots hebben, dus het zal meer totale IO-capaciteit hebben dan het oude systeem. Helaas heeft het 36 fysieke kernen waarvoor SQL Server 2014 Enterprise Edition-licenties nodig zijn, wat nogal duur zal zijn.

Een betere processorkeuze zou de Intel Xeon E5-2667 v3 kunnen zijn, die acht fysieke kernen heeft, met een basiskloksnelheid van 3,2 GHz, een turbokloksnelheid van 3,6 GHz, een 20 MB gedeelde L3-cache en een 9,6 GT/s Intel QPI-snelheid. Met behulp van enkele eenvoudige rekenkundige bewerkingen kunnen we de verschillen tussen de Xeon E5-2699 v3 en de Xeon E5-2667 v3 corrigeren (omdat ze allebei van dezelfde processorgeneratie en dezelfde familie zijn).

Ten eerste pas ik aan voor het verschil in fysieke kerntellingen. Als je 8 door 18 deelt, is het resultaat 0,44, dus vermenigvuldig je 3.772,08 keer 0,44, dan krijgen we een resultaat van 1.676,48. Vervolgens moeten we corrigeren voor het verschil in basiskloksnelheid tussen deze twee processors. De E5-2667 v3 heeft een 39% hogere basiskloksnelheid dan de E5-2699 v3-processor, dus we zouden 1676,48 keer 1,39 vermenigvuldigen om een ​​uiteindelijke geschatte te krijgen TPC-E-score van 2330,31. Als we deze geschatte score delen door 16 fysieke kernen, krijgen we een "score per kern" -resultaat van 145,64.

Dus volgens deze berekening zouden we nog steeds meer totale CPU-capaciteit hebben dan het legacy-systeem, en veel betere single-threaded CPU-prestaties met het lagere aantal cores, "frequentie-geoptimaliseerde" Xeon E5-2667 v3-processor in de nieuwe two-socket systeem. De laatste bonus van deze processorkeuze zijn veel lagere licentiekosten voor SQL Server 2014, aangezien we slechts 16 core-licenties nodig zouden hebben in plaats van 36 core-licenties, wat een besparing is van ongeveer $ 136.000,-.

Hopelijk is het iets duidelijker hoe u een eenvoudige analyse kunt doen om u te helpen beslissen welke processor u moet kiezen voor een nieuwe databaseserver, gezien uw werklast en budgetbeperkingen. Deze analyse is iets ingewikkelder als je processors van verschillende generaties en families moet vergelijken, maar je kunt dezelfde basisprincipes gebruiken. In een toekomstig artikel zal ik dieper op dit onderwerp ingaan.


  1. Moet ik in MySQL getallen citeren of niet?

  2. Hoe een door komma's gescheiden tekenreeks in Oracle te splitsen

  3. LIKE gebruiken in bindParam voor een MySQL PDO-query

  4. Optimalisatie van SQL-query's:aanbevolen procedures voor betere prestaties