Partilhar via


Exercício 1 – Identificar processos com grandes conjuntos de trabalho

A metodologia usada para analisar os dados pode adotar várias abordagens e difere com base nas circunstâncias em que a investigação foi iniciada. Este exercício discute e apresenta algumas metodologias de exemplo, juntamente com as diferentes exibições apresentadas por vários arranjos de coluna.

Os dados chamados de Conjunto de Residentes são o conjunto de páginas que residem atualmente na memória física (RAM). O Conjunto de Residentes é um instantâneo do estado de memória atual no final de uma captura de rastreamento com o WPR (Gravador de Desempenho do Windows) ou a avaliação de Memória do Kit de Ferramentas de Avaliação. Não é possível coletar vários instantâneos em um único rastreamento.

Os Conjuntos de Residentes fornecem uma instantâneo holística e instantânea da composição de memória no sistema. As investigações sobre a análise do Conjunto de Residentes normalmente são feitas pelos seguintes motivos:

  • Para entender o uso de memória física, especialmente quando o uso de memória física é maior do que o esperado.

  • Para entender as fontes do conjunto de trabalho privado de processo, especialmente quando o conjunto de trabalho privado do processo é maior do que o esperado.

  • Problemas de capacidade de resposta do sistema devido à atividade de paginação.

Etapa 1: Coletar dados usando o Kit de Ferramentas de Avaliação

O Kit de Ferramentas de Avaliação do Windows contém um teste para medir o volume de memória após a inicialização. Você pode usar os resultados da avaliação de Volume de Memória para coletar uma linha de base do pré-carregamento do software de imagem. Muitos processos e serviços estão sempre em uso e recebem memória. Essa avaliação ajuda você a ver como drivers e aplicativos (que sempre são executados) afetam o processo de inicialização.

  1. Abra o WAC (Console de Avaliação do Windows) no menu Iniciar .

  2. Abra o menu Opções e selecione Novo Trabalho...

    1. Insira MemoryTest como o nome do trabalho.

    2. Selecione Criar um trabalho personalizado.

  3. Clique em Adicionar Avaliações.

    • Adicione a avaliação volume de memória clicando no símbolo "+"
  4. Clique na avaliação de Volume de Memória recém-adicionada para inserir a configuração de teste.

  5. Desmarque Usar configurações recomendadas e selecione Execução Rápida para a configuração.

    • A Execução Rápida permite que o teste seja concluído em um período menor em detrimento da precisão dos dados.

    Captura de tela do Console de Avaliação do Windows.

  6. Com a Execução Rápida selecionada, você tem duas opções:

    1. Empacote o trabalho para criar uma pasta que tenha todos os recursos de teste e copiá-lo para outro sistema de teste. (Clique no botão Pacote... no canto inferior direito para escolher essa opção.)

    2. Execute o trabalho diretamente no sistema. (Clique no botão Executar no canto inferior direito para escolher essa opção.)

      • Isso reinicia o sistema para coletar um rastreamento.

      • Esse teste pode levar cerca de 15 a 20 minutos para ser concluído.

    Queremos a opção Executar .

Etapa 2: Visualizar os resultados da avaliação do Volume de Memória usando WAC

Depois que a avaliação for concluída, você poderá abrir o arquivo XML de resultados que contém um resumo do uso de memória no sistema.

Etapa 2.1: Abrir o relatório de memória

  1. No WAC, abra o menu Opções e selecione Abrir Resultados...

    • Você também pode pressionar CTRL+R no teclado.
  2. Clique no botão Procurar... .

  3. Navegue até a pasta em que você armazenou a avaliação criada na Etapa 1.

  4. Abra a avaliação que você criou na Etapa 1.

    O relatório contém categorias diferentes para ajudá-lo a entender o driver e processar contribuições para o volume de memória geral.

    O relatório deve ter esta aparência.

    Relatório de exemplo do Console de Avaliação do Windows mostrando o uso de memória.

  5. Reserve um tempo para se familiarizar com o relatório examinando as categorias Páginas Privadas de Driver e Processo.

No exemplo anterior, 1487 MB de memória são usados de 4 GB de RAM física.

  • Memória em uso = Conjuntos de trabalho de processo + memória não paginada + páginas modificadas

  • Memória disponível = memória em espera + memória livre

No exemplo anterior, os maiores consumidores de uso de memória são alocações de driver com 267 MB para não paginação e 613 MB para páginas privadas de processo (conjuntos de trabalho privados).

Para obter mais informações sobre as métricas, consulte o tópico Resultados para a Avaliação do Volume de Memória no MSDN.

