A alteração do registro DisablePagingExecutive tem algum efeito real?

9

Em várias máquinas no passado, em diferentes versões do Windows (2000, XP e no Vista), habilitei o DisablePagingExecutive para tentar melhorar o desempenho. Em cada caso, e eu tenho muita memória, e especialmente no caso atual. No entanto, depois de ativar esse ajuste e reinicialização do registro, verifiquei o gerenciador de tarefas depois de um tempo e ainda mostro uma grande parte do kernel paginada em disco, mesmo com 2 GB de memória física livre.

Alguém já usou esse tweak com sucesso? Sempre? Talvez esteja visualizando o indicador errado ao verificar o gerenciador de tarefas (guia Desempenho -> seção "Memória do kernel"), mas gostaria de impedir que o Windows pagine tudo o que puder no disco, especialmente considerando a quantidade de memória fornecida em desktops hoje em dia. Parece que uma opção "Não pagine no disco a menos que exista pressão extrema na memória" deve existir - existe uma?

SqlRyan
fonte

Respostas:

13

Há uma enorme quantidade de confusão na internet em relação a essa função. A configuração afeta apenas uma parte do kernel conhecida como executivo e, somente, as partes pagináveis. Existem outras partes do kernel que não são completamente afetadas por essa configuração.

A paginação do kernel funciona da mesma maneira que qualquer outra paginação. O código e os dados que são acessados ​​com frequência serão mantidos na RAM enquanto o restante permanecerá no disco - onde pertence. O sistema não removerá nenhuma parte do kernel da RAM, a menos que tenha encontrado um uso melhor para ele. A Microsoft dedicou uma enorme quantidade de pesquisas e testes aos sistemas de paginação.

No contexto do kernel, "Não paginado" significa código e dados que nunca podem ser paginados em nenhuma circunstância. "Paginado" significa código e dados que PODEM ser paginados, se necessário. Quanto é realmente paginado é impossível dizer pelo Gerenciador de Tarefas. Uma parte do código que é paginado nunca foi lida do disco, porque ainda não era necessária. Nem todo o kernel é acessado com freqüência. Você não deve esperar que os números paginados e não paginados sejam afetados pela configuração em questão.

Nota: Quando o código é paginado, normalmente não é copiado para o arquivo de paginação. Isso não é necessário, pois pode ser simplesmente recarregado dos arquivos originais. Isso se aplica à maioria dos códigos, não apenas ao kerenl.

Com uma quantidade razoável de RAM, a configuração não fará praticamente nada. Simplesmente impede que o sistema pagine dados que não desejava paginar de qualquer maneira.

Larry Miller
fonte
4

Não sei se você percebeu isso, mas as falhas de página são o mecanismo que o Windows usa para carregar o código executável. Assim, por exemplo, uma DLL é mapeada para a memória virtual e as falhas de página são usadas para fazer o carregamento real do disco, conforme necessário. O arquivo de paginação não está envolvido nisso.

Então, muito do que você pensa como 'paginado em disco' pode ser algo que estava em disco em primeiro lugar.

Will Dean
fonte
Não percebi isso e faz sentido, embora não pense que responda à minha pergunta. Se eu desabilito a paginação do kernel do Windows, por que meu gerenciador de tarefas continua a me dizer que 75% dele são paginados (total de 400 MB do kernel com 275 MB paginados)? Isso também não aborda minha pergunta sobre por que o Windows parece ser tão pesado quando ainda há vários GB de RAM livre.
SqlRyan
11
Você está lendo 'paginada' como 'memória gravável que foi paginada', enquanto que no contexto da memória do kernel, 'paginada' significa 'pode ser paginada' e 'não-paginável' significa 'nunca será paginada -Fora'. O último é importante para a programação do KM quando você precisa de memória em circunstâncias em que o sistema de paginação não pode operar (manipuladores de interrupção, por exemplo).
Will Dean
No contexto dos termos que você está usando (eu não sou desenvolvedor de kernel, por isso não conheço melhor), esperaria que essa alteração no registro marque todo o kernel como "não paginado" (o que significa " nunca ser paginado "), e não é isso que ele faz. Eu só queria ver se os outros tinham a mesma expectativa que eu ou se eu estava interpretando mal o que essa mudança deveria fazer.
SqlRyan 29/05
3

