O sinalizador O_DIRECT ignora o cache de páginas do Linux ao acessar dispositivos de bloco também?

3

Estou executando muitas máquinas virtuais KVM, que abrem a imagem do disco rígido com o sinalizador O_DIRECT .

Eu entendo, de acordo com a página open() man, que usar O_DIRECT tentará ignorar o cache de página do Linux ao gravar em um arquivo, mas isso também se aplica a dispositivos de bloco? (por exemplo, quando a imagem do disco rígido é um volume LVM ou um zvol ZFS)

NB: o caso de uso de O_DIRECT aqui, é que o convidado já está mantendo seu próprio cache de página, então não faz sentido duplicar isso no host.

    
por Manu 27.01.2016 / 17:32

1 resposta

0

E parece que a resposta é sim: a abertura de um dispositivo de bloco com O_DIRECT irá ignorar o cache de páginas também. Eu encontrei a resposta nesta documentação idade relativamente para Oracle no Redhat 5 .

Por padrão, a leitura e gravação em dispositivos de bloco são entradas / saídas armazenadas em buffer. O Oracle Database 10g R2 agora abre automaticamente todos os dispositivos de bloco, como discos SCSI, usando o sinalizador O_DIRECT, evitando assim o cache do sistema operacional.

    
por 29.01.2016 / 11:37