Por que o Windows 7 não registra detalhes da falha quando o arquivo de paginação é separado da unidade do sistema operacional, e posso fazer algo sobre isso?

5

Eu tenho um disco rígido secundário (um dispositivo físico separado, não uma partição lógica) especificamente dedicado para o arquivo de paginação de memória virtual. A unidade é 3,5x maior que a minha RAM, então é muito grande.

Quando eu configuro a memória virtual do Windows 7 para colocar o arquivo de paginação neste segundo disco rígido e não a mesma unidade que o sistema operacional, estou avisado,

If you disable the paging file or set the initial size to less than 800 megabytes and a system error occurs, Windows might not record details that could help identify the problem. Do you want to continue?

Então, em outras palavras, se eu obtiver uma Tela Azul da Morte, não serei capaz de investigar o motivo, só porque coloquei meu arquivo de paginação em um local mais eficiente.

A melhor explicação que posso encontrar na pesquisa na Web é que o Windows simplesmente não quer fazer despejos de erros em uma unidade separada do local do sistema operacional. Alguém pode me dar uma explicação menos absurda para isso?

Eu não quero ter que dizer ao Windows: "Claro, vá em frente e continue gerenciando um arquivo de paginação na unidade principal," apenas para que eu possa obter um despejo de depuração, como totalmente derrota o propósito de um arquivo de paginação fisicamente separado. Existe uma solução para ter meu arquivo de paginação em uma unidade separada e ainda obter despejos de erros?

    
por Aufgeschissener Kunde 01.04.2017 / 21:04

4 respostas

3

Esta resposta é para a segunda parte da pergunta do OP - "posso fazer algo sobre isso?" Sim!

O Windows Vista e versões posteriores permitem que você especifique algo chamado "Arquivo de Dump Dedicado". (Eu vou usar DDF para breve).

Pense nisso como um arquivo de paginação, mas o sistema operacional foi avisado para nunca usá-lo para um arquivo de paginação (mantendo assim a E / S do seu arquivo de paginação real em sua unidade de paginação). Mas porque é "como um arquivo de paginação" o sistema operacional pode usá-lo para armazenamento temporário das informações de despejo no tempo BSOD. Após a reinicialização, ele será copiado para o arquivo de despejo especificado da maneira normal.

Além disso, o DDF nem precisa estar na sua partição de inicialização! Pode estar em "qualquer volume local que possa suportar um arquivo de paginação". (Isso elimina unidades removíveis, como qualquer coisa em USB e armazenamento em cluster do Windows.)

A configuração é fácil, mas não há interface do usuário, portanto, é necessário que o registro seja refinado.

Na chave de registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\CrashControl , crie um valor chamado DedicatedDumpFile do tipo REG_SZ. Configure a string para o caminho completo para onde você deseja que o DDF seja. Você não precisa pré-criar o arquivo sozinho. Por exemplo, C:\DUMPTEMP.SYS

Por padrão, o sistema operacional definirá seu tamanho para RAM + 256 MB. Você pode especificar o tamanho manualmente com outro valor de registro na mesma chave: Nome do valor DumpFileSize , tipo REG_DWORD, valor = o tamanho desejado em megabytes . E esses seriam "megabytes binários" no estilo da Microsoft. Então, se você quer que ele seja "4 GB", na verdade, "4 GiB", você deve usar 1024 para o valor aqui.

Mais informações estão em este artigo do MSDN .

Enquanto estou aqui, no entanto, eu me sentiria negligente se não tivesse apontado que "um arquivo de paginação fisicamente separado" geralmente faz pouca diferença a menos que você esteja acessando muito ... e se você estiver, seria muito mais eficaz para adicionar RAM.

Todos os exe's, dll e outros arquivos mapeados que todos os seus processos estão usando? Esses são, na verdade, arquivos de paginação também! Portanto, mover seu arquivo de paginação para outra unidade isola apenas a E / S de paginação desse arquivo. Seu sistema ainda estará paginando e, em alguns casos, todos os outros arquivos mapeados na memória em sua unidade do sistema operacional.

Da mesma forma, desabilitar o seu arquivo de paginação não elimina a paginação do disco (e certamente não desativa a memória virtual) - elimina apenas um dentre os vários arquivos centenas dos quais as páginas do SO.

Mover seu único arquivo de paginação para um disco por si só, no entanto, permite que você use os contadores de desempenho de E / S de disco para essa unidade para descobrir quanto E / S do arquivo de paginação seu sistema está realmente fazendo. Não há outra maneira de fazer isso, já que os contadores do PerfMon, como "E / Ss de leitura de página", incluem a E / S de leitura da página em todos esses arquivos mapeados na memória, como exe e dll.

    
por 20.06.2017 / 03:26
3

Acredito que o motivo é ter uma chance maior de criar um despejo de memória confiável. No momento do BSOD, o sistema está em um estado instável e é desconhecido quanto à causa raiz ou suas implicações completas. É claro que o sistema não está em posição de fazer tais julgamentos pelo mesmo motivo que não se pode confiar em um psiquiatra para julgar seu próprio estado mental.

Assim, ao fazer um despejo de memória, é importante manter as coisas o mais simples possível. Afinal, a causa raiz do BSOD pode estar no próprio sistema de arquivos. Por esse motivo, o despejo de memória é gravado no arquivo de paginação na unidade do sistema em vez de em um arquivo recém-criado. Eu acredito que isso é feito ignorando o sistema de arquivos. Escrever em um arquivo de paginação em outra unidade complicaria isso. Se alguma coisa der errado, outros arquivos ou o próprio sistema de arquivos podem estar corrompidos e piorar o problema.

Durante a reinicialização após o BSOD, o sistema é considerado em um estado estável e o despejo de memória é copiado do arquivo de paginação para seu destino final. O arquivo de paginação pode então retomar sua função normal.

    
por 01.04.2017 / 21:38
0

Você lamentavelmente interpretou erroneamente a mensagem de erro. Diz:

If you disable the paging file or set the initial size to less than 800 megabytes [~snip~]

... enquanto você interpreta como:

If you put the page file on another drive [~snip~]

Como você conseguiu do primeiro para o segundo? Faça a si mesmo esta pergunta: Você está desabilitando o arquivo da página ou definindo seu tamanho para menos de 800 megabytes? A resposta é: Inferno, não! Você está movendo para outra unidade .

O Windows fornece esta mensagem de aviso, mesmo que você configure primeiro um arquivo de paginação em outra unidade, porque você sempre pode voltar e desfazê-lo.

    
por 02.04.2017 / 11:50
-1

Se eu obtiver uma Tela Azul da Morte, não serei capaz de investigar por que

just because I put my paging file at a more efficient location.

Esta afirmação está incorreta.

Você pode configurar o local do arquivo de despejo independentemente do local do arquivo de paginação.

  1. Iniciar > "Painel de controle" > "Sistema".

  2. Clique em "Configurações avançadas do sistema".

  3. Clique na guia "Avançado".

  4. Na seção "Inicialização e recuperação", clique em "Configurações".

  5. Na seção "Write debugging information", selecione o tipo de dump desejado e a localização "Dump file" (que pode estar em qualquer disco que você escolher).

    enter image description here

Notas:

  • Independentemente de qualquer configuração de arquivo de página ou arquivo de despejo, as informações básicas de BSOD serão gravadas no log de eventos do sistema (se configurado para isso)

  • O arquivo de despejo pode ser usado para investigar a causa do BSOD.

Outras leituras

por 02.04.2017 / 13:04