Argonalyst

lsr: ferramenta otimizada para chamadas de sistema em IO

Argonalyst
18 July 2025

Em um exercício de otimização de chamadas de sistema, foi desenvolvida uma implementação do comando ls(1) chamada lsr, que utiliza a biblioteca de entrada e saída ourio para maximizar a eficiência das operações de IO. O resultado é uma ferramenta que se destaca pela velocidade, superando qualquer versão alternativa do ls testada e realizando um número significativamente menor de chamadas de sistema.

O funcionamento do lsr pode ser dividido em três etapas: análise de argumentos, coleta de dados e impressão dos resultados. A maior parte do IO ocorre na fase de coleta de dados, onde lsr faz uso do io_uring, uma nova interface de IO assíncrono do Linux, para acessar as informações necessárias. Isso inclui a abertura do diretório alvo e a leitura de dados de tempo, usuário e grupo, todos gerenciados através do io_uring, o que permite agrupar chamadas de sistema e reduzir a quantidade total necessária.

Os resultados das medições são impressionantes: o lsr apresenta uma redução de pelo menos uma ordem de grandeza em chamadas de sistema quando comparado ao uutils ls, seu equivalente mais próximo. Além disso, o lsr utiliza o StackFallbackAllocator da biblioteca padrão Zig, permitindo a alocação de memória de forma mais eficiente, com uma alocação inicial de 1MB, suficiente para a maioria dos usos, o que diminui ainda mais a necessidade de chamadas de mmap.

Outro ponto positivo do lsr é a sua independência da biblioteca libc, o que elimina a sobrecarga associada ao carregamento dinâmico de bibliotecas. Embora o lsr não ofereça suporte a localizações, ele é menor que o GNU ls, pesando 79,3KB comparado a 138,7KB quando compilado com a opção ReleaseSmall.

Entretanto, algumas anomalias foram observadas. Não está claro o que o lsd está fazendo, pois, segundo um strace, ele realiza chamadas a clock_gettime cerca de cinco vezes para cada arquivo, o que levanta questões sobre sua eficiência. Além disso, a ordenação dos dados parece ser um ponto crítico, com o lsr gastando aproximadamente 30% de seu tempo total nesse processo.

O projeto revelou-se uma experiência divertida e rápida de desenvolver. A utilização do io_uring para reduzir o número de chamadas de sistema foi uma surpresa positiva, e há um grande potencial para essa abordagem em aplicações mais complexas, como servidores. Para aqueles interessados, o projeto é gerido através do tangled.sh, que oferece um processo de PR interessante; sugestões e relatórios de bugs podem ser feitos diretamente no repositório com uma conta atproto e uma senha de aplicativo.

Últimos vídeos

Confira os últimos vídeos publicados no canal

Argonalyst

O plano SECRETO das Big Techs para cobrar MUITO mais pela IA

Argonalyst

BOLHA da IA ou NOVA era de crescimento EXPONENCIAL? O mercado está dividido

Argonalyst

Nova IA da OpenAI traduz em TEMPO REAL e pode mudar o mundo dos negócios

Argonalyst

Spec Driven Development (SDD): a habilidade que vai separar quem SOBREVIVE à IA

Argonalyst

DeepSeek V4: o Open Source que está AMEAÇANDO GPT 5.5 e Opus 4.7

Argonalyst

Prometeram Renda Universal… mas só veio desemprego?

Argonalyst

Mythos Preview: o começo da AGI ou só mais hype?

Argonalyst

Ele automatizou TUDO com IA… e pode virar bilionário sozinho

Argonalyst

Programadores foram só o começo… agora a IA quer o topo

Argonalyst

Multi-agentes, memória e IA eterna: o vazamento que mudou tudo

Argonalyst

VIBE CODING vai acabar… e o que vem agora é muito mais SINISTRO

Argonalyst

IA na Guerra: estamos criando algo mais PERIGOSO que a Bomba Atômica?

Argonalyst

O dinheiro vai desaparecer? A era da IA pode mudar tudo

Argonalyst

O Apocalipse do SaaS: Como a IA pode DESTRUIR o modelo bilionário do software

Argonalyst

Bitcoin é software… e o software está morrendo (isso explica a queda?)