O posix_fadvice / POSIX_FADV_DONTNEED é funcional no Linux?

4

Se eu estiver fazendo apenas uma varredura em arquivos grandes, será preciso me preocupar com o impacto no cache de páginas ou o SO cuidará para evitar que minha varredura cause rotatividade desnecessária no cache de páginas. Eu quero evitar o impacto de outros processos que podem estar se beneficiando do cache de páginas.

Eu considerei usar POSIX_FADV_DONTNEED , mas estou vendo conselhos conflitantes sobre se posix_fadvice e POSIX_FADV_DONTNEED faz alguma coisa no Linux.

Alguém pode esclarecer, obrigado.

    
por John Lonergan 08.06.2015 / 13:47

1 resposta

1

POSIX_FADV_DONTNEED é levado em consideração no Linux; veja mm/fadvise.c na fonte do kernel. Toda vez que você chama posix_fadvise() com POSIX_FADV_DONTNEED , qualquer cache de página correspondente é drenado.

Como jthill mencionado, uma abordagem melhor para minimizar o impacto de E / S no cache de páginas seria para abrir os arquivos com O_DIRECT .

    
por 17.06.2016 / 11:51