cachestat, uma das novidades que serão apresentadas no Linux 6.5

Tux, o mascote do Kernel Linux

O kernel do Linux é a espinha dorsal dos sistemas operacionais (SO) Linux e é a interface fundamental entre o hardware de um computador e seus processos.

Na semana passada começou a trabalhar em qual será a próxima versão do Kernel do Linux 6.5 e desde então algumas das mudanças mais relevantes já começaram a ser anunciadas que será introduzido nesta próxima versão do kernel.

E é que, por exemplo, um grande número de melhorias e mudanças já foram integradas, como o suporte de inicialização de CPU paralela Com o objetivo de reduzir significativamente os tempos de inicialização do kernel, as alterações da AMD abordam diligentemente os problemas de suspensão/retomada do sistema, juntamente com melhorias nos sistemas de arquivos, virtualização e muito mais.

Das mudanças anunciadas, falaremos sobre uma delas neste artigo, que é citada como já incluída no codebase que compõe o kernel do Linux 6.5 e foi integrada com a implementação do uma nova chamada de sistema “cachestat”.

Esta série de patches apresenta uma nova chamada de sistema, cachestat, que resume as estatísticas da cache da página (número de páginas na cache páginas marcadas para reescrita, páginas despejadas, etc.) de um arquivo, em um intervalo de bytes especificado. Ele também inclui um conjunto de autoteste que testa alguns uso típico.

Sobre cachestat

cachestat é um novo syscall que permite que programas userland consultem estatísticas de cache de página mais detalhadas do lado do kernel. Como tal, destina-se a estender a chamada de sistema mincore já existente que é usada para determinar se as páginas estão presentes na memória, a chamada cachestat permite estatísticas de cache de página mais detalhadas e aponta para maior escalabilidade.

É mencionado que atualmente a memória do cache da página é geralmente o maior consumidor de memória e, portanto, os métodos do kernel que lidam com isso têm um grande impacto no desempenho. Como tal, há uma interface rica para aumentar esses métodos com fadvise e a família de sincronização.

A chamada do sistema cachestat() envia informações sobre o número de páginas armazenadas em cache, páginas sujas, páginas removidas, páginas removidas recentemente e páginas marcadas para reescrita.

As estatísticas fornecidas para arquivos permitem que você tome decisões mais precisas sobre como trabalhar com I/O que passam pelo VFS, baseado não apenas em um algoritmo abstrato, mas também levando em consideração as características de um determinado sistema em um determinado momento.

Atualmente, não há uma boa maneira de consultar o estado da página de cache grande conjuntos de arquivos e árvores de diretórios. Há mincore (), mas escala mal:
o kernel grava uma grande quantidade de dados de bitmap que o espaço do usuário precisa adicioná-lo, quando o usuário realmente não se importa com as informações por página
nesse caso. O usuário também precisa mmmap e desalocar cada arquivo conforme ele vai por toda parte, o que também pode ser bastante lento.

sobre o pPossíveis casos de uso de cachestat() por aplicativose mencione o seguinte:

  • O escalonador de consultas no SGBD será capaz de decida se deseja executar uma varredura de índice ou ler diretamente os dados da tabela com base no estado do índice da tabela no cache da página.
  • Tratamento granular e dependente de carga de preenchimento de cache de página e E/S (por exemplo, páginas sujas/páginas marcadas para reescrita), alterando a frequência de sincronização, de muito frequente sob carga leve para rajada durante rajadas de carga.
  • Possibilidade de uma apresentação mais visual e exibição conveniente de informações de uso de memória em arquivos/diretórios grandes, semelhante a como o utilitário "du" permite exibir o uso de espaço em disco.
  • Solução de problemas e depuração mais fáceis de gravações preguiçosas para problemas de desempenho.

Finalmente se você estiver interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir