Você pode limpar o Windows StandbyList / Cache chamando a API do Windows chame NtSetSystemInformation .
Em stackoverflow alguém postou um hack diferente para limpar o cache do sistema, talvez seja o que você precisa.
Estou desenvolvendo um aplicativo vinculado a E / S e estou tentando rastrear um erro que ocorre durante a leitura de unidades com movimentação lenta. O problema com o rastreio deste Heisenbug é que algo - a unidade ou o próprio Windows, armazena em cache a leitura na memória RAM em algum lugar (seja no cache interno da unidade ou em algum lugar do SO).
Para ver o bug no meu software, tenho que reinicializar meu sistema (a execução dentro de uma VM tem o mesmo problema de desempenho - eu leio os dados uma vez e eles ficam em cache em algum lugar.)
Existe uma maneira de limpar qualquer um desses caches (sejam eles no sistema operacional ou na própria unidade)?
Você pode limpar o Windows StandbyList / Cache chamando a API do Windows chame NtSetSystemInformation .
Em stackoverflow alguém postou um hack diferente para limpar o cache do sistema, talvez seja o que você precisa.
Você está usando chamadas Win32 IO? Em caso afirmativo, use a opção FILE_FLAG_NOBUFFERING
na sua chamada CreateFile
. Então, todas as chamadas ReadFile
e WriteFile
irão diretamente para o hardware, sem buffer ou cache no sistema operacional. Uma limitação: suas chamadas de leitura e gravação por meio desse identificador de arquivo precisam estar em múltiplos do tamanho do bloco e seu deslocamento em arquivo também deve estar em múltiplos do tamanho do bloco.
Isso não irá (afaik) parar o cache no hardware da unidade.
Tags hard-drive cache windows-10 memory