Apenas para adicionar um uso adicional dessa configuração: ela é necessária ao xperfcaminhar pela pilha.

http://blogs.msdn.com/b/pigscanfly/archive/2009/08/06/stack-walking-in-xperf.aspx

Desativar executivo de paginação

Para que o rastreamento funcione no Windows de 64 bits, você precisa definir a chave do Registro DisablePagingExecutive. Isso instrui o sistema operacional a não paginar os drivers do modo kernel e o código do sistema em disco, que é um pré-requisito para obter pilhas de chamadas de 64 bits usando o xperf, porque a movimentação de pilhas de 64 bits depende dos metadados nas imagens executáveis ​​e, em algumas situações, O código de caminhada da pilha xperf não tem permissão para tocar nas páginas paginadas.

Mais uma informação sobre a configuração. Esta citação pode ser encontrada na internet, não conheço sua fonte principal.

DisablePagingExecutive se aplica apenas ao ntoskrnl.exe. Não se aplica ao win32k.sys (muito maior que o ntoskrnl.exe!), Às partes pagináveis ​​de outros drivers, ao pool paginado e, é claro, ao cache do sistema de arquivos. Todos os quais vivem no espaço de endereço do kernel e são paginados em disco. Em sistemas com pouca memória, isso pode forçar o código do aplicativo a ser desnecessariamente paginado e reduzir o desempenho. Se você tiver RAM mais do que suficiente para sua carga de trabalho, sim, isso não prejudicará, mas, novamente, se você tiver mais do que suficiente para sua carga de trabalho, o sistema não estará paginando muito dessas coisas. Essa configuração é útil ao depurar drivers e geralmente é recomendada para uso apenas em servidores executando um conjunto limitado e conhecido de aplicativos

Assim, pode-se concluir que, além do xperfuso, seu benefício é obscuro: essencialmente, limita algumas coisas "quase aleatórias" da paginação e de uma reflexão mais aprofundada - consequentemente, faz com que outra coisa seja paginada com mais frequência.

Roland Pihlakas
fonte
2

O ajuste DisablePagingExecutive não interrompe a paginação, seu objetivo era impedir que o "Executivo" (ou seja, o próprio Kernel) fosse paginado e causando lentidão no sistema inteiro, não apenas aplicativos paginados individuais.

Você pode tentar desativar completamente a paginação removendo todos os arquivos de páginas nas Propriedades do Sistema (ou em HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Gerenciamento de Memória \ PagingFiles). Isso funciona bem para mim, mas as coisas ficam bastante desagradáveis ​​quando você fica sem memória física, e você deve ter um arquivo de paginação para depurar erros de INTERRUPÇÃO.

Froosh
fonte
Estou sem arquivo de paginação há alguns dias e funciona muito bem. O Windows 7 na verdade oferece sugestões de aplicativos que precisam de memória para matar quando começam a ficar com pouca carga.
Froosh 03/06/09
1

Os componentes no nível do sistema, como o kernel, o executivo e os drivers de dispositivo, podem alocar memória de dois conjuntos. Estes são o pool paginado, que pode ser paginado a critério dos gerenciadores de memória, e o pool não paginado que deve permanecer na RAM o tempo todo. O desenvolvedor decide de acordo com suas necessidades qual pool será usado. É recomendável que o pool paginado seja usado sempre que possível, pois isso permite ao gerente de memória do sistema flexibilidade máxima. Ambos os conjuntos são de tamanho limitado e, em sistemas de 32 bits, esses limites podem representar um problema. O pool paginado é consideravelmente maior. Se o conjunto não paginado for usado excessivamente, o limite de tamanho poderá ser atingido e isso causará alguns problemas sérios no sistema.

Os itens rotulados no Gerenciador de Tarefas como memória de kernel "Paginada" e "Não paginada" estão mostrando as alocações desses conjuntos. Não tem absolutamente nada a ver com o estado dinâmico de quanta memória é realmente paginada. A entrada de registro "DisablePagingExceutive" influencia o estado de paginação dinâmica de uma parte do pool paginado, portanto seus efeitos nunca serão mostrados pelo Gerenciador de Pedidos.

Larry Miller
fonte
1

