Ho parlato dell'importanza delle prestazioni di throughput sequenziale per SQL Server per un po' di tempo. La velocità effettiva sequenziale è di fondamentale importanza per molte operazioni comuni in SQL Server, tra cui:
- Backup e ripristini completi del database
- Lavori di creazione e manutenzione dell'indice
- Inizializzazione di snapshot e abbonamenti di replica
- Inizializzazione delle repliche AlwaysOn AG
- Inizializzazione dei mirror del database
- Inizializzazione di log shipping secondari
- Carichi di lavoro delle query del data warehouse relazionale
- Operazioni ETL del data warehouse relazionale
Nonostante l'importanza del throughput sequenziale per SQL Server, vedo ancora molte persone che si concentrano su solo su prestazioni e latenza di I/O casuali, ignorando in gran parte le prestazioni di throughput sequenziale. Mentre stai pensando alle prestazioni del throughput sequenziale, devi considerare il percorso completo dei dati, dall'essere inattivi sul supporto di archiviazione al consumo dei core del processore.
A seconda del tipo di tecnologia di archiviazione in uso, potrebbe essere collegata al server host tramite una scheda di interfaccia di rete (NIC) Ethernet o una scheda HCA (Host Channel Adapter) InfiniBand. Questo tipo di connessione è più comune per le SAN iSCSI e per le condivisioni file SMB (Remote Server Message Block) 3.0. Microsoft TechNet ha un buon riferimento su questo argomento, chiamato Migliorare le prestazioni di un file server con SMB Direct.
Il throughput sequenziale teorico di un singolo dispositivo NIC/HCA (per porta) è mostrato nella Figura 1:
Figura 1:Throughput NIC/HCA teorico
Nel caso ti stia chiedendo a cosa si riferiscono InfiniBand (QDR) o Infiniband (FDR), l'InfiniBand Trade Association mantiene una InfiniBand Roadmap che mostra la storia e i progressi pianificati nella larghezza di banda di InfiniBand nei prossimi anni. Infiniband ha un elenco di acronimi che descrivono le prestazioni relative di un collegamento InfiniBand come mostrato di seguito:
- SDR – Velocità dati singola
- DDR – Doppia velocità di trasmissione dati
- QDR:velocità dati quadrupla
- FDR – Quattordici velocità dati
- EDR – Enhanced Data Rate
- HDR:alta velocità di trasmissione dati
- NDR – Next Data Rate
Le SAN Fibre Channel (FC) tradizionali utilizzano in genere uno o più adattatori bus host (HBA) che dispongono di una o più porte per cavi ottici che si collegano a uno switch FC o direttamente alla SAN FC stessa. È ancora relativamente raro vedere HBA FC da 16 Gb in uso diffuso, quindi la maggior parte dei server host ha ancora HBA FC da 4 Gb o 8 Gb.
Il throughput sequenziale teorico di un singolo dispositivo HBA (per porta) è mostrato nella Figura 2:
Figura 2:throughput HBA teorico
Indipendentemente dal tipo di dispositivo di interfaccia o tecnologia in uso, è necessario preoccuparsi del tipo di slot del bus di espansione a cui è collegato sul server host. A seconda dell'età del server e del tipo di processore utilizzato, ciò può avere un enorme impatto sulla larghezza di banda totale supportata dallo slot del bus. Gli slot PCIe (Peripheral Component Interconnect Express) di terza generazione hanno il doppio della larghezza di banda per corsia rispetto a uno slot PCIe di seconda generazione precedente. Puoi determinare quanti e quali tipi di slot di espansione hai nel tuo server host osservando le specifiche e la documentazione per la tua marca e modello di server. Finora, solo i processori della famiglia Intel Xeon E3 v2, Xeon E3 v3, Xeon E5, Xeon E5 v2, Xeon E5 v3 e Xeon E7 v2 supportano gli slot PCIe Gen 3. Qualsiasi cosa più vecchia di questa avrà slot PCIe Gen 2, o forse anche slot PCIe Gen 1 se è estremamente vecchio (in termini di computer).
Il throughput sequenziale teorico di un singolo slot PCIe è mostrato nella Figura 3:
Figura 3:Throughput teorico dello slot di espansione
Dall'introduzione della microarchitettura Intel Nehalem nel 2008, tutti i processori per server Intel 2P e più grandi hanno supportato Intel QuickPath Interconnect (QPI) per le connessioni tra i processori e la memoria in un server, fornendo a questi nuovi processori il supporto per l'accesso alla memoria non uniforme (NUMA), che ha sostituito il vecchio front-side bus (FSB). NUMA migliora notevolmente la scalabilità con l'aumento del numero di processori fisici in un sistema, specialmente quando hai quattro o più processori fisici in un sistema host.
I moderni processori Intel hanno controller di memoria integrati che supportano Intel QPI. Quando guardi le specifiche per un particolare processore Intel nel database ARK online, sarai in grado di vedere le sue prestazioni QPI nominali in GigaTransfers al secondo (GT/sec). Un GigaTransfer al secondo è semplicemente un miliardo di operazioni che trasferiscono dati al secondo.
Ad esempio, un moderno processore Intel Xeon E5-2667 v3 di fascia alta (Haswell-EP) ha una velocità Intel QPI di 9,6 GT/sec, mentre un processore Intel Xeon E5503 di fascia bassa più vecchio (Nehalem-EP) ha un Intel QPI Velocità di soli 4,8 GT/sec. Anche tra i processori della microarchitettura della stessa generazione, noterai variazioni nella velocità Intel QPI nominale. Ad esempio, nella famiglia Haswell-EP a 22 nm, il processore Intel Xeon E5-2603 v3 di fascia bassa è valutato a 6,4 GT/sec, mentre il processore Intel Xeon E5-2660 v3 di fascia alta è valutato a 9,6 GT/sec. I processori Intel Xeon E5, E5 v2 ed E5 v3 hanno due collegamenti QPI per processore, mentre i processori della famiglia Intel E7 ed E7 v2 hanno tre collegamenti QPI per processore.
Il throughput sequenziale teorico di un singolo collegamento Intel QPI è mostrato nella Figura 4:
Figura 4:throughput QPI Intel teorico
A seconda dell'età del tuo server host, dell'esatto processore utilizzato e del tipo, velocità e quantità di memoria installata, avrai diverse quantità di throughput sequenziale teorico disponibili da ciascun modulo di memoria. Tutti i moderni processori Intel hanno controller di memoria integrati che controllano la quantità e la frequenza della memoria che il processore supporterà. I server host vintage più recenti utilizzeranno la memoria DDR3, mentre i processori Haswell-EP di ultima generazione (famiglia Intel Xeon E5 v3) supportano la memoria DDR4. La memoria DDR4 supporta velocità più elevate, maggiore throughput, maggiore densità di memoria, minor consumo energetico e maggiore affidabilità rispetto alla memoria DDR3.
Il throughput sequenziale teorico di un singolo modulo di memoria è mostrato nella Figura 5:
Figura 5:throughput teorico del modulo di memoria
Quando si esaminano i singoli componenti in un nuovo sistema esistente o pianificato, è necessario prestare attenzione ai componenti non corrispondenti che possono introdurre colli di bottiglia artificiali nelle prestazioni sequenziali nel sistema. Ad esempio, potresti avere un server nuovo di zecca con processori di fascia alta che è paralizzato dal fatto che utilizza un HBA FC da 4 Gb per accedere a una SAN. Un altro esempio potrebbe essere una scheda di memoria flash PCIe molto veloce o un controller RAID installato in uno slot PCIe 2.0 x4 a larghezza di banda ridotta, che limitava artificialmente il throughput sequenziale totale del dispositivo.
So che queste sono state molte informazioni tecniche da digerire, specialmente per le persone che non sono appassionati di hardware. Penso che l'idea principale che dovresti portare via da questo articolo è che le prestazioni di velocità effettiva sequenziale sono piuttosto importanti per molte attività e carichi di lavoro comuni di SQL Server. I dettagli di basso livello su processori, tipi di memoria, slot di espansione e dispositivi di espansione in realtà fanno molta differenza nelle prestazioni di throughput sequenziale che otterrai da un server e dal suo sottosistema di archiviazione. Avere un buon throughput sequenziale rende la tua vita molto più semplice come professionista di database, consentendoti di supportare la tua organizzazione a un livello molto più elevato.