sql >> Databasteknik >  >> RDS >> Sqlserver

Praktiskt processorval för SQL Server 2014/2016 OLTP-arbetsbelastningar

Förmodligen inte den CPU du letar efter.

Föreställ dig att du precis har fått ledningsgodkännande för en ny lokal databasserver som kommer att köra en affärskritisk OLTP-arbetsbelastning med SQL Server 2014 Enterprise Edition som körs på Windows Server 2012 R2 Standard Edition. Den här nya servern kommer att ersätta en äldre Dell PowerEdge R910-server som kör SQL Server 2008 R2 Enterprise Edition på Windows Server 2008 R2 Enterprise Edition. Den här befintliga servern har fyra 45nm Intel Xeon X7560 Nehalem-EX-processorer (vilket ger dig totalt 32 "fysiska kärnor i systemet) och har 512 GB RAM, vilket var en premiuminstallation redan när den köptes 2010.

För det här exemplet har du en något begränsad hård- och mjukvarulicensbudget tillgänglig för plattformsuppgraderingen. Du vill flytta till SQL Server 2014 Enterprise Edition, på en ny server med mycket bättre entrådad CPU-prestanda (eftersom du har en OLTP-arbetsbelastning), och högre total CPU-kapacitet, samtidigt som du minimerar dina kostnader för hårdvara och SQL Server-licens.

Med tanke på denna information, hur skulle du gå tillväga för att bestämma vilken modellserver du ska välja och vilken exakt processor du ska välja? Skulle du låta någon i I.T. avdelningen fatta dessa beslut, eller skulle du bli involverad i utvärderings- och beslutsprocessen? Istället för att låta "Shon the server guy" bestämma, vill jag visa dig en enkel, praktisk metod för att ta reda på detta, med hjälp av TPC-E benchmark-poäng, lite enkel aritmetik och lite sunt förnuft.

Det första steget är att kolla in TPC-E benchmark-resultatpoäng online och leta efter det system som är närmast likvärdigt med ditt befintliga system. Om du har tur hittar du en officiell benchmarkinlämning som är en exakt matchning till ditt system. I vårt fall hittade jag en inlämning från den 10 april 2010 som bara råkar matcha vårt äldre system. Detta Dell PowerEdge R910-system hade en faktisk TPC-E Throughput-poäng på 1 933,96, med fyra Intel Xeon X7560-processorer med åtta kärnor. Den faktiska TPC-E-genomströmningspoängen är ett bra mått på systemets totala CPU-kapacitet, vilket ger dig en grov indikation på hur många samtidiga frågor det kan hantera (förutsatt att du inte har lagrings- eller minnesrelaterade flaskhalsar).

Det andra steget är att ta den faktiska TPC-E-genomströmningspoängen för detta system och dividera den med antalet fysiska processorkärnor i systemet, för att få en uppfattning om den entrådade processorns prestanda för den specifika processorn i det benchmarkerade systemet . För detta system skulle vi helt enkelt dividera 1 933,96 med 32 fysiska kärnor, för att komma fram till ett "poäng per kärna" på 60,44. Intel Xeon X7560 har en basklockhastighet på 2,26GHz, med en turboklockhastighet på 2,66GHz. Den har en 24MB delad L3-cache och en Intel QPI-hastighet på 6,4 GT/s. Quick Path Interconnect (QPI) är en punkt-till-punkt-interconnect mellan CPU och den integrerade minneskontrollern, så att ha högre QPI-hastigheter innebär snabbare minnesåtkomst.

Det tredje steget är att leta efter TPC-E benchmarkresultat för nuvarande generationssystem och processorer, och försöka hitta ett resultat för ett system som ungefär motsvarar den typ av nytt system som du funderar på. Tyvärr kommer detta ibland vara svårt eftersom serverleverantörerna inte har skickat in så många nya system som de brukade göra, och eftersom de alltid skickar in system som använder "flaggskeppet", högsta kärnantalet processor för en given processorgeneration och familj. Detta gör den faktiska TPC-E-genomströmningspoängen högre, men gör också ett system som använder den processorn mycket dyrare att licensiera för SQL Server på grund av det högre antalet kärnor. Ett annat problem med dessa "flaggskepps"-processormodeller är att de vanligtvis handlar med högre fysiska kärnanal mot lägre basklockhastigheter, så att du i slutändan betalar mycket högre licenskostnader och faktiskt får lägre entrådig CPU-prestanda.

Konventionell visdom skulle vara att du skulle vilja ha en ny fyra-sockets server för att ersätta din befintliga fyra-sockets server. Med moderna två-sockets servrar är det kanske inte nödvändigt längre, beroende på storleken på din arbetsbelastning. Det fanns en period, från början av 2012 till början av 2014, då nya serverprocessorer i Xeon E5-familjen med två socklar var mycket snabbare för enkeltrådiga prestanda än nya serverprocessorer i familjen Xeon E7 med fyra socklar. Detta prestandagap slutade en hel del när Xeon E7 v2 Ivy Bridge-EX-familjen släpptes i början av 2014. Sedan dess är E5- och E7-familjerna ännu närmare nu eftersom båda använder Haswell-mikroarkitekturen.

Med tanke på denna nära CPU-prestandaparitet kommer ditt val av servermodell ner på övergripande minne, CPU och IO-kapacitet. Nuvarande två-sockelservrar är praktiskt taget begränsade till 768 GB RAM med 32 GB DIMM, medan nuvarande fyra-sockelservrar kan ha 3 TB RAM med 32 GB DIMM. De flesta kunder som jag stöter på kan bekvämt köra sin arbetsbelastning på 768 GB RAM, men några få faktiskt behöver mer än så. Både två- och fyra-sockets servrar kan använda Haswell-processorer med 18 fysiska kärnor vardera, så du har en gräns på antingen 36 eller 72 fysiska kärnor i ditt system, beroende på antalet uttag.

För den här övningen finns det ett TPC-E benchmark-resultat för ett Fujitsu Primergy RX2540 M1-system med två sockel med en faktisk TPC-E-genomströmningspoäng på 3 772,08, med två Intel Xeon E5-2699 v3 arton-kärniga Haswell-EP-processorer och 512 GB BAGGE. Xeon E5-2699 v3-processorn har en basklockhastighet på 2,3 GHz, med en turboklockhastighet på 3,6 GHz. Den har en 45 MB delad L3-cache och en Intel QPI-hastighet på 9,6 GT/s. För det här systemet skulle vi dela den faktiska poängen på 3 772,08 med 36 fysiska kärnor för att komma fram till en "poäng per kärna" på 104,78.

Detta nya två-sockelsystem skulle ha nästan dubbelt så mycket CPU-kapacitet som det äldre systemet, med cirka 1,57 gånger den enkeltrådade prestanda. Ur ett CPU-kapacitets- och entrådigt prestandaperspektiv skulle jag vara ganska säker på att detta nya två-sockelsystem skulle vara en bra ersättning för det äldre systemet. Det här nya systemet skulle också ha PCIe 3.0-expansionsplatser, så det kommer att ha mer total IO-kapacitet än det gamla systemet. Tyvärr har den 36 fysiska kärnor som kommer att kräva SQL Server 2014 Enterprise Edition-licenser, vilket kommer att vara ganska dyrt.

Ett bättre processorval kan vara Intel Xeon E5-2667 v3, som har åtta fysiska kärnor, med en basklockhastighet på 3,2 GHz, en turboklockhastighet på 3,6 GHz, en 20 MB delad L3-cache och en 9,6 GT/s Intel QPI hastighet. Med lite enkel aritmetik kan vi justera för skillnaderna mellan Xeon E5-2699 v3 och Xeon E5-2667 v3, (eftersom de båda är från samma processorgeneration och familj).

Först justerar jag för skillnaden i fysiskt antal kärnor. Om du dividerar 8 med 18 blir resultatet 0,44, så du multiplicerar 3 772,08 gånger 0,44 får vi resultatet 1 676,48. Därefter måste vi justera för skillnaden i basklockhastighet mellan dessa två processorer. E5-2667 v3 har en 39 % högre basklockhastighet än E5-2699 v3-processorn, så vi skulle multiplicera 1 676,48 gånger 1,39 för att få en slutlig uppskattning TPC-E-poäng på 2330,31. Om vi ​​delar denna uppskattade poäng med 16 fysiska kärnor får vi ett "poäng per kärna"-resultat på 145,64.

Så enligt den här beräkningen skulle vi fortfarande ha mer total CPU-kapacitet än det äldre systemet, och mycket bättre entrådad CPU-prestanda med det lägre kärnantalet, "frekvensoptimerad" Xeon E5-2667 v3-processor i den nya två-sockeln systemet. Den sista bonusen från detta processorval är mycket lägre licenskostnader för SQL Server 2014, eftersom vi bara skulle behöva 16 kärnlicenser istället för 36 kärnlicenser, vilket är en besparing på cirka 136 000,00 USD.

Förhoppningsvis är det lite mer tydligt hur du kan göra en enkel analys för att hjälpa dig att bestämma exakt vilken processor du bör välja för en ny databasserver, med tanke på din arbetsbelastning och budgetbegränsningar. Denna analys är lite mer komplicerad när man ska jämföra processorer från olika generationer och familjer, men samma grundprinciper kan användas. Jag kommer att dyka djupare in i detta ämne i en framtida artikel.


  1. SQL LIKE-villkor för att söka efter heltal?

  2. SQL Server - Bästa sättet att få identiteten för den infogade raden?

  3. De tre bästa tipsen du behöver veta för att skriva snabbare SQL-vyer

  4. MySQL-pivottabellsfråga med dynamiska kolumner