Nick Connolly

Des approches brevetées du calcul parallèle pour améliorer les performances d'I/O sur des systèmes multicœurs

Profiter de la loi de Moore afin d’offrir un débit d'I/O supérieur et une meilleure latence, tout en utilisant moins de ressources.

Au moment de la création de DataCore, l’univers du stockage était dominé par de grands opérateurs qui fabriquaient des équipements matériels sur mesure. Nous sommes nés de l’hypothèse selon laquelle les ordinateurs généralistes étaient devenus suffisamment performants pour que le stockage puisse être mis en œuvre sous forme d’une solution logicielle flexible fonctionnant sur du matériel courant.

Non seulement la suite nous a donné raison, puisque nous avons pu réaliser des performances qui détiennent un record mondial et offrir des services de données de classe entreprise, mais notre travail a également servi à créer toute la catégorie des produits de software-defined storage.

L’avantage d’une solution de stockage basée sur du matériel courant est qu’elle peut facilement profiter des améliorations apportées à la plateforme sous-jacente. La loi de Moore prédit que le nombre de transistors sur une puce doublera tous les ans ou deux ans. Pendant longtemps, cela s’est traduit par des vitesses d’horloge de processeur plus élevées et par conséquent des applications plus rapides.

image of a chip in SDS to improve parallel io performance

Mais cette simple phrase « vitesses d’horloge de processeur plus élevées » masque un grand nombre de détails cachés : opérations de mise en pipeline pour s’assurer que chaque partie de la puce est activement utilisée, hyper-threading pour transformer la capacité inutilisée en un semblant de processeur supplémentaire et mise en cache pour aider le sous-système mémoire à suivre le rythme.  Dans l’ensemble, ce sont des détails de mise en œuvre qui peuvent être ignorés, mais qui commencent à prendre de l’importance à mesure que les besoins se mettent à peser davantage sur le système.

Cependant, un jour ou l’autre, les rêves doivent prendre fin. Ces dernières années, les vitesses d’horloge de processeur ont plus ou moins cessé de progresser. La loi de Moore a alors conduit au développement de puces multicœurs offrant d’énormes capacités de calcul parallèle.  Une même puce peut maintenant contenir plus d’une centaine de processeurs logiques et le système peut contenir quatre puces de ce type. Cela peut considérablement changer la façon dont les logiciels doivent être développés.

Équilibrer performances, contention et régularité

Depuis sa création, DataCore a toujours ciblé le matériel multiprocesseur et possède une vaste expertise en la matière, due à son passé dans le domaine du temps réel et du multitraitement symétrique. Il y a toutefois une grande différence entre des algorithmes qui fonctionnent bien avec un petit nombre de processeurs et le genre de techniques nécessaires pour que des centaines de processeurs logiques puissent gérer des millions d’I/Os par seconde avec une réponse de l’ordre de la microseconde.

À titre d’exemple, prenons un modèle de conception courant : une liste chaînée utilisée comme file d’attente de travaux protégée par un spinlock. Le verrou doit être pris chaque fois qu’un travail est ajouté à la file d’attente ou supprimé de celle-ci. Sur un système très chargé, cela peut entraîner une lutte quasi permanente pour le verrou et les processeurs sont bloqués en attendant d’y accéder. Les spinlocks ordinaires n’utilisent pas le concept de « premier arrivé, premier servi ». Un processeur peut donc être retardé longtemps, ce qui retarde indéfiniment les demandes d’I/O et nuit au temps de réponse de l’application.  Sur un système légèrement chargé, cette lutte est moindre et les problèmes passent tout simplement inaperçus.

icon on SDS to improve parallel io performanceDes techniques bien connues peuvent toutefois être adoptées, notamment l’utilisation d’un spinlock en file d’attente qui intègre le concept d’équité et de programmation sans verrou basée sur des instructions compare-and-set. À première vue, ces méthodes semblent fournir une solution élégante au problème, mais aucune d’entre elles ne supporte vraiment bien ce niveau de charge.  Même un simple accès mémoire peut lourdement handicaper les performances s’il manque le cache ou tombe dans la mauvaise ligne de cache. Sur un système multi-socket, le coût d’un accès peut également dépendre du processeur concerné.

Nouvelles approches pour l’exécution d’opérations d’IO en parallèle

DataCore a développé un certain nombre de techniques innovantes visant à optimiser les performances tout en conservant le niveau de régularité requis. L’un des principes clés est que l’état est maintenu dans le domaine présentant la plus faible contention jusqu’à ce qu’il devienne nécessaire de l’exposer plus largement. Les techniques de protection de chaque domaine sont adaptées au niveau de contention attendu. Tout cela doit être réalisé tout en conservant une visibilité globale de l’état.

Cela peut sembler simple, mais les détails sous-jacents recèlent une forte complexité. Le multithreading sur des systèmes largement parallèles n’a en effet rien de banal. C’est même en fait si difficile que la tendance est maintenant au dimensionnement des applications en les construisant à partir de microservices indépendants conteneurisés… Un environnement qui réclame un nouveau type de pile de stockage, mais ceci est une autre histoire !

Le brevet le plus récent déposé par DataCore dans ce domaine porte le numéro :

SDS improves parallel io performanceU.S. Patent Number 10,409,640 : Methods and Apparatus for Data Request Scheduling in Performing Parallel IO Operations (Méthodes et appareillages pour la programmation de demandes de données lors de l’exécution d’opérations d’E/S parallèles).

Il fait partie d’un ensemble d’applications connexes couvrant les techniques d’amélioration des performances d’I/O sur des systèmes multi-cœurs, notamment :

U.S. Patent Number 10,318,354 : Methods and Apparatus for Command List Processing in Performing Parallel IO Operations (Méthodes et appareillages pour la programmation du traitement de listes de commandes lors de l’exécution d’opérations d’E/S parallèles)

Que signifient ces brevets en pratique ? Un produit de software-defined storage qui offre un débit d’I/O plus élevé, avec une latence inférieure et plus déterministe, tout en utilisant moins de ressources. Ce sont des innovations techniques comme celles-ci qui font que près de 80 % de nos clients signalent des améliorations de 300 à 1 000 % de leurs performances de stockage et que DataCore est passé du rang de simple fournisseur de solutions de virtualisation du stockage à celui de spécialiste incontesté du software-defined storage, autrement dit The Authority on Software-Defined Storage.

Immediate Value. We realized a positive ROI from our investment in DataCore within: The first month: 13%. 120 days or less: 10%. 6 months or less: 21%. The first year: 55%.

Demandez une démonstration en direct ou un essai gratuit entièrement fonctionnel de la technologie la plus avancée permettant d’accélérer les performances, d’augmenter l’efficacité des ressources et d’atteindre une disponibilité de vos systèmes de stockage sans aucun temps d’arrêt.

Get a Live Demo of SANsymphony

Talk with a solution advisor about how DataCore Software-Defined Storage can make your storage infrastructure modern, performant, and flexible.

Demander une Live Demo