Pièges de la concurrence en Rust : un goulot d’étranglement dû à un compteur atomique

2025-06-10
Pièges de la concurrence en Rust : un goulot d’étranglement dû à un compteur atomique

La plateforme d’analyse de streaming de Conviva a subi un goulot d’étranglement de performance dû à un compteur atomique apparemment anodin dans un registre de types partagé globalement utilisant une table de hachage concurrente (Flashmap). Sous forte concurrence, les mises à jour du compteur atomique ont provoqué des rebonds de lignes de cache et des changements de contexte excessifs, entraînant un pic de latence P99. Le remplacement de Flashmap par Dashmap n’a pas résolu le problème. Le problème a finalement été résolu à l’aide d’ArcSwap, qui utilise un mécanisme de mise à jour de copie en lecture (RCU) pour éviter la contention de cache. Ce cas souligne l’importance du choix de la bonne structure de données pour les scénarios à forte concurrence, notamment dans les situations à forte lecture, où l’efficacité d’ArcSwap est optimale.

Développement