Quando o Windows decide retirar páginas do Working Set?

2

Eu estou olhando para a distribuição de memória física usando a ferramenta RAMMap da SysInternals. A distribuição (veja a imagem abaixo) mostra

  1. 1,7 GB na lista de memórias Free (Zeroed)
  2. 1,2 GB na lista de conjuntos de trabalho
  3. 550 MB na lista de espera
  4. 125 MB na lista modificada

Eu entendo que quando um processo requer memória, o Windows procura por memória nas listas na ordem Free (Zeroed) - > Espera - > Modificado Portanto, contanto que tenhamos quadros de página gratuitos, tudo deve estar na lista de Working Set ou Free list.

  1. Esta suposição é correta?
  2. Em caso afirmativo, por que vemos 125 MB de páginas na lista Modificada?
  3. Em geral, quando o Windows decide retirar páginas da lista de conjuntos de trabalho para a lista de modificados / em espera mesmo quando há memória livre?

Estou usando o Windows 7, com 4,0 GB de RAM instalada, sendo que 3,5 GB podem ser usados.

    
por Chethan Ravindranath 15.08.2013 / 14:18

1 resposta

0

  1. Não. Se uma página for lida do disco, ou se for uma alocação do modo kernel, a lista livre é verificada primeiro, depois a lista zerada. Se não for, a lista zerada é verificada primeiro e, em seguida, a lista livre (se alocada a partir da lista livre, a página será zerada em linha antes que o processo com falha consiga vê-la). Em ambos os casos, a lista de espera vem em seguida. Não acredito que a lista modificada seja usada para satisfazer falhas de página ... já que as páginas precisam ser gravadas no disco antes de poderem ser atribuídas a outros usos ... portanto, é melhor esperar pelo gravador de página modificado para fazer o seu regular, após o que as páginas aparecerão na lista de espera.

1a. "Desde que tenhamos quadros de página gratuitos, tudo deve estar na lista de grupos de trabalho ou na lista livre." Não. A lista de espera é considerada "disponível", mas até que alguém precise dessa RAM, suas páginas são usadas para dois tipos diferentes de caches.

A segunda pergunta (formatação de lista automática estúpida continua começando em "1" aqui): Isso é bastante. Você excluiu seu arquivo de paginação?

A terceira pergunta: primeiro, tenha em mente que há uma lista de conjuntos de trabalho para cada processo, não apenas um. E cada um tem seu próprio "limite". Quando os limites estão sendo impostos (eles não são, se houver bastante RAM livre), o processo precisa abrir mão de uma página para cada nova página em que ela falha. Há também um processo de recuperação de conjunto de trabalho que tenta encolher por muito tempo. processos ociosos.

Quando um processo perde uma página, ele entra na lista modificada se foi tocado com um operando no estilo "modificar" enquanto estava no conjunto de trabalho, ou na lista de espera, caso contrário. Se o processo posteriormente falhar na página antes de ser atribuído a algum outro uso ou processo, ele poderá ser trazido de volta ao conjunto de trabalho do processo sem ir ao disco para ele. (Esse é um exemplo comum de falha de página "soft".) Dessa forma, essas listas formam uma espécie de extensão comum a todo o sistema para os conjuntos de trabalho de todos os processos. Mas tudo na lista de espera ainda é contado como parte da memória "Disponível", porque pode ser usado por qualquer outro processo imediatamente - a anotação deve ser gravada no disco.

Começando com o Vista, há um novo conceito chamado prioridade de memória. Páginas na lista de espera que são de baixa prioridade podem ser reatribuídas para uso pelo novo cache de arquivos proativo, SuperFetch. Mas isso não custa nenhuma RAM "disponível" porque ainda está na lista de espera. (O antigo cache reativo ainda está lá; ele costumava fazer parte do conjunto de trabalho do sistema; a partir do Windows 7 ele tem o seu próprio.)

Esta é apenas a ponta do iceberg. O capítulo Mm do Windows Internals tem 200 páginas, o suficiente para um pequeno livro por si só. Mas se você realmente quer entender essas coisas, não existe um substituto.

    
por 06.08.2014 / 20:45