
News
Contenuti per la community dell'HPC e gli appassionati di innovazione: tutorial, news e press release per utenti, ingegneri e amministratori
- Tutte le news
- Aerospace & Defence
- Artificial Intelligence
- Blog
- Cloud Platform
- HPC
- Kubernetes Cluster
- Press
- Progetti Europei
- Ultime news
- Varie E4
- Video
Dispositivi di memorizzazione NVDIMM: classificazione e vantaggi

Analisi dei principali dispositivi di memorizzazione NVDIMM e delle loro caratteristiche.
Ogni buon articolo relativo a dispositivi di memorizzazione non può che iniziare da un’assodata classificazione, che metteremo da parte per qualche paragrafo, e dal presentare un grafico relativo all’aspetto di maggior interesse: la classica piramide relativa alla gerarchia di prestazioni delle memorie, un trend di crescita della quantità di dati prodotti, oppure un confronto in termini di euro/GB tra le varie tipologie di dispositivi.
Ecco dunque la classica rappresentazione gerarchica dei dispositivi di memorizzazione: al vertice della piramide troviamo i dispositivi con tempi di accesso inferiori (registri della CPU, cache L1, L2, … , DRAM), mentre scendendo verso la base troviamo dispositivi a latenza via via crescente (SSD, HDD …).

Per consentire l’esecuzione di istruzioni da parte della CPU i dati devono inizialmente essere portati dai dispositivi collocati alla base della piramide fino al vertice della stessa, risalendo la gerarchia di memorie, esattamente come fu per i blocchi di pietra con cui venne realizzata.
Peccato che la scala utilizzata nel grafico non renda grazia all’enorme sforzo necessario per la movimentazione dei blocchi! Per farlo, poniamo che un metro di altezza della piramide corrisponda ad un ns (nanosecondo, ovvero un miliardesimo di secondo). Un nanosecondo corrisponde, circa, alla durata di un ciclo di clock, ovvero al tempo necessario alla CPU per accedere alla più veloce (e piccola) area di memoria: uno dei suoi registri.
Per recuperare dati presenti nelle cache della CPU occorre scendere di pochi metri, mentre per accedere a dati presenti nelle pur “veloci” DRAM si parla di decine di metri. Per scoprire quanti, possiamo utilizzare un semplice tool1 :
[root@pmserver Linux]# ./mlc --latency_matrix
Intel(R) Memory Latency Checker - v3.9
Command line parameters: --latency_matrix
Using buffer size of 2000.000MiB
Measuring idle latencies (in ns)...
Numa node
Numa node 0 1
0 81.7 130.5
1 130.4 81.6
Nel caso migliore occorrono circa 81 metri, nel caso peggiore 130, e ci troviamo comunque in scenari ancora piuttosto fortunati; cosa succederebbe se il dato si trovasse sul dispositivo SSD con la migliore latenza oggi disponibile (circa 10 microsecondi, ovvero milionesimi di secondo)?
I blocchi da sollevare non sarebbero alla base della piramide, ma si troverebbero alle pendici del monte Everest, scalato il quale, l’addetto – non volontario – alla costruzione dovrebbe poi risalire altre 8 piramidi poste alla sua sommità prima di poter posare il blocco in cima alla costruzione.

