Rinha de Backend - 2024/Q1 - LMDB
Hoje foi divulgado o resultado da Rinha de Backend - 2024/Q1. Não houve um ranking final dos projetos, mas os logs individuais dos testes de cada projeto foram disponibilizados. Que comece a Rinha de Análise de Dados :).
Resolvi fazer um script que agregasse todos esses dados e gerei essa planilha.
Me surpreendi com meu projeto com LMDB ter sido o único com p75 = 0ms, já que algumas pessoas fizeram sistemas específicos de persistência que poderiam ser muito rápidos.
Meu entendimento, baseado em algumas análises de performance que tinha feito, é que no limite do stress test, isto é,
a otimização final, se trata de chamadas ao kernel (syscalls
), que incluia a comunicação TCP/IP e leitura e gravação
dos dados.
Quase todos desligaram proteções usadas em sistemas de produção, como fsync
de arquivos e logs de transações,
mas mesmo assim, chamadas síncronas ao kernel ainda eram feitas.
E aqui entra o detalhe do LMDB. Ele mapeia o arquivo em páginas de memória compartilhadas entre os processos, evitando
syscalls
síncronas para gravação dos dados.