Linus Torvalds discutiu com Dave Chinner sobre o cache do kernel

Nem tudo são flores no desenvolvimento do kernel, recentemente, Linus Torvalds discutiu com Dave Chinner sobre o cache do kernel. Confira os detalhes desse embate.

Em ciência da computação, um cache é uma memória que armazena temporariamente cópias de dados para reduzir o tempo de acesso posterior. O armazenamento em cache pode reutilizar com eficiência os dados recuperados ou processados ​​anteriormente.

Linus Torvalds discutiu com Dave Chinner sobre o cache do kernel

No Linux, o sistema de cache é chamado principalmente de “cache de páginas”, mas também é possível usar transferências diretas de E/S.

Na prática, os dados armazenados em cache geralmente são armazenados em um hardware de acesso rápido, como RAM, e também podem ser usados ​​em conjunto com um componente de software.

Na maioria dos casos, o kernel do Linux refere-se à ‘página de cache’ ao ler ou gravar no disco.

Novas páginas são adicionadas para responder a solicitações para ler o processo no modo de usuário.

Se a página ainda não estiver no cache, uma nova entrada será adicionada ao cache e concluída com os dados lidos do disco.

Se houver memória suficiente disponível, a página é mantida no cache por um período indefinido de tempo e pode ser reutilizada por outros processos sem acessar o disco.


Os projetistas de kernel Linux implementaram a ‘página de cache’ para atender a dois requisitos principais:
  • Primeiro, permitirá que o sistema localize rapidamente uma página específica que contenha dados sobre um determinado proprietário. Para aproveitar ao máximo o cache do Linux, a pesquisa deve ser uma operação muito rápida.
  • Segundo, as instruções redundantes que lidam com o cache de páginas e leem a leitura antecipada retardarão as chamadas de leitura e gravação.

Por esses motivos, o Linux oferece uma maneira simples de contornar as páginas em cache: transferências diretas de E/S.

Em uma transferência direta de E/S, o kernel programa o controlador de disco para transferir os dados diretamente para as páginas no espaço de endereço do modo de usuário de um aplicativo de cache automático.

A questão sempre foi debatida na comunidade Linux e tem sido objeto de uma disputa entre Linus Torvalds e um colaborador do kernel Linux.
 

Linus Torvalds discutiu com Dave Chinner sobre o cache do kernel

De fato, em uma mensagem da lista de discussão do kernel Linux, Dave Chinner, um programador australiano que gerencia o sistema de arquivos XFS criado pela Silicon Graphics (SGI) e apoiado por muitas distribuições Linux, disse que a memória O cache de páginas ainda é muito mais lento que as transferência direta de E/S.

Em seu relatório, ele escreveu a seguinte mensagem:

“Para um aplicativo altamente competitivo que processa dados massivos em arquivos grandes armazenados em armazenamento de alta velocidade, o cache de páginas ainda é muito mais lento que as transferência direta de E/S.”

Sua declaração concorda com a mencionada acima, que em alguns casos, como bancos de dados, em que a quantidade de dados armazenados em cache é muito grande, seria melhor usar uma solução alternativa: transferência direta de E/S.

Dito isto, Linus Torvalds não gostou do comentário de seu colaborador sobre a questão do armazenamento em cache de dados em seu sistema operacional.

Este último chamou as palavras de Dave Chinner de “pura merda” antes de atacá-lo em uma longa mensagem. “Você já fez esse pedido, e foi uma merda completa, e eu também liguei para você”, disse ele.

Ele apontou que a palavra-chave em ‘cache de páginas’ é ‘cache’ e que funciona muito bem e disse o seguinte na lista de discussão.

“Os caches funcionam, Dave. Qualquer um que pense que os caches não funcionam é incompetente. Aproximadamente 99% de todos os acessos ao sistema de arquivos são armazenados em cache e nunca fazem transferências diretas de E/S.”

“O cache da página manipula-os perfeitamente. Quando diz que o cache da página é mais lento que a transferência direta de E/S, é porque nem sequer vê ou se preocupa com a velocidade das operações. Isso é compreensível, uma vez que só intervém quando as operações de informação são realizadas.”

Para ele, quem se opõe a essa ideia não sabe absolutamente nada e Dave Chinner é um deles.

“Você faz esta declaração sem levar em conta todos os casos que você não vê e que não lhe interessam porque o cache da página já os tratou para você. É muito melhor do que as transferências diretas de E/S. Com que frequência você usa armazenamentos que não são de tempo quando faz programação sem E/S? Quase nunca, talvez? Porque os caches funcionam. Então pare com seu argumento estúpido e desonesto, onde você ignora os efeitos do cache.”

Em algum ponto de sua mensagem, Dave Chinner explicou que os limites de cache da página são cada vez mais notáveis ​​à medida que os SSDs se tornam mais eficientes.

Mas essa é uma coisa que Torvalds ainda não concorda. “E não, os SSDs não tornaram as caches inúteis”, disse ele.

No entanto, em resposta ao longo texto de Torvalds, Chinner explicou que continua convencido de que o problema que ele está destacando é realmente real.

Para Chinner, é verdade que há muitos casos em que o cache da página funciona, já que é sempre mais rápido que a maioria dos sistemas de armazenamento.

Apesar do ‘tom’ da conversa, essas discussões são boas para a evolução do kernel.

E você? O que achou dessa discussão? O que acha das opções e da forma com que Torvalds abordou o colaborador? Deixe sua opinião nos comentários e amplie essa discussão.

O que está sendo falado no blog

Veja mais artigos publicados neste dia…

Deixe um comentário

Sair da versão mobile