Tragico il caso in cui i dati fossero memorizzati su di un comune hard disk (tempo di accesso nell’ordine dei millesimi di secondo): si tratterebbe di un vero e proprio viaggio al centro della Terra, dovremmo infatti scendere di migliaia di km nel sottosuolo.
Riportando il grafico nella giusta scala appare evidente come ci sia un incredibile gap nella gerarchia delle memorie, tale lacuna corrisponde alla zona che separa le varie tipologie di memoria in base alla storica classificazione in memorie volatili e memorie permanenti. Le prime velocissime, ma non in grado di preservare i dati in mancanza dell’alimentazione elettrica, le seconde di grande capacità e in grado di mantenere le informazioni a computer spento. Ulteriore elemento caratterizzante i primi dispositivi è la possibilità di essere byte-addressable, ovvero di poter accedere a dati di piccola dimensione, mentre i dispositivi di archiviazione permanente sono in genere block-addressable, non possono accedere a singoli byte, ma devono operare su blocchi di dimensioni maggiori (es 4kB).
In tale contesto si colloca una nuova tipologia di dispositivi, la non-volatile/persistent memory, categoria all’interno della quale ricadono i dispositivi NVDIMM, ovvero i Non Volatile Dual in-line Memory Module, device che vengono alloggiati negli slot comunemente usati per la memoria RAM. Al momento sono state definite le specifiche di tre tipi di NVDIMM:
- NVDIMM-N: moduli contenenti sia flash memory (persistente) che DRAM. La protezione dei dati in caso di interruzione dell’alimentazione è tipicamente garantita da un condensatore ad alta capacità, il quale consente di salvare i dati presenti nelle DRAM sulla flash memory. Hanno prestazioni simili alle DRAM, ma capacità limitate, sono byte-addressable.
- NVDIMM-F: si tratta di memoria di tipo flash che, a differenza dei tradizionali SSD alloggiati su bus SATA/SAS/PCIe, sfrutta le maggiori prestazioni offerte da un bus DDR4. Come è intuibile, possono fornire grandi capacità ma con prestazioni nettamente inferiori alle DRAM, e consentono un accesso esclusivamente a blocchi.
- NVDIMM-P: combina le proprietà della flash memory (grandi capacità, accesso a blocchi) a quella della DRAM (bassa latenza, byte-addressable)
I dispositivi di tipo P sono particolarmente interessanti, per le loro prestazioni (in termini di latenza e throughput) e per le loro versatili caratteristiche: possono infatti funzionare sia come memoria persistente sia come memoria volatile, consentendo un accesso a blocchi e a byte.
Per apprezzare le potenzialità di questo tipo di dispositivi prendiamo in considerazione una delle prime implementazioni NVDIMM-P disponibili, ovvero gli Intel DC Persistent Memory Module (PMM); si tratta di moduli di memoria disponibili in tagli di dimensione maggiore (128GB, 256GB, 512GB) rispetto a quelli comunemente disponibili per la DRAM; questo consente di rendere disponibili fino a 6TB su di un comune server biprocessore2. Come possiamo utilizzare quest’area dati? Essenzialmente in due differenti modalità:
- Memory mode: configura gli Intel DCPMM per essere utilizzati come memoria principale, mentre la DRAM presente sul sistema viene utilizzata come cache. Utilizzando questa modalità viene creata un’area di memoria volatile, con prestazioni paragonabili a quella della DRAM.
- App direct mode: consente la creazione di aree di memoria persistenti, con un conseguente innalzamento della latenza (a pochi microsecondi).
ll memory mode abilita alla creazione di server dotati di una notevole quantità di memoria, cosa solitamente ottenibile solo in macchine con un alto numero di socket e la relativa penalità in termini di maggiori costi e complessità dei sistemi. Appaiono evidenti alcuni scenari di utilizzo: analisi di grandi dataset non distribuibili su più macchine, in-memory database, creazione di piattaforme ottimali per ospitare un alto numero di macchine virtuali o containers e tanto altro!
L’App direct mode consente ad applicazioni, che devono essere opportunamente modificate, di avere a disposizione un’area dati persistente, accessibile con le stesse modalità della DRAM. La necessità di effettuare modifiche alle applicazioni sembrerebbe rendere meno fruibile, nell’immediato, l’adozione di questa tecnologia, ma fortunatamente esiste un modo piuttosto semplice per avvantaggiarsi delle prestazioni offerte dagli Intel DCPMM: utilizzare i moduli come Storage over App Direct. Ciò consente di accedere a tali dispositivi come se fossero degli usuali dispositivi a blocchi (ad es. HDD), in maniera completamente trasparente alle applicazioni. É pertanto possibile utilizzare comuni file system (xfs, ext4) per sfruttare in maniera semplice gli Intel DCPMM e realizzare aree storage ideali per ogni tipologia di I/O.
Date le premesse, alcune domande sorgono spontanee: sono gli NVDIMM così performanti come dichiarato? Quanto è complicato il loro utilizzo?
Nella prossima puntata, andremo dunque alla ricerca delle risposte, partendo da alcune semplici verifiche di alto livello.
Stay tuned!
1- Intel(R) Memory Latency Checker – https://software.intel.com/content/www/us/en/develop/articles/intelr-memory-latency-checker.html
2- Il numero e la configurazione del moduli NVDIMM dipendono dalle specifiche della piattaforma utilizzata. Occorre consultare il manuale del vendor.