Posso obter tar para não usar o cache do sistema de arquivos ao ler arquivos?

4

Temos uma tarefa cronned em um servidor da Web de produção que requer o armazenamento de arquivos de todo o sistema de arquivos. Ele é executado por cerca de 105 minutos, e durante esse tempo, o Apache começa a trocar porque toda a leitura de alguns gigs de arquivos expandiu a quantidade de memória para o cache do sistema de arquivos.

Os dados que o tar está lendo não precisam estar no cache do sistema de arquivos. Está indo para o tarfile e é isso. Existe algo em que podemos dizer como tar cvf whatever/ --no-system-file-buffer-reads ? Minha leitura de man tar não mostra nada que possa ajudar.

Você não precisa apontar que isso pode ser visto como uma situação "Doc, dói quando eu vou assim! Então não vá assim". De alguma forma, precisamos despejar arquivos em um arquivo tar, então não é nada disso.

    
por Andy Lester 16.04.2013 / 20:56

1 resposta

8

Acho que isso foi respondido aqui :

There is the nocache utility, which can prepended to a command like ionice and nice. It works by preloading a library which adds posix_fadvise with the POSIX_FADV_DONTNEED flag to any open calls.

In simple terms, it advises the kernel that caching is not needed for that particular file; the kernel will then normally not cache the file. See here for the technical details.

It does wonders for any huge copy jobs, e. g. if you want to backup a multi terabyte disk in the background with the least possible impact on you running system, you can do something along nice -n19 ionice -c3 nocache cp -a /vol /vol2.

    
por 16.04.2013 / 21:07