Se você fizer uma alteração em uma configuração do sistema, precisará entender essas informações ou seu equivalente para saber que tipo de resultados uma alteração na configuração do sistema faz, onde os resultados podem ser positivos, neutros ou negativos em relação a performance do sistema.

O que você pode fazer é abrir o "Monitor de Recursos" no Windows. Vá para a ferramenta de pesquisa e procure 'Monitor de Recursos'. Ou abra a ferramenta de comando run (suponho que alguém que esteja lendo isso saiba como fazer isso) e digite 'resmon'.

Use esta ferramenta para monitorar todos os tipos de atividade do sistema, como atividade da CPU, atividade da memória e atividade do disco rígido. Se você ainda não está familiarizado com as informações que o 'Monitor de Recursos' contém, estude-o um pouco, pois você precisará familiarizá-lo para executar testes que ajudarão a medir o tipo de resultado que uma alteração em uma configuração do sistema faz.

A idéia básica é que você execute o 'Monitor de Recursos' quando o sistema do computador executa determinadas tarefas para medir os resultados relacionados ao desempenho que uma alteração nas configurações do sistema faz. Execute tarefas que usam os recursos do sistema que você está tentando testar o desempenho. Por exemplo, existem tarefas que podem testar o processador, a memória RAM, o (s) disco (s) rígido (s), a unidade do processador gráfico ou um dispositivo de rede. Use o google para descobrir como testar o desempenho dos recursos do computador que você deseja testar.

Se, por exemplo, você alterar a configuração do sistema, 'Desativar executivo de paginação', poderá executar um teste nos recursos do computador e usar o 'Monitor de recursos' para medir os tipos de resultados que a alteração gera (se houver alguma alteração).

Em seguida, faça uma comparação entre os dados e verifique se há diferenças significativas entre a configuração antiga do sistema e a nova configuração que você alterou.

Talvez você nem sempre precise usar o 'Monitor de recursos', pois alguns métodos de teste do desempenho dos recursos do sistema vêm com software que monitora e mede para você.

O ponto é que você deseja seguir um método sistemático para verificar se uma alteração faz alguma coisa no desempenho do seu sistema em relação às tarefas que você solicita que o computador execute.

Mude uma configuração. Teste para alteração de desempenho. Determine os resultados do teste. Com base nos resultados, decida se você alterará a configuração de volta para o que era, ou para outra coisa, ou deixe onde está. 1) Configuração 2) Teste 3) Resultados 4) Decisão.

Você pode usar esse método de dedução lógica para todos os tipos de ajustes de configuração do sistema, incluindo 'Desativar executivo de paginação'.

Tweaking feliz.

WestdoX
fonte
1

Tem muito! De muito boas informações sobre este post, fiquei impressionado. Notei que DisablePagingExecutive com um valor de um é melhor feito no primeiro site da área de trabalho após uma instalação limpa de qualquer versão do Windows do XP para o Windows 10, 32 bits a 64 bits (desde que haja memória RAM suficiente na placa-mãe), mas depois que o valor 1 for aplicado a DisablePagingExecutive, o mesmo valor também deverá ser feito no LargeSystemCache.

Também como mencionado acima, esses ajustes geralmente são feitos em servidores Windows, mas também são úteis na depuração.

Essas modificações são usadas por sua conta e risco; portanto, leve em consideração o que todos mencionaram acima. Também não faz mal ao google cada uma das chaves mencionadas que eram DisablePagingExecutive e 1 não me lembro de ter visto ... LargeSystemCache.

Verifique se você tem RAM suficiente. RAM insuficiente causa problemas no seu sistema com os quais você não deseja lidar e provavelmente causaria uma tela azul (bsod) no seu sistema.

4 GB de RAM serão o mínimo para o qual eu aplicaria esses ajustes acima e, se você não usar aplicativos intensos que utilizem muita memória RAM ou se fizer algum jogo, se fizer isso, é melhor deixá-los em paz.

(XP: pelo menos 256 mb de ram no mínimo)

Antes de fazer qualquer coisa no registro, é uma boa idéia fazer o backup em um dispositivo de armazenamento, em vez do disco rígido de sistemas operacionais ou de um armazenamento separado de QUALQUER tipo, para que você possa restaurar o registro, se necessário.

A informação acima de mim realmente cruza os T's e pontilha os i's.

                    Make sure to backup your system.
Smirk24
fonte