De nombreuses classes d’applications modernes avec données massives, comme le commerce en ligne, les réseaux sociaux ou les moteurs de recherche, nécessitent, en plus des traditionnels serveurs d’applications et des bases de données SQL, une couche de mémoire cache avec des serveurs NoSQL, afin d’assurer la mise à l’échelle et des temps de réponse raisonnables.

La plupart de ces applications utilisent donc des grappes de serveurs de cache en mémoire vive, comme Redis ou memcached, se basant le plus souvent sur de simples systèmes clés valeurs (KVS ou key-value store).

Utiliser de la mémoire vive permet de réduire au maximum la latence. Revers de la médaille, la DRAM est très coûteuse, consomme beaucoup d’énergie et chauffe. L’énergie et le refroidissement sont deux des premières sources de dépenses dans les data centres.

Une équipe de chercheurs du MIT propose une alternative nommée BlueCache, exploitant des serveurs de cache utilisant du stockage Flash et non de la mémoire vive.

Le stockage Flash basé sur des puces NAND possède les avantages suivants sur la mémoire vive volatile :

  • Il est rémanent ;
  • Il consomme jusqu’à 95 % moins d’électricité que la mémoire vive, et chauffe beaucoup moins ;
  • Il est beaucoup plus dense : on peut stocker près de 100 fois plus de données que sur des puces de mémoire.

La difficulté principale est que le stockage Flash est lent comparé à la mémoire vive : en bande passante, où il est typiquement 4 fois plus lent, comme en latence, trois ordres de magnitude supérieure à la latence de la mémoire vive.

BlueCache est donc un ensemble de techniques, logicielles et matérielles, pour limiter cette faiblesse.

L’architecture de BlueCache consiste en un ensemble homogène d’accélérateurs KVS. Chaque carte accélératrice s’intègre au serveur d’application par slot PCIe, incorpore un FPGA, des puces NAND à correction d’erreurs, sans utilisation de processeurs généralistes ni système d’exploitation généraliste, et de la mémoire vive.

Prototype de carte accélératrice BlueCache

Prototype de carte accélératrice BlueCache

 

La mémoire vive contient l’index des paires de clé-valeur.qui sont stockés en mémoire Flash.

Une étude passée ayant montré que 90 % du temps de calcul de memcached est passé dans le traitement de réseau dans le noyau du système d’exploitation, une attention toute particulière a été consacrée à la gestion de réseau.

BlueChache support les réseaux virtuels et un protocole de réseau simplifié permettant d’obtenir une latence de seulement 1,5 microseconde par saut.

La couche logicielle est réduite au maximum dans BlueCache, et contrairement à la plupart des autres systèmes KVS, BlueCache effectue automatiquement le traitement par lots de demandes de plusieurs applications.

es premières comparaisons montrent que le ratio de performance par watts de BlueCache est 25 fois supérieur à celui d’un système KVS classique à base de serveurs Xeon sans cartes accélératrices, pour un débit 4,18 fois plus élevé.

Comparaison de l'architecture d'un nœud BlueCache et d'un nœud serveur x86

Comparaison de l’architecture d’un nœud BlueCache et d’un nœud serveur x86

 

BlueCache est plus rapide que le KVS en mémoire dès que le taux de raté du cache dans une application intensive en lecture dépasse les 7,4 %.

Une mini-grappe BlueCache coûterait dix fois moins qu’un système classique de KVS en mémoire pouvant accommoder 10 à 20 gigaoctets de données.

BlueCache pourrait être jusqu’à cent fois moins cher à l’échelle d’un data centre.

L’équipe a déjà montré qu’un prototype à 4 nœuds exploitait 97,8 % de la bande passante totale de la mémoire flash, mais des tests plus avancés de mise à l’échelle sont nécessaires.

BlueCache est disponible sur GitHub en code source ouvert selon la licence MIT : https://github.com/xushuotao/bluecache et https://github.com/sangwoojun/bluedbm.