Quando a memória é trocada para o disco e depois a RAM é liberada, a memória é retornada à 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 fala surgem, há muita RAM sem qualquer paginação, no entanto, esses processos levam tempo. Durante esse tempo, o ESXi troca a memória em disco.

Então, fico com uma condição de que acabo com bastante memória de host gratuita, mas ainda assim uma quantidade significativa foi trocada para o disco.

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

    
por Brad.Duane 19.03.2014 / 21:33

1 resposta

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 para 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 é um pouco modificado pela pré-busca e leitura e assim por diante, mas fundamentalmente, as coisas ainda são paginadas por demanda.

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

    
por 23.07.2014 / 04:12