Partilhar via


Visualização de cores

A Cores View mostra como a execução de threads foi mapeada para os núcleos do processador lógico (escolha Analyze>Concurrency Visualizer para iniciar o Concurrency Visualizer). Se você estiver escrevendo aplicativos de servidor, essa exibição pode ajudá-lo a otimizar o desempenho do cache usando afinidade de threads ou gerenciamento de pool de threads. Ele também pode ajudá-lo a examinar casos em que o uso de afinidade de thread pode ter agravado o problema da migração entre núcleos. A Visualização de Cores tem duas partes, um gráfico e uma legenda.

O gráfico mostra núcleos lógicos no eixo y e o tempo no eixo x. Cada thread no gráfico tem uma cor única para que você possa acompanhar seu movimento através dos núcleos ao longo do tempo. Você pode filtrar os threads neste gráfico selecionando-os na área de legenda.

A área da legenda tem uma entrada para cada cor no gráfico. Cada entrada mostra a cor e o nome do thread, o número de comutações de contexto entre núcleos, o número total de comutações de contexto e a porcentagem de comutações de contexto que ocorrem entre núcleos. A legenda é classificada pelo número de trocas de contexto entre núcleos, em ordem decrescente. Ele lista apenas os threads executados durante o intervalo de tempo exibido. A lista é atualizada ao aplicar zoom ou deslocar.

Legenda da Visualização de Cores

A legenda Cores View identifica cada thread por cor e nome. Inclui colunas que mostram contagens para trocas de contexto entre núcleos, trocas de contexto total e a percentagem de trocas de contexto que ocorrem entre núcleos. As linhas na legenda são classificadas pelo número de opções de contexto cross-core, em ordem decrescente.

Você pode selecionar linhas na legenda para filtrar os threads exibidos na linha do tempo. Somente os threads selecionados são mostrados na linha do tempo. Se nenhuma linha for selecionada, todas as linhas serão mostradas na linha do tempo.

Os switches de contexto entre núcleos custam mais em sobrecarga e desempenho do que os switches que permanecem no mesmo núcleo lógico. Durante as mudanças de contexto, os registos do processador são salvos e restaurados, o código do kernel do sistema operativo é executado, as entradas do buffer de translação lookaside são recarregadas e o pipeline do processador é esvaziado. As opções de contexto entre núcleos podem ser ainda mais caras do que outras opções de contexto porque os dados de cache não são válidos para esse thread em outro núcleo. Por outro lado, se um thread for alternado de contexto para o núcleo em que foi executado anteriormente, é provável que os dados úteis ainda estejam no cache. Quando as opções de contexto entre núcleos tiverem sido aumentadas por tentativas de gerenciar a afinidade de threads e o desempenho estiver degradado, considere se esse problema deve ser resolvido. Comece eliminando a afinidade de thread e, em seguida, observe o comportamento cross-core resultante.

A tabela a seguir descreve os elementos da legenda.

Elemento Definition
Nome da thread Mostra a cor do thread na linha do tempo dos núcleos anteriores e o nome desse thread.
Trocas de contexto entre núcleos O número de opções de contexto para um thread que também mudou de um núcleo lógico para outro. Ele não diferencia entre switches de contexto inter-core que passam de um die de processador para outro versus aqueles que permanecem no mesmo die.
Comutações de Contexto Totais O número total de trocas de contexto para uma thread específica durante o período de amostragem. Cada vez que uma thread muda de contexto (por exemplo, da execução para a sincronização), uma mudança de contexto é contada.
Percentagem de mudanças de contexto que cruzam núcleos Calculado como uma percentagem ao dividir o número de mudanças de contexto entre núcleos pelo número total de mudanças de contexto. Quanto maior esta porcentagem, maior o efeito geral da sobrecarga das alternâncias de contexto entre núcleos no desempenho do thread específico.

Linha do tempo do Cores View

Cada linha na linha do tempo representa um núcleo de processador lógico no sistema perfilado. Para cada linha, o eixo horizontal mostra qual thread estava a executar num processador lógico a um dado momento. Você pode passar o mouse sobre uma cor de interesse em uma linha do tempo para retornar uma dica de ferramenta que identifique o thread. Para ajudar na identificação do fio, a legenda na parte inferior da janela mostra o que cada cor representa. Use a ferramenta Zoom para aumentar e diminuir o zoom, clicando e arrastando ou pressionando CTRL e movendo a roda do mouse. A consistência do zoom é mantida ao alternar entre a Vista de Núcleos e a Vista de Threads.

Cores Ver núcleos lógicos

Cada nome de canal representa um dos núcleos lógicos que existem no sistema perfilado. A nomeação começa em 0 até ao número total de núcleos lógicos. Por exemplo, um sistema de quatro núcleos contará do núcleo lógico 0 ao núcleo lógico 3.

Ferramenta Zoom de visualização de núcleos

O controle Zoom é um controle deslizante que permite aumentar e diminuir o zoom na linha do tempo para que você possa se concentrar em áreas de interesse particular. Este controlo amplia o centro da vista atual, por isso ajuste a vista antes de aumentar o zoom.

Outras formas de aplicar zoom

  • Ampliar: arraste para selecionar uma área na visualização da linha do tempo. Quando se solta o botão do rato, a visualização da linha do tempo faz zoom sobre o intervalo selecionado.

  • Aumentar e diminuir o zoom: passe o cursor sobre a linha do tempo e pressione Ctrl enquanto move a roda do mouse.