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

Gerarchia della tecnologia di memoria/storage e SQL Server

C'è un vecchio detto di rete che è:"I problemi di larghezza di banda possono essere curati con il denaro. I problemi di latenza sono più difficili perché la velocità della luce è fissa".

Tradizionalmente, ci sono stati quattro livelli primari nella memoria complessiva e nella gerarchia di archiviazione di un server di database. A partire dalla parte superiore della piramide, hai la memorizzazione nella cache della memoria ad accesso casuale (SRAM), che è in genere suddivisa tra cache L1 e L2 relativamente piccole e veloci per ciascun core fisico di un processore e una più grande, più lenta, on-die, cache L3 condivisa per l'intero processore. Ad esempio, il processore Intel Xeon E7-8890 v4 a 14 nm (Broadwell-EX) ha una cache L1 da 64 KB per core e una cache L2 da 256 KB, oltre a una cache L3 da 60 MB molto più grande ma più lenta condivisa dall'intero processore fisico .

Il secondo livello è la memoria dinamica ad accesso casuale (DRAM) con capacità di licenza fino a 4 TB con Windows Server 2012 R2, fino a 24 TB con Windows Server 2016 e con latenze nell'intervallo dei nanosecondi. Sia la SRAM che la DRAM sono volatili, il che significa che conservano i dati solo quando viene applicata l'alimentazione elettrica.

Il terzo livello è costituito dagli SSD SATA/SAS (NAND), con capacità individuali fino a circa 4 TB e latenze nell'intervallo dei microsecondi. Un fattore limitante con i vecchi SSD SATA/SAS (NAND) è il fatto che utilizzano l'interfaccia SATA/SAS che limita la loro larghezza di banda totale, a seconda della versione SATA/SAS che stanno utilizzando. Sono inoltre limitati dall'utilizzo del protocollo AHCI legacy che ha un sovraccarico di I/O molto maggiore e una latenza maggiore rispetto al protocollo NVMe più recente. Il quarto livello sono le unità disco rigido con supporto magnetico rotante legacy, con capacità individuali fino a 10 TB e latenze nell'intervallo di millisecondi.

Ciascuno di questi livelli tradizionali ha una latenza più elevata, ma un costo per MB/GB inferiore e una capacità totale più elevata man mano che si scende nella gerarchia di memoria/archiviazione. La relativa latenza di questi quattro livelli tradizionali è mostrata nella Tabella 1.

Interfaccia Tipo Latenza relativa (letture)
CPU su core/su die Cache SRAM 1x
Allega diretta DRAM DDR4 10 volte
PCIe NVMe o SATA/SAS AHCI SSD 100.000 volte
SAS/SATA HDD 10.000.000 volte

Tabella 1:livelli di memoria/archiviazione tradizionali

Nuovi livelli di memoria/archiviazione

Negli ultimi due anni abbiamo assistito all'introduzione e al crescente utilizzo di SSD PCIe NVM Express (NVMe) basati sulla tecnologia flash NAND esistente. Questi in genere hanno latenze nell'intervallo 50-100 microsecondi. Usano anche il protocollo NVMe più recente e molto più efficiente e l'interfaccia PCIe, offrendo prestazioni molto migliori rispetto ai vecchi SSD SAS/SATA che utilizzano il vecchio protocollo AHCI.

Attualmente, Hewlett Packard Enterprise (HPE) sta vendendo moduli NVDIMM da 8 GB per i server HPE Proliant DL360 Gen9 e HPE Proliant DL380 Gen9. Questi moduli hanno 8 GB di DRAM che sono supportati da 8 GB di flash per $ 899,00, che è piuttosto costoso per gigabyte. Questi server a due socket dispongono di 24 slot di memoria che supportano ciascuno fino a 128 GB di DIMM DDR4 tradizionali. Tutti gli slot utilizzati per i moduli NVDIMM non saranno disponibili per il normale utilizzo della memoria. È possibile utilizzare un massimo di 16 slot di memoria per l'utilizzo di NVDIMM, che offre una capacità massima di 128 GB. È necessario utilizzare i processori Intel Xeon serie E5-2600 v4 per ottenere il supporto NVDIMM ufficiale. Micron rilascerà NVDIMM da 16 GB di capacità maggiore nell'ottobre del 2016.

Dispositivo IOPS Latenza media (ns) MB/sec
SSD NVM Express 14.553 66.632 56,85
Modalità blocco NVDIMM 148.567 6.418 580,34
Modalità DAX NVDIMM 1.112.007 828 4.343,78

Tabella 2:confronto delle prestazioni di scrittura casuale 4K (1 thread, QD1)

I dati sulle prestazioni nella tabella 2 provengono da una presentazione Microsoft/Intel (Persistent Memory in Windows) all'IDF16 di San Francisco, utilizzando questa metodologia di test delle prestazioni:

  • Carico di lavoro :4 KB di scritture casuali, 1 thread, 1 I/O eccezionale, I/O sincrono, 1 GB di file, NTFS, 3 secondi di riscaldamento, 7 secondi di tempo di misurazione
  • Hardware :HPE ProLiant DL380 Gen9, 2x Intel Xeon E5-2650L v3 a 1,8 GHz, 96 GB di RAM, 2x NVDIMM-N da 8 GB, 1x SSD NVMe da 1600 GB
  • Software :build WS 2016 pre-rilasciata, strumento di I/O interno Microsoft

