Basculer les calculs sur le stockage : pourquoi ? Comment ? Chez qui ?
Les CSD arrivent. Cette nouvelle catégorie de SSD qui embarquent une véritable puissance de calcul va servir à soulager les serveurs de leurs tâches, de la compression jusqu’aux applications décisionnelles.
Traiter les données directement à la source n’est pas une idée nouvelle. Cependant, le concept prend de l’importance au fur et à mesure que les données collectées sur les sites de production augmentent et qu’il devient un enjeu économique de les traiter rapidement. Un moyen nouveau de répondre à cette problématique est le Computational Storage ou, en français, des unités de stockage – des SSD la plupart du temps – capables d’exécuter elles-mêmes des algorithmes de traitement. L’avantage de cette technique est qu’elle évite les goulets d’étranglement inhérents à l’utilisation de serveurs séparés.
Le Computational Storage va plus loin que les infrastructures hyperconvergées, dont le principe était déjà de regrouper le stockage et la puissance de calcul dans une même machine pour ne pas être ralenti par la connexion réseau vers une baie de disques externe. En intégrant de la puissance de calcul dans les SSD eux-mêmes, on augmente la faculté de filtrer très rapidement les données qui prolifèrent à toute vitesse, à savoir les informations produites par des capteurs ou des objets connectés. Le Computational Storage permettrait aussi d’accélérer les requêtes répétitives que font les algorithmes d’intelligence artificielle en général et de Machine Learning en particulier, dans les applications décisionnelles.
Toutefois, cette technologie n’en est qu’à ses balbutiements. Seule une poignée de fournisseurs proposent déjà des modèles de SSD dits de Computational Storage. Ils sont néanmoins un grand nombre à s’être inscrits au groupe de travail concerné mis en place par la SNIA (Storage Network Industry Association), l’autorité en matière de standardisation au sujet du stockage.
Les motivations derrière le Computational Storage
Selon la SNIA, « les solutions de Computational Storage adressent en général les applications dans lesquelles les traitements sur des données stockées asphyxient la puissance des serveurs traditionnels, du fait de l’incessante croissance de ces données ».
Les données qui prolifèrent à toute vitesse sont un moteur d’adoption. Mais ce n’est pas tant leur volume qui pose problème. Le besoin est surtout de les traiter rapidement sans que cela augmente les coûts, d’autant que les traitements sont en l’occurrence des petites tâches répétitives.
Au-delà des algorithmes liés au filtrage ou à l’analyse, ces tâches répétitives sont le chiffrement et le déchiffrement, la compression, la déduplication, voire de simples tâches d’administration du stockage.
Andrew LarssenExpert en transformation informatique, PA Consulting
« Nous observons une augmentation progressive des possibilités. Au fur et à mesure que des unités de Computational Storage seront utilisées, les usages se multiplieront dans tout ce qui touche au prétraitement des données ; par exemple leur indexation sans avoir besoin de tout charger au préalable dans un serveur », commente Andrew Larssen, expert en transformation informatique chez PA Consulting.
Sur le papier, un système équipé d’unités de Computational Storage consommerait moins d’énergie que les architectures classiques du fait de sa moindre utilisation du processeur principal. Si cette économie est un facteur intéressant dans les centres de données, elle est surtout déterminante sur les sites de production – dits de Edge Computing – où elle rend possibles les calculs informatiques, malgré les faibles ressources locales. On pense notamment à l’électricité minimale qui arrive au pied d’une caméra de vidéosurveillance.
Dans une architecture serveur plus stockage classique, l’unité centrale demande des données au stockage, exécute la tâche et renvoie les données au stockage. Dans un modèle de Computational Storage, l’unité centrale envoie une tâche, par exemple le déchiffrement, au sous-système de stockage « intelligent ». On y gagne en sécurité, car, dans ce second cas, les données d’origine ne quittent jamais le disque.
Technologies et options de déploiement
Le Computational Storage repose sur des SSD hautement performants qui intègrent des composants programmables et une connectique rapide. Selon l’appellation officielle de la SNIA, ces unités de stockage sont des CSD (Computational Storage Drive).
La génération actuelle de CSD utilise des composants de mémoire Flash NAND classiques. Cependant, les puces de stockage étant séparées des circuits de traitement, rien n’empêche en théorie l’emploi d’un autre type de mémoire. La connectique est quant à elle du NVMe, soit au format U.2 pour les unités 2,5 pouces, soit M.2 pour les SSD de type carte pour portables et équipements embarqués. On en trouve aussi sous la forme d’une carte PCIe conventionnelle.
Les composants programmables sont soit des FPGA (sur le Samsung SmartSSD, par exemple), soit des SoC basés sur une architecture ARM. Les modèles qui utilisent un FPGA préprogrammé sont pour l’heure les plus répandus. Les entreprises se voient ainsi proposer des solutions qui accélèrent une série de fonctions prédéfinies, courantes dans la gestion du stockage. D’autres modèles permettent de reprogrammer le FPGA pour que les entreprises y intègrent les fonctions de leur choix, via un langage de haut niveau comme Xilinx Vitis.
Les FPGA ne peuvent toutefois pas être programmés à la volée. C’est pourquoi certains fournisseurs préfèrent utiliser des SoC comprenant des cœurs ARM. Ceux-ci sont capables d’exécuter à la demande n’importe quel code Linux. Ils sont de fait les meilleurs candidats pour étendre au fil du temps les fonctions d’un CSD. La SNIA imagine par exemple que des fournisseurs pourraient implémenter un protocole réseau – Ethernet typiquement – pour que les CSD puissent communiquer entre eux. À ce jour, seul NGD fabrique des CSD à base d’ARM.
En plus des CSD, le marché devrait voir arriver des CSP (Computational Storage Processor), à savoir les mêmes composants de calcul que ceux des CSD, mais installés sur le contrôleur d’une baie de stockage, laquelle serait donc équipée de SSD NVMe conventionnels. Une baie de stockage remplie de CSD, ou disposant d’un CSD pour piloter ses SSD, sera une CSA (Computational Storage Array).
La SNIA a également défini le CSS (Computational Storage Service), à savoir la couche logicielle qui gère la découverte, l’exploitation et, éventuellement, la reprogrammation des CSD.
Cas d’utilisation des CSD
Les CSD se prêtent à toute application où le déplacement des données du stockage vers l’unité centrale est un goulet d’étranglement. Il s’agit des applications qui se caractérisent plus par leurs accès intensifs que par leurs calculs intensifs.
En raison de la diversité des applications qui tirent parti du Computational Storage, l’offre n’est pas homogène. Et elle ne le sera pas non plus à l’avenir. Les fournisseurs ont en effet la volonté de développer autant de produits qu’il y aura de cas d’usage. Si certains vont vendre des CSD comme des SSD haut de gamme, d’autres entendent les proposer comme des extensions dédiées à une application.
Pour l’heure, les CSD « fixes », à savoir ceux à base de FPGA non reprogrammable, sont vendus comme des unités qui accélèrent les fonctions courantes du stockage : la déduplication, la compression, le chiffrement, la maintenance.
Les CSD programmables à base de SoC, ou reprogrammables à base de FPGA, sont vendus pour intégrer des applications d’intelligence artificielle et de business intelligence (BI). Il est prévu que des modèles à base de SoC soient adaptés à l’accélération des bases de données en général. La possibilité d’exécuter du code Linux à la volée laisse imaginer des scénarios où une application déporterait une partie de ses fonctions vers les SoC des CSD. Ce scénario reste théorique, car il suppose que les éditeurs parviennent à mettre dans leurs applications du code x86 pour le serveur et du code ARM pour les CSD.
La capacité de calcul des SoC embarqués dans les CSD est faible au regard du processeur présent dans un serveur. Cependant, si les CSD finissent par intégrer leur propre couche réseau pour communiquer ensemble, il deviendra possible de décharger sur une baie de stockage des pans entiers d’une application.
Le consultant Andrew Larssen prédit que les CSD seront d’abord utilisés par les diffuseurs de médias en ligne pour accélérer la compression vidéo, ainsi que par toutes les entreprises qui cherchent à accélérer leurs bases de données Postgres et MySQL. « Les CSD sont encore bien trop des produits de niche pour que les entreprises pensent à les utiliser. Mais dès lors qu’il leur importera d’accélérer les données stockées et qu’elles ne pourront pas le faire sans doubler la capacité de calcul de leurs serveurs, alors elles seront prêtes à sortir des sentiers battus. »
Les fournisseurs de solutions de Computational Storage
Samsung propose son SmartSSD, à savoir un CSD U.2 de 3,84 To de capacité, à base de FPGA Xilinx, conçu pour accélérer les applications de BI, financières ou encore de l’aviation. Le SmartSSD est disponible sous les marques Samsung, Xilinx et Eideticom.
Scaleflux propose les CSD 2000 aux formats 2,5 pouces (U.2) ou carte PCIe. Leur capacité de stockage grimpe jusqu’à 8 To.
NGD est actuellement le seul fournisseur de CSD qui utilise un SoC capable d’exécuter un Linux 64 bits pour alimenter l’unité de stockage en fonctions applicatives. Ses CSD Newport, aux formats U.2 (2,5 pouces) et M.2 (embarqué) grimpent jusqu’à 32 To de capacité.
Pliops commercialise pour sa part un CSP, sous la forme d’une carte PCIe. Dédiée à l’accélération des bases de données Postgres et MySQL, cette carte se connecte dans les serveurs comme dans les baies de disques pour gérer, sur leurs SSD, toutes les fonctions d’accès.
Eideticom propose lui aussi un CSP, le NoLoad Alveo U50, à insérer dans une baie de stockage avec des SSD traditionnels pour accélérer toutes les fonctions courantes du stockage. Outre la compression et le chiffrement, ce CSP assure toute la logique d’Erasure Coding, à savoir du RAID mais adapté au NVMe.
L’originalité de cette solution est qu’elle n’existe pas seulement sous la forme d’une carte PCIe. On trouve également le modèle NoLoad U.2 CSP qui ressemble à un SSD 2,5 pouces traditionnel, mais ne contient pas de stockage. Il pilote les autres SSD NVMe présents sur la même chaîne PCIe en utilisant les fonctions de communication Peer-2-Peer du bus.