Lo storage computazionale ha una logica semplice: sposta le attività di calcolo più vicino a dove risiedono i dati migliorando le prestazioni e l’efficienza del sistema. Poiché oggi i dati di archiviazione vengono elaborati a tutti i livelli del data center – all’interno di un server, attraverso una rete e negli stessi storage – questi risultati sono molto preziosi.
Parte della ragione è che lo storage non è un’entità monolitica, esiste a molti livelli e ha tanti componenti diversi – archiviazione, protezione e trasmissione – che hanno a che fare spesso coi dati stessi. Altri componenti hanno a che fare con il controllo dei sistemi di storage, la creazione di piani di gestione, e anche l’orchestrazione di come, dove e quando i dati vengono trasmessi all’interno e all’esterno dei diversi sistemi.
Ogni volta si hanno tre componenti di base – calcolo, rete e storage – ma negli ultimi cinque anni ciascuna di esse si è evoluta per fornire migliori prestazioni e assicurare affidabilità e utilità di gran lunga maggiori. Questo ha permesso di spostare questi componenti in aree dove prima non esistevano e quindi di disporre di prodotti disaggregati.
Vantaggi dello storage computazionale
Quando si pensa al processing si va oltre al concetto di “recuperare” i dati da un processore host – attraverso una rete, naturalmente – per essere elaborati. Non tutti i dati devono essere inviati avanti e indietro attraverso la rete perché ora è possibile fornire una più efficiente e accurata capacità di elaborazione nella posizione dei dati più efficiente.
Cosa significa questo in termini reali? In parte, significa:
- meno trasferimenti I/O (il miglior I/O è quello che non viene mai inviato);
- minori possibilità di errore nella trasmissione e ridotta ritrasmissione attraverso la rete;
migliore capacità di elaborare i dati lì dove risiedono (elaborazione in situ);
- utilizzo ridotto della CPU sugli host;
- alte prestazioni grazie al parallelismo per alcuni workload
- migliore programmazione delle funzionalità di archiviazione non solo come necessario, ma dove necessario (ad esempio con compressione, decompressione, crittografia e filtraggio dei pacchetti).
Lo storage computazionale può aiutare a rispondere a queste esigenze, ma fa qualcosa di ancora più importante che mettere insieme calcolo e dati: aiuta a fornire un’ulteriore granularità. Da una prospettiva architettonica, questo significa che invece di avere bisogno di controller di storage monolitici per gestire tutte le funzioni di storage, queste possono essere collocate in più punti del sistema. Dal punto di vista dello storage, è un enorme cambiamento.
Negli ultimi anni, sempre più attenzione alla tecnologia è arrivata da aree come il mondo accademico e dai fornitori di storage e di cloud tanto che è uscito anche un intero numero tutto sullo storage computazionale per un’edizione speciale della Association for Computing Machinery.
Il mondo accademico è stato un suo forte sostenitore per molto tempo, proponendo il suo uso per l’intelligenza artificiale e il machine learning, la riorganizzazione dei dati e applicazioni avanzate di astrazione: “scaricare esplicitamente i compiti computazionali a livello di applicazione dalle CPU host alle unità di storage attraverso lo stack I/O di archiviazione”, secondo il libro “Computer Architecture: A Quantitative Approach”. Per scaricare esplicitamente il calcolo alle unità di storage attraverso lo stack I/O, si devono però fornire efficaci modalità per migliorare le interfacce attraverso l’intera gerarchia I/O.
Alla scoperta del potenziale dello storage computazionale
Diversi dispositivi di storage computazionale possono fornire molte diverse funzioni e capacità computazionali. Gli sforzi di standardizzazione in corso della Storage Networking Industry Association (SNIA) e delle comunità NVM Express avranno senza dubbio un ruolo cruciale nella creazione di metodi coerenti e uniformi per l’implementazione dello storage computazionale.
Ci sarà un percorso evolutivo da compiere per l’intero ecosistema per adottare questa nuova infrastruttura a supporto dello storage computazionale. La SNIA, più di 250 membri vendor volontari hanno lavorato costantemente e diligentemente insieme per accelerare questo processo.
Questo lavoro ora sta iniziando a dare i suoi frutti. Molte delle sfide tecnologiche sono già state superate, e la forte collaborazione esistente assicura coerenza nel mercato sia per gli sviluppatori che per gli utenti finali. Una pietra miliare per l’adozione estesa dello storage computazionale da parte del settore è il calcolo nativo in-storage che è indipendente o trasparente allo stack I/O dello storage. Questo permette l’adozione senza la necessità di modifiche allo stack di archiviazione, che richiede più tempo per permeare i vari sistemi operativi. Ci sono diverse opzioni per realizzare il calcolo nativo in-storage, più di quante possano essere illustrate in un singolo articolo.
Eccome alcune: la compressione dati in-storage lossless, che viene effettuata su ogni blocco di dati da 4 KB all’interno dell’unità, in modo trasparente all’host. I dati lossless comportano una quantità significativa di accessi casuali ai dati, che portano a tassi di miss della cache della CPU/GPU molto elevati. Di conseguenza, la compressione lossless basata su CPU/GPU mostra un’efficienza di utilizzo dell’hardware CPU/GPU molto bassa e quindi di prestazioni a bassa velocità. La compressione nativa in-storage potrebbe sfruttare quindi in modo trasparente la comprimibilità dei dati in fase di esecuzione per ridurre il costo di archiviazione senza consumare alcun ciclo della CPU/GPU dell’host.
Un altro esempio è quello della progettazione dei sistemi di gestione dei dati, come i database relazionali, gli shop di valori chiave e i file system. Qui, il design è vincolato dall’I/O a dimensione fissa delle unità di storage convenzionali. Tuttavia, l’uso dello storage computazionale toglie il vincolo imposto dalle unità di storage sottostanti, consentendo variabilità e flessibilità all’interno di quel blocco I/O. Infatti, usando il calcolo nativo in-storage, questo può essere fatto senza richiedere alcun cambiamento nello stack I/O esistente.
Oltre a questi esempi, lo storage computazionale nativo potrebbe includere la crittografia, la deduplicazione, il rilevamento dei virus, il rilevamento e la tolleranza agli errori, e molte altre funzioni. Si potrebbe eseguire poi un sistema completo basato su Linux OS all’interno delle unità di storage computazionale, essendo ancora indipendente dallo stack I/O dello storage nell’host.
SNIA e NVM Express stanno lavorando per sviluppare molte piattaforme diverse per il mercato per sprigionare il pieno potenziale dello storage computazionale rendendo più conveniente per le applicazioni lo scaricare i task computazionali dalle CPU host ai dispositivi di storage.
Maggiori informazioni sugli sforzi della SNIA per lo storage computazionale
Il lavoro di storage computazionale della SNIA è guidato dai membri volontari del Computational Storage Technical Work Group (TWG). Le attività più recenti del TWG sono la SNIA Computational Storage Architecture and Programming Model, v0.8 rev 0, e la SNIA Computational Storage API v0.5 rev 0, che sono ora in revisione pubblica.
Lo SNIA Computational Storage Special Interest Group lavora per la consapevolezza e la sensibilizzazione verso lo storage computazionale e vuole favorire l’adozione e l’implementazione delle specifiche tecniche e dei modelli di programmazione da parte del settore.