9
votes

C: Bibliothèque d'allocation de mémoire sans verrouillage

Quelqu'un a une bonne expérience avec un allocateur de mémoire sans verrouillage pour C / C ++?

J'ai examiné le boost et les libcds, mais je ne suis pas sûr de la bibliothèque à utiliser.

Contexte, j'ai fait des recherches sur une "table de hachage dynamique et sans blocking, sans attente, dynamique et sans blocage". * Oui, je sais que cela semble prétentieux, mais c'est ce qu'on appelle.

Quoi qu'il en soit, je me prépare à démarrer le test multi-thread, et je dois comprendre le meilleur moyen de configurer l'allocation de la mémoire, lorsque de nouveaux nœuds sont ajoutés. (Et quand j'ai besoin d'allouer des tableaux de pointeurs)

Il en va de même pour quiconque a une bonne expérience avec une allocation de mémoire libre Verrouillage?


4 commentaires

L'attente ne signifie pas sans le verrouillage, sans verrouiller implique non-blocage et non-blocage impliquant simultanément? Un peu redondant ...


Je sais, mais mon professeur de recherche aime frapper tous les mots du bouton.


Vous avez manqué NUMA-CAZA-CARED de la liste de souhaits. Toutes les implémentations d'allocator de base ne fonctionnent pas bien sur le matériel numa si vous voulez également une concurrence.


Voter pour fermer comme outil d'outil.


3 Réponses :


5
votes

Les jolis graphiques montrent que cette implémentation est bonne:

http://lockaSinc.com/

C'est Open Source GPL 3.0 depuis le 14 nov. 2011 :)


3 commentaires

Ils ont posté le code d'analyse comparative des performances, ce qui est agréable, car je voulais examiner un meilleur outil de chronométrage, alors l'heure standard.h


@Feldman, vous pouvez voir à partir des graphiques les alternatives: tcmalloc à partir de Google Nee jemalloc et l'allocator par défaut de Glibc qui est incroyablement bon ces jours-ci.


Et encore une fois, Humard échoue spectaculaire. J'ai vu il a déjà recommandé un certain nombre de fois que chaque point de repère que je vienne sur place jemalloc et tcmalloc très loin.



0
votes

Pourquoi ne pas essayer l'allocator de tbb ? Je ne sais pas comment «verrouillé», mais je doute que vous trouverez un véritable allocator sans verrou *, au moins un qui fonctionne à travers les threads / cœurs (comme tcmalloc )

* J'ai essayé de construire un peu de quelques mois, mais le rend sans avertisseur a des inconvénients, du moins de mon point de vue. Je n'étais pas trop désireux de TLS Arena's comme Nedmalloc a. J'ai fini avec un allocateur un peu hybride, qui ne se verrouille que lorsqu'un chunk est vide.


1 commentaires

Il y a une version de HOARD qui est entièrement sans verrouillage.



2
votes

Il y a aussi streamflow . Je ne l'ai pas utilisé moi-même; Je viens de le courir en lisant des publications.


0 commentaires