Posso fazer com que o tar não use o cache do sistema de arquivos ao ler arquivos?

Posso fazer com que o tar não use o cache do sistema de arquivos ao ler arquivos?

Temos um trabalho cronizado em um servidor web de produção que requer o taring de arquivos de todo o sistema de arquivos. Ele é executado por cerca de 105 minutos e, durante esse tempo, o Apache inicia a troca porque toda aquela leitura de alguns gigas de arquivos expandiu a quantidade de memória do cache do sistema de arquivos.

Os dados que o tar está lendo não precisam permanecer no cache do sistema de arquivos. Vai para o tarfile e pronto. Existe algo onde podemos dizer like tar cvf whatever/ --no-system-file-buffer-reads? Minha leitura de man tarnão revela nada que pareça ajudar.

Você não precisa apontar que isso pode ser visto como uma situação do tipo "Doutor, dói quando eu faço assim! Então não faça assim". De alguma forma, precisamos despejar os arquivos em um arquivo tar, então não fazer isso não é uma opção.

Responder1

Acho que isso foi respondidoaqui:

Existe onocacheutilitário, que pode ser anexado a um comando como ionice e nice. Ele funciona pré-carregando uma biblioteca que adiciona posix_fadviseo POSIX_FADV_DONTNEEDsinalizador a qualquer chamada aberta.

Em termos simples, avisa ao kernel que o cache não é necessário para aquele arquivo específico; o kernel normalmente não armazenará o arquivo em cache. Veraquipara detalhes técnicos.

Ele faz maravilhas para qualquer grande trabalho de cópia, por exemplo, se você deseja fazer backup de um disco de vários terabytes em segundo plano com o menor impacto possível no sistema em execução, você pode fazer algo junto nice -n19 ionice -c3 nocache cp -a /vol /vol2.

informação relacionada