Etapa 2.2: Examinar alocações não paginada do driver

Essa métrica é semelhante às alocações paginada, exceto pelo fato de que essas alocações usam memória física que não pode ser paginada. Isso reflete a memória física fixada e, portanto, indisponível para memória paginada ou uso por outros processos e serviços. Adquirir muita memória não paginada reduz a quantidade de memória que a memória com backup pode usar.

  1. Expanda a categoria Alocações Não Paginada do Driver clicando na seta à esquerda.

  2. Expanda a categoria DriverLockedSystemPages .

    • Essa é a memória carregada na memória paginada e bloqueada pelo driver até que ela não seja mais útil.
  3. Identifique o driver com o maior uso de memória.

    Relatório de exemplo do Console de Avaliação do Windows mostrando o uso de alocação não paginada do driver.

Você pode influenciar essa métrica trocando drivers de hardware ou software que têm requisitos de memória mais baixos.

O fornecedor do driver tem a maior influência sobre essa métrica pela maneira como o driver é projetado. Procure grandes alocações de memória nos resultados apresentados no WAC. Além disso, os fornecedores de driver podem receber rastreamentos de desempenho (armazenados no mesmo diretório que os resultados da avaliação e podem ser analisados com o WPA) dessa avaliação para encontrar áreas de alocação de memória pesada que são candidatas a investigações sobre a redução do uso de memória.

Etapa 2.3: Examinar conjuntos de trabalho privados do processo

Os maiores usuários do volume de memória geral são aplicativos que podem estar sempre em execução em segundo plano sem o conhecimento do usuário. Para exibir a quantidade de memória que os processos usam, você pode usar a categoria Processar Páginas Privadas no relatório.

  1. Expanda a categoria Processar Páginas Privadas clicando na seta à esquerda.

  2. Expanda a categoria Ativo . A lista mostra os binários e o uso da memória ativa.

    Seu modo de exibição deve ser semelhante a este:

    Relatório de exemplo do Console de Avaliação do Windows mostrando o uso da memória do processo.

  3. Identifique o processo que usa mais memória.

Você pode influenciar essa métrica reduzindo o número de aplicativos "executar sempre", que são aplicativos na pasta Executar chave do Registro ou Inicialização . Analise o impacto dos aplicativos adicionados.

Os fornecedores de driver e software têm mais influência sobre essa métrica pela maneira como seu código é projetado. Procure grandes alocações de memória nos resultados apresentados no WAC. Além disso, os fornecedores de software podem receber rastreamentos de desempenho (armazenados no mesmo diretório que os resultados da avaliação) dessa avaliação para encontrar áreas de alocações de memória pesada que são candidatas a investigações sobre a redução do uso de memória. Análises cuidadosas de alocações, mesmo as pequenas, podem ajudar o desenvolvedor a encontrar alocações que se somam.

Etapa 3: Coletar dados do Conjunto de Residentes usando o WPR

Nas etapas 1 e 2, você aprendeu a coletar rastreamentos de memória usando a avaliação de Volume de Memória do Kit de Ferramentas de Avaliação . Essa avaliação pode capturar apenas um rastreamento para o cenário de inicialização. Você pode capturar rastreamentos para qualquer cenário (inicialização do aplicativo, navegação na Web etc.) usando o WPR (Gravador de Desempenho do Windows)

Siga estas etapas para coletar um rastreamento com dados do Conjunto de Residentes.

  1. Abra o Gravador de Desempenho do Windows no menu Iniciar .

  2. Selecione os perfis de gravação "Triagem de Primeiro Nível" e "Análise do Conjunto de Residentes ", mas mantenha os valores padrão para as outras opções.

  3. Clique em Iniciar e aguarde alguns segundos.

    Captura de tela da tela Registrar Informações do Sistema do Console de Avaliação do Windows mostrando a Gravação de Status não iniciada

  4. Clique em Salvar e salve o rastreamento ETL no disco.

Agora você tem uma instantâneo da composição de memória do sistema.

Etapa 4: Interpretar dados do Conjunto de Residentes usando o WPA

Siga este procedimento:

  1. Inicie o Windows Performance Analyzer no menu Iniciar.

  2. Abra o rastreamento ETL que você acabou de coletar (menu Arquivo , Abrir...).

  3. Expanda o conjunto memória no Explorer do Graph.

    Captura de tela da exibição do gerenciador de grafo do WPA.

  4. Arraste e solte o grafo Conjunto de Residentes na guia Análise.

Seu modo de exibição deve ser semelhante a este:

Captura de tela do WPA mostrando a exibição da guia análise.

