Quando a memória é trocada para o disco e depois a RAM é liberada, a memória é trocada de volta para a RAM?

1

Eu estou supondo que a resposta depende do sistema operacional. Nesse caso, é o VMware ESXi. Eu criei uma condição de pouca memória, migrando várias VMs para um host que tenha excesso de confirmação de memória. Uma vez que o compartilhamento de página e o balão de ar são acionados, há muita RAM sem qualquer paginação, no entanto, esses processos levam tempo. Durante esse tempo, o ESXi troca a memória no disco.

Então, eu estou com uma condição que eu acabo com muita memória de host livre, mas ainda assim uma quantidade significativa foi trocada para o disco.

Quando esta memória será trocada de volta para a RAM? Apenas quando é acessado? E isso também significa, quando é acessado, haverá atraso? Isso é evitável?

Brad.Duane
fonte

Respostas:

2

Apenas quando é acessado. Todos os SOs de memória virtual modernos são "paginados por demanda", o que significa que as coisas são paginadas como resultado de falhas de página, que ocorrem quando páginas "inválidas" são referenciadas.

(Uma página "inválida" é simplesmente uma que gera uma falha de página quando referenciada. Ela pode estar na RAM, em um cache de página. O nome vem do bit "válido" na entrada da tabela de páginas x86 / x64. Outro nome pois isso é "residente", mas esse nome é um pouco enganador, já que, novamente, uma página "inválida" pode estar na RAM, em um cache de página.

Isso é modificado de alguma forma pela pré-busca e leitura e assim por diante, mas fundamentalmente, as coisas ainda são paginadas por demanda.

A razão para isso é que quando um programa está inativo por um tempo (e é "trocado para o disco", seu padrão de acesso à memória na próxima vez que ele faz alguma coisa não será necessariamente semelhante ao que era anteriormente). simplista para apenas página em que estava na memória antes.

Jamie Hanrahan
fonte