sql >> Database teknologi >  >> RDS >> Sqlserver

Praktisk processorvalg til SQL Server 2014/2016 OLTP-arbejdsbelastninger

Sandsynligvis ikke den CPU, du leder efter.

Forestil dig, at du lige har fået ledelsesgodkendelse til en ny lokal databaseserver, der vil køre en missionskritisk OLTP-arbejdsbelastning med SQL Server 2014 Enterprise Edition, der kører på Windows Server 2012 R2 Standard Edition. Denne nye server vil erstatte en ældre Dell PowerEdge R910-server, der kører SQL Server 2008 R2 Enterprise Edition på Windows Server 2008 R2 Enterprise Edition. Denne eksisterende server har fire 45nm Intel Xeon X7560 Nehalem-EX-processorer (der giver dig 32 i alt "fysiske kerner i systemet) og har 512 GB RAM, hvilket var en premium-opsætning, da den blev købt i 2010.

For dette eksempel har du et noget begrænset hardware- og softwarelicensbudget til rådighed for platformopgraderingen. Du ønsker at flytte til SQL Server 2014 Enterprise Edition på en ny server med meget bedre single-threaded CPU-ydeevne (da du har en OLTP-arbejdsbelastning) og højere samlet CPU-kapacitet, mens du stadig minimerer dine hardware- og SQL Server-licensomkostninger.

På baggrund af disse oplysninger, hvordan ville du så gå frem for at beslutte, hvilken model server du skal vælge, og hvilken præcis processor du skal vælge? Vil du lade nogen i I.T. afdelingen træffer disse beslutninger, eller vil du blive involveret i evaluerings- og beslutningsprocessen? I stedet for at lade "Shon the server guy" bestemme, vil jeg gerne vise dig en nem, praktisk metode til at finde ud af dette ved at bruge TPC-E benchmark-score, nogle enkle regnestykker og noget sund fornuft.

Det første trin er at tjekke TPC-E benchmark resultatscores online, på udkig efter det nærmeste tilsvarende system til dit eksisterende system. Hvis du er heldig, vil du finde en officiel benchmark-indsendelse, der er et nøjagtigt match til dit system. I vores tilfælde fandt jeg et indlæg fra den 10. april 2010, som tilfældigvis nøjagtigt matcher vores gamle system. Dette Dell PowerEdge R910-system havde en faktisk TPC-E-gennemstrømningsscore på 1.933,96 med fire Intel Xeon X7560-processorer med otte kerner. Den faktiske TPC-E-gennemstrømningsscore er et godt mål for systemets samlede CPU-kapacitet, hvilket giver dig en grov indikation af, hvor mange samtidige forespørgsler det kan håndtere (forudsat at du ikke har lager- eller hukommelsesrelaterede flaskehalse).

Det andet trin er at tage den faktiske TPC-E-gennemstrømningsscore for dette system og dividere den med antallet af fysiske processorkerner i systemet for at få en idé om den enkelttrådede processorydelse for den pågældende processor i det benchmarked-system . For dette system ville vi simpelthen dividere 1.933,96 med 32 fysiske kerner for at komme frem til en "score pr. kerne" på 60,44. Intel Xeon X7560 har en basis-clock-hastighed på 2,26 GHz, med en Turbo-clock-hastighed på 2,66 GHz. Den har en 24MB delt L3-cache og en Intel QPI-hastighed på 6,4 GT/s. Quick Path Interconnect (QPI) er en punkt-til-punkt-forbindelse mellem CPU'en og den integrerede hukommelsescontroller, så at have højere QPI-hastigheder betyder hurtigere hukommelsesadgang.

Det tredje trin er at lede efter TPC-E benchmark-resultater for nuværende generationssystemer og processorer, og forsøge at finde et resultat for et system, der omtrent svarer til den type nyt system, du overvejer. Desværre vil dette nogle gange være svært, fordi serverleverandørerne ikke har indsendt så mange nye systemer, som de plejede, og fordi de altid indsender systemer, der bruger "flagskibet", den højeste core count processor for en given processorgeneration og familie. Dette gør den faktiske TPC-E Throughput-score højere, men gør også et system, der bruger denne processor, meget dyrere at licensere til SQL Server på grund af det højere antal kerner. Et andet problem med disse "flagskibs"-processormodeller er, at de typisk bytter højere fysiske kernetal for lavere basis-clock-hastigheder, så du ender med at betale meget højere licensomkostninger og faktisk få lavere single-threaded CPU-ydeevne.

Konventionel visdom ville være, at du ønsker en ny fire-socket server til at erstatte din eksisterende fire-socket server. Med moderne to-socket servere er det muligvis ikke nødvendigt længere, afhængigt af størrelsen af ​​din arbejdsbyrde. Der var en periode, fra begyndelsen af ​​2012 til begyndelsen af ​​2014, hvor nye to-socket Xeon E5-familieserverprocessorer var meget hurtigere til single-threaded ydeevne end nye fire-sockets Xeon E7 familie serverprocessorer. Denne ydeevnekløft lukkede en del op, da Xeon E7 v2 Ivy Bridge-EX-familien blev frigivet i begyndelsen af ​​2014. Siden da er E5- og E7-familierne endnu tættere nu, da begge bruger Haswell-mikroarkitekturen.

I betragtning af denne næsten CPU-ydelsesparitet kommer dit valg af servermodel ned til den samlede hukommelse, CPU og IO-kapacitet. Nuværende to-socket-servere er praktisk talt begrænset til 768 GB RAM med 32 GB DIMM'er, mens nuværende fire-socket-servere kan have 3 TB RAM med 32 GB DIMM'er. De fleste kunder, jeg støder på, kan nemt køre deres arbejdsbyrde på 768 GB RAM, men nogle få har faktisk brug for mere end det. Både to-socket- og fire-socket-servere kan bruge Haswell-processorer med hver 18 fysiske kerner, så du har en grænse på enten 36 eller 72 fysiske kerner i dit system, afhængigt af dit antal sokkel.

For denne øvelse er der et TPC-E-benchmark-resultat for et Fujitsu Primergy RX2540 M1-system med to sockets med en faktisk TPC-E-gennemstrømningsscore på 3.772,08 ved brug af to Intel Xeon E5-2699 v3 atten-kerne Haswell-EP-processorer og 512 GB VÆDDER. Xeon E5-2699 v3-processoren har en basis-clock-hastighed på 2,3 GHz, med en Turbo-clock-hastighed på 3,6 GHz. Den har en 45MB delt L3-cache og en Intel QPI-hastighed på 9,6 GT/s. For dette system vil vi dividere den faktiske 3.772,08 score med 36 fysiske kerner for at komme frem til en "score pr. kerne" på 104,78.

Dette nye to-socket system ville have næsten det dobbelte af den samlede CPU-kapacitet af det gamle system med omkring 1,57 gange den enkelt-trådede ydeevne. Ud fra et CPU-kapacitets- og enkelttråds-ydelsesperspektiv ville jeg være ret sikker på, at dette nye to-socket-system ville være en god erstatning for det gamle system. Dette nye system ville også have PCIe 3.0-udvidelsespladser, så det vil have mere samlet IO-kapacitet end det gamle system. Desværre har den 36 fysiske kerner, der vil kræve SQL Server 2014 Enterprise Edition-licenser, hvilket vil være ret dyrt.

Et bedre processorvalg kan være Intel Xeon E5-2667 v3, som har otte fysiske kerner med en basisclockhastighed på 3,2 GHz, en Turbo-clockhastighed på 3,6 GHz, en 20 MB delt L3-cache og en 9,6 GT/s Intel QPI hastighed. Ved hjælp af nogle simple regnestykker kan vi justere for forskellene mellem Xeon E5-2699 v3 og Xeon E5-2667 v3, (da de begge er fra samme processorgeneration og familie).

Først justerer jeg for forskellen i fysiske kernetal. Hvis du dividerer 8 med 18, er resultatet 0,44, så du ganger 3.772,08 gange 0,44, får vi et resultat på 1.676,48. Dernæst skal vi justere for forskellen i basisklokhastighed mellem disse to processorer. E5-2667 v3 har en 39 % højere base clock-hastighed end E5-2699 v3-processoren, så vi ville gange 1.676,48 gange 1,39 for at få en endelig estimeret TPC-E score på 2330,31. Hvis vi dividerer denne estimerede score med 16 fysiske kerner, får vi et "score pr. kerne" resultat på 145,64.

Så ifølge denne beregning ville vi stadig have mere samlet CPU-kapacitet end det gamle system, og meget bedre single-threaded CPU-ydeevne ved at bruge det lavere antal kerner, "frekvensoptimeret" Xeon E5-2667 v3-processor i den nye to-socket system. Den sidste bonus fra dette processorvalg er meget lavere SQL Server 2014-licensomkostninger, da vi kun har brug for 16 kernelicenser i stedet for 36 kernelicenser, hvilket er en besparelse på omkring $136.000,00.

Forhåbentlig er det lidt mere klart, hvordan du kan lave nogle simple analyser for at hjælpe dig med at beslutte den nøjagtige processor, du skal vælge til en ny databaseserver, givet din arbejdsbyrde og budgetbegrænsninger. Denne analyse er lidt mere kompliceret, når man skal sammenligne processorer fra forskellige generationer og familier, men de samme grundprincipper kan bruges. Jeg vil dykke dybere ned i dette emne i en fremtidig artikel.


  1. hvordan man bruger tns-indgange med macromedia-drivere til Oracle

  2. Sådan udføres PL SQL Block i Oracle

  3. Sådan får du UTC-værdi for SYSDATE på Oracle

  4. Nummerseriegenerator-udfordringsløsninger – Del 2