Examine como os dados são apresentados. Aqui estão algumas definições das colunas mais úteis para executar a análise de nível superior:

Coluna Definição
MMList

A lista de gerenciamento de memória que contém as páginas.

  • Ativo – Páginas atualmente em um conjunto de trabalho privado de processo ou conjunto de trabalho de kernel.

  • Espera – páginas não modificadas na lista em espera. Eles fazem parte da memória disponível.

  • Modificado – processe páginas privadas ou com backup de arquivos que foram modificadas desde a última vez que foram mantidas no armazenamento permanente.

  • ModifiedNoWrite – páginas que foram modificadas, mas que não serão mantidas no armazenamento permanente.

  • Transição – páginas em transição entre listas.

Processo

O nome do processo que é o proprietário das páginas. Essas informações estão disponíveis apenas para páginas privadas de processo. Mesmo que não sejam compartilhadas, todas as páginas compartilháveis serão associadas ao processo "Desconhecido" (-1).

Descrição

O valor representado varia dependendo da categoria de página. Por exemplo:

  • Para imagens, drivers, arquivos etc., ele exibe o caminho e o nome completos do arquivo.

  • Para memória do pool , ele mostra o nome da marca do pool de driver.

Categoria da Página

O tipo de dados contido na página, conforme definido abaixo. Algumas das categorias possíveis são:

  • CopyOnWriteImage – processar páginas privadas criadas pela aplicação de patch de uma tabela de endereços de importação de imagens executáveis ou rebasing de um executável.

  • Driver – páginas de código para um driver.

  • DriverFile – páginas de código que foram lidas do executável do driver e mapeadas como dados.

  • DriverLockedSystemPage – páginas do modo kernel que são bloqueadas ou fixadas na memória, normalmente por drivers ou pelo kernel.

  • Imagem – Páginas de arquivos .dll e .exe carregados como imagens executáveis.

  • MapFile – Páginas de arquivos de dados ou imagens carregadas como dados.

  • NonPagedPool – Páginas que contêm dados para o pool de sistemas não paginável.

  • PagedPool – Páginas que contêm dados para o pool de sistemas paginável.

  • PFMappedSection – Páginas de seções mapeadas pela memória com o suporte do arquivo de página.

  • SystemPage – páginas que contêm entradas de tabela de página do sistema usadas para mapear páginas do sistema, como espaço de E/S, pilhas de kernel e listas de descritores de memória.

  • UserStack – Páginas que contêm os dados do modo de usuário para cada thread.

  • VirtualAlloc – Páginas alocadas pelas APIs VirtualAlloc.

  • Win32Heap – Páginas de heap.

Tamanho (MB)

O tamanho total das páginas agregadas em cada categoria.

Etapa 6: Identificar conjuntos de trabalho de processo que afetam o volume de memória

Os dados do Conjunto de Residentes podem ser exibidos de várias maneiras diferentes com base nas disposições da coluna na tabela de resumo. A tabela de resumo tem várias disposições de coluna predefinidas que você pode usar como pontos de partida para uma investigação.

  1. Selecione a predefinição Processar Conjunto de Trabalho Privado .

    Captura de tela da lista suspensa Conjunto de Trabalho Privado do Processo WPA.

  2. Expanda o grupo MMList Ativo .

    1. Concentre-se na categoria Ativa , pois é o que está afetando o uso de memória no momento.

    2. As páginas em espera podem ser liberadas sob pressão de memória.

    3. As páginas modificadas podem ser gravadas em disco e liberadas.

  3. Classifique por tamanho clicando no cabeçalho da coluna Tamanho (MB ).

  4. Identifique os processos com o maior uso. Você pode ver N/A e "Desconhecido (-1)" como nomes de processo.

    • N/A contém páginas não associadas a processos como memória do pool de driver.

    • "Desconhecido (-1)" contém páginas compartilháveis.

  5. Expanda os processos para examinar a Categoria de Página.

    1. Agora você pode ver a composição do conjunto de trabalho do processo na figura a seguir.

    2. As principais categorias devem ser VirtualAlloc ou Win32Heap, que analisaremos no Exercício 2.

    3. No exemplo a seguir, SearchIndexer.exe usa 21,7 MB de memória ativa por meio de alocações de Heap e 12,4 MB por meio de chamadas à API VirtualAlloc .

    Tabela de exemplo mostrando o uso do processo.

Concentre-se em processos de terceiros e determine se eles precisam ser iniciados na inicialização como parte do software pré-carregado. Como desenvolvedor, você deve analisar as alocações dinâmicas que seu processo está fazendo para entender onde as otimizações podem ser feitas.