Jane Street Turbina Acesso a Dados com FUSE em OCaml para Armazenamento Interno
Aprofundamento CEVIU
Aprofundamento
A Jane Street, conhecida por sua abordagem técnica no trading de alta frequência, apresentou uma solução para aprimorar o acesso a dados em seu sistema de armazenamento de objetos interno, o Depot. Desenvolvida por Kian Kasad, um engenheiro Linux em estágio de verão, a novidade é um servidor FUSE escrito em OCaml que permite acesso POSIX a esse object store. A implementação visa resolver o gargalo de acesso a dados que produtos de mercado, como Dell Isilons ou VAST Storage, começaram a apresentar, especialmente com o crescimento exponencial dos volumes.
A decisão de criar uma biblioteca FUSE em OCaml, ao invés de usar a tradicional libfuse em C, reflete a cultura da Jane Street de priorizar seu ecossistema OCaml. A libfuse apresentava incompatibilidade com o runtime assíncrono da empresa devido a I/O bloqueante e a necessidade de Foreign Function Interface (FFI). O desenvolvimento envolveu desafios como a pouca documentação do protocolo FUSE e a necessidade de entender o comportamento específico do dispositivo /dev/fuse, que exige a leitura e escrita de uma única mensagem FUSE por chamada de sistema. Além disso, a equipe teve que mapear as semânticas de um object store (Depot) para o modelo POSIX, adaptando, por exemplo, nomes de arquivos longos e a conceituação de "bundles" para diretórios.
Por que isso importa
Esta iniciativa da Jane Street demonstra como as empresas de ponta estão abordando a crescente demanda por acesso rápido a grandes volumes de dados. A engenharia de sistemas de I/O de alta performance, especialmente em cenários com dados de petabytes, é crucial para a pesquisa e desenvolvimento. A solução da Jane Street, com suas otimizações "zero-copy" e leituras paralelas, oferece um modelo para a superação de gargalos em sistemas de armazenamento.
A escolha e o sucesso de OCaml nesse projeto também ressaltam a viabilidade de linguagens funcionais para infraestrutura de sistemas de missão crítica, desafiando a hegemonia de linguagens como C ou Rust para tarefas de baixo nível. A capacidade de fornecer uma interface POSIX para um object store não-POSIX facilita a integração com ferramentas existentes, melhorando a experiência do desenvolvedor e acelerando fluxos de trabalho.
Linha do tempo
AWS lança S3 Files, integrando EFS e S3 para melhor fricção de dados.
Spotify acelera consultas em Data Lakes com novo sistema de indexação.
DuckDB turbina leitura de dados no S3 com I/O assíncrono.
Vortex otimiza transferência de dados do S3 para GPU com cópia única.
Jane Street implementa servidor FUSE em OCaml para acesso POSIX ao Depot.
Perguntas frequentes
O que é FUSE e qual sua utilidade neste contexto?
FUSE (Filesystem in Userspace) é um protocolo que permite que o kernel Linux e um programa em espaço de usuário colaborem para expor um sistema de arquivos POSIX. No caso da Jane Street, ele é usado para fazer o sistema de armazenamento de objetos Depot parecer um sistema de arquivos tradicional para ferramentas que esperam essa interface.
Por que a Jane Street desenvolveu uma biblioteca FUSE própria em OCaml, em vez de usar <code>libfuse</code>?
A Jane Street optou por uma implementação FUSE nativa em OCaml para evitar problemas de integração com seu runtime assíncrono e a complexidade de FFI (Foreign Function Interface) que a libfuse em C apresentaria. Isso permitiu um controle maior e otimizações alinhadas com o ecossistema OCaml da empresa.
Como a arquitetura "zero-copy" contribuiu para o desempenho?
A arquitetura "zero-copy" elimina cópias desnecessárias de dados na memória ao mover buffers diretamente. Inicialmente, o sistema copiava os dados duas vezes (para e de strings OCaml). Com "zero-copy", o throughput para arquivos grandes saltou de 30 MiB/s para 1.3 GiB/s, reduzindo drasticamente a alocação de memória e a latência.
Quais foram os principais desafios na adaptação do Depot para a interface POSIX via FUSE?
Os desafios incluíram mapear as semânticas de um object store como o Depot para o modelo POSIX, que possui regras diferentes para metadados e estrutura de diretórios. Isso envolveu adaptar limites de nomes de arquivos e a forma como "bundles" (diretórios internos do Depot) são representados no FUSE para manter a compatibilidade com ferramentas UNIX.
Fontes
- blog.janestreet.comfonte original
- Categoria
- CEVIU Web Dev
- Publicado
- 02 de outubro de 2026
- Editoria
- CEVIU Web Dev
