Armadilhas de Concorrência em Rust: Um gargalo de Contador Atômico

2025-06-10
Armadilhas de Concorrência em Rust: Um gargalo de Contador Atômico

A plataforma de análise de streaming da Conviva experimentou um gargalo de desempenho devido a um contador atômico aparentemente inócuo em um registro de tipo globalmente compartilhado usando um mapa hash concorrente (Flashmap). Sob alta concorrência, as atualizações do contador atômico causaram o efeito de 'ping-pong' de linhas de cache e troca de contexto excessiva, levando a um pico de latência P99. Substituir o Flashmap pelo Dashmap não resolveu o problema. O problema foi finalmente resolvido usando o ArcSwap, que emprega um mecanismo de atualização de cópia de leitura (RCU) para evitar a contenção de cache. Este caso destaca a importância de escolher a estrutura de dados certa para cenários de alta concorrência, particularmente em situações de leitura pesada, onde a eficiência do ArcSwap se destaca.

Desenvolvimento