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.
Abra o WAC (Console de Avaliação do Windows) no menu Iniciar .
Abra o menu Opções e selecione Novo Trabalho...
Insira MemoryTest como o nome do trabalho.
Selecione Criar um trabalho personalizado.
Clique em Adicionar Avaliações.
- Adicione a avaliação volume de memória clicando no símbolo "+"
Clique na avaliação de Volume de Memória recém-adicionada para inserir a configuração de teste.
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.
Com a Execução Rápida selecionada, você tem duas opções:
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.)
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
No WAC, abra o menu Opções e selecione Abrir Resultados...
- Você também pode pressionar CTRL+R no teclado.
Clique no botão Procurar... .
Navegue até a pasta em que você armazenou a avaliação criada na Etapa 1.
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.
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.
Expanda a categoria Alocações Não Paginada do Driver clicando na seta à esquerda.
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.
Identifique o driver com o maior uso de memória.
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.
Expanda a categoria Processar Páginas Privadas clicando na seta à esquerda.
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:
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.
Abra o Gravador de Desempenho do Windows no menu Iniciar .
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.
Clique em Iniciar e aguarde alguns segundos.
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:
Inicie o Windows Performance Analyzer no menu Iniciar.
Abra o rastreamento ETL que você acabou de coletar (menu Arquivo , Abrir...).
Expanda o conjunto memória no Explorer do Graph.
Arraste e solte o grafo Conjunto de Residentes na guia Análise.
Seu modo de exibição deve ser semelhante a este:
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.
|
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:
|
Categoria da Página | O tipo de dados contido na página, conforme definido abaixo. Algumas das categorias possíveis são:
|
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.
Selecione a predefinição Processar Conjunto de Trabalho Privado .
Expanda o grupo MMList Ativo .
Concentre-se na categoria Ativa , pois é o que está afetando o uso de memória no momento.
As páginas em espera podem ser liberadas sob pressão de memória.
As páginas modificadas podem ser gravadas em disco e liberadas.
Classifique por tamanho clicando no cabeçalho da coluna Tamanho (MB ).
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.
Expanda os processos para examinar a Categoria de Página.
Agora você pode ver a composição do conjunto de trabalho do processo na figura a seguir.
As principais categorias devem ser VirtualAlloc ou Win32Heap, que analisaremos no Exercício 2.
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 .
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.