C'è un buon video di Channel 9 chiamato Accelerating SQL Server 2016 Performance with Persistent Memory in Windows Server 2016 con Lindsey Allen e Tobias Klima. Una demo nel video mostra come SQL Server 2016 in esecuzione su Windows Server 2016 supporta la modalità DAX (con un flag di traccia non specificato). Una volta che Windows Server 2016 diventa GA, il flag di traccia non sarà necessario con una versione futura di SQL Server.

Questi nuovi livelli di archiviazione della memoria si inseriranno tra la memoria DRAM tradizionale e gli SSD SATA/SAS.

Un volume di archiviazione che è stato formattato in modalità DAX può essere usato per ospitare un file di registro delle transazioni di SQL Server 2016 in uno scenario in cui sono necessarie le migliori prestazioni di scrittura possibili in assoluto e non si vuole usare la durabilità ritardata o OLTP in memoria. Un altro possibile scenario sarebbe l'utilizzo di un volume in modalità DAX per ospitare i file di dati tempdb se si dispone di un carico di lavoro che ha sottoposto a uno stress estremo tempdb.

Livelli di memoria/archiviazione futuri

Tra la fine del 2016 e l'inizio del 2017, dovremmo assistere all'introduzione degli SSD Intel Optane che utilizzano il protocollo NVMe. Questi saranno dispositivi di archiviazione flash che utilizzano la tecnologia Intel/Micron 3D XPoint (pronunciata come cross-point), che funzioneranno nei server esistenti. Nei test interni di Intel, questi dispositivi mostrano una latenza circa 10 volte inferiore e IOPS circa 10 volte superiori rispetto ai dispositivi SSD PCIe NVMe Intel DC P3700 serie Intel DC P3700 a prestazioni molto elevate.

A metà/fine 2017, dovremmo anche assistere al lancio di una nuova forma di DIMM persistente che può essere utilizzata come memoria persistente di capacità molto grande o come storage a bassa capacità a prestazioni estremamente elevate. Questi saranno elettricamente e fisicamente compatibili con gli attuali DIMM DDR4 e saranno supportati nella piattaforma basata su processori Intel Xeon di prossima generazione (la piattaforma Skylake "Purley"). Questi prodotti saranno inoltre basati sulla tecnologia Intel/Micron 3D XPoint. Questi DIMM Intel offriranno fino al doppio della capacità di memoria di sistema a un costo significativamente inferiore rispetto alla tradizionale DRAM DDR4, supponendo che la piattaforma del processore/server la supporti (e Microsoft aumenta il limite di memoria della licenza dopo il rilascio di Windows Server 2016). Questi DIMM non avranno la stessa latenza della DRAM tradizionale (saranno più lenti), ma offriranno una latenza molto inferiore rispetto ai dispositivi di archiviazione PCIe NVMe.

Da una prospettiva più ampia e a livello di settore, questa nuova categoria di dispositivi con memoria persistente (PM) offrirà uno storage non volatile con prestazioni simili a quelle della DRAM. I dispositivi PM risiedono direttamente sul bus di memoria, offrendo loro una latenza molto bassa e un'elevata larghezza di banda. Microsoft supporta i dispositivi PM in Windows 10 Anniversary Update e Windows Server 2016. Ci sarà il supporto per una nuova classe di volume di archiviazione, chiamato volume DAX (Direct Access Storage). I volumi DAX utilizzano file mappati in memoria per fornire alle applicazioni l'accesso diretto ai dispositivi PM per le migliori prestazioni in assoluto.

Uno dei motivi per cui la modalità DAX è molto più veloce è perché una volta mappata in memoria la regione di NVDIMM su un volume DAX, ulteriori interazioni con tale storage ignorano completamente lo stack di archiviazione. È letteralmente solo una memcopy per far sì che i dati siano persistenti. Questo è un sacco di codice che non devi eseguire su ogni interazione con lo storage. Questo è un altro contributo molto significativo alla latenza (insieme alla velocità della luce). I volumi DAX sono supportati su NTFS ed è necessario scegliere la modalità DAX quando si formatta il volume. Le applicazioni (come SQL Server 2016) devono essere state modificate (da Microsoft) per supportare e utilizzare la modalità DAX e sarà inoltre necessario abilitare un flag di traccia.

Per la compatibilità con le versioni precedenti sull'hardware PM, ci saranno anche volumi in modalità Block, che mantengono tutta la semantica di archiviazione esistente. Tutte le operazioni di I/O attraverseranno lo stack di archiviazione fino al driver del disco PM. Ciò rende la modalità Blocco completamente compatibile con le applicazioni esistenti. Se disponi di un dispositivo hardware PM, con un sistema operativo supportato, otterrai prestazioni di archiviazione significative senza alcuna modifica dell'applicazione in modalità Blocco. Ciò significa che le versioni di livello inferiore di SQL Server saranno in grado di utilizzare i volumi di archiviazione in modalità blocco.

La conclusione di tutto questo è che avremo molta più flessibilità e nuove opzioni su come progettare e configurare la memoria e i livelli del sottosistema di archiviazione nei prossimi 12-18 mesi, purché si utilizzi SQL Server 2016 su Windows Server 2016 e disponga di hardware abbastanza nuovo in grado di supportare i dispositivi PM. Le versioni precedenti di SQL Server saranno in grado di utilizzare i volumi PM in modalità blocco se sono in esecuzione su Windows Server 2016. L'hardware precedente e le versioni precedenti di Windows Server potranno utilizzare le unità SSD Intel Optane. Questo ci darà molte opzioni aggiuntive per migliorare le prestazioni di archiviazione!