O PerfView é uma ferramenta de análise de desempenho gratuita que ajuda a isolar os problemas de desempenho da CPU e de desempenho relacionados à memória. É uma ferramenta do Windows, mas também possui algum suporte para analisar dados coletados em máquinas Linux. Ele funciona para uma ampla variedade de cenários, mas possui vários recursos especiais para investigar problemas de desempenho no código escrito para o tempo de execução .NET.
Se você não está familiarizado com o PerfView, existem tutoriais em vídeo do Perfview. Além disso, o blog de Vance Morrison fornece uma visão geral e iniciando informações.
Consulte a página de download do Perfview para obter o link e as instruções para baixar a versão atual do Perfview.
O PerfView requer .NET Framework 4.7.2 ou posterior, que está amplamente disponível para todas as versões suportadas do Windows.
O PerfView é construído em uma biblioteca chamada microsoft.diagnostics.tracing.traceEvent, que sabe como coletar e analisar os dados de eventos para o Windows (ETW) e os dados do EventPipe (.NET Core Trace). Portanto, se houver alguma informação que o PerfView coleta e processos que você gostaria de se manipular programaticamente, você provavelmente estaria interessado na documentação da biblioteca TraceEvent
Veja o documento dos cenários para determinar qual é a melhor opção para o que você está tentando fazer.
O Guia do Usuário do Perfview faz parte do próprio aplicativo. Além disso, você pode clicar no link do guia de usuários para ver o arquivo de origem HTML do GitHub renderizado no seu navegador. Você também pode simplesmente baixar o PerfView usando as instruções acima e selecionar o item de menu Ajuda -> Guia do Usuário.
Quando você tiver dúvidas sobre o PerfView, sua primeira reação deve ser pesquisar o guia dos usuários (Ajuda -> Guia do Usuário) e veja se você já pode encontrar a resposta. Se isso não funcionar, você pode fazer uma pergunta criando um novo problema de perfuvie. Declare sua pergunta sucintamente no título e, se necessário, forneça detalhes no corpo do problema, existe uma etiqueta de problemas chamada 'pergunta' que você deve usar também que marca seu problema como uma pergunta em vez de algum relatório de bug. Se a pergunta for específica para um rastreamento específico (*.etl.zip arquivo), você poderá arrastar esse arquivo para o problema e ele será baixado. Isso permite que aqueles que procuram questões reproduzem seu ambiente e dão respostas muito mais detalhadas e úteis.
Observe que, depois de responder sua pergunta, se é provável que o problema seja comum, considere fortemente atualizar a documentação para incluir as informações. A documentação é praticamente apenas um arquivo https://github.com/microsoft/perfview/blob/main/src/perfview/supportfiles/usersguide.htm. Você precisará clonar o repositório e criar uma solicitação de tração (consulte OpenSourceGitWorkFlow para obter instruções para configurar e criar uma solicitação de tração.
Os bugs de relatórios funcionam praticamente da mesma maneira que fazer uma pergunta. É muito provável que você queira incluir o arquivo *.etl.zip necessário para reproduzir o problema, bem como qualquer etapa e o comportamento indesejável resultante.
Se você deseja apenas fazer uma investigação de desempenho, não precisa criar o PerfView. Basta usar o da página de download da Perfview. No entanto, se você deseja novos recursos ou apenas deseja contribuir com o PerfView para melhorar (consulte os problemas das coisas que as pessoas desejam), você pode fazer isso seguindo o restante dessas instruções.
A única ferramenta que você precisa para construir o PerfView é o Visual Studio 2022. O Visual Studio 2022 Community Edition pode ser baixado gratuitamente e tem tudo o que você precisa para buscar o PerfView no Github, construir e testá -lo. Esperamos que você baixe o Visual Studio 2022 Community Edition se ainda não possui o Visual Studio 2022.
Na sua instalação do Visual Studio, você precisa garantir que você tenha as seguintes cargas de trabalho e componentes instalados:
Um arquivo .vsconfig está incluído na raiz do repositório que pode ser usado para instalar os componentes necessários. Ao abrir a solução no Visual Studio, ele solicitará que você instale quaisquer componentes que ache que estão faltando na sua instalação. Como alternativa, você pode importar o .vsconfig no instalador do Visual Studio.
Se você receber algum erro compilando os projetos EtwclrCompiler, é provável que você não tenha o Windows 10 SDK instalado ou não possui os LIBs mitigados do Spectre. Consulte a seção Solução de problemas para obter mais informações.
O primeiro passo para começar o código -fonte do Perfview é clonar o repositório do Perfview Github. Se você já está familiarizado com o funcionamento do Git, Github e Visual Studio 2022 GIT, você pode pular esta seção. No entanto, se não, a configuração de um repositório local do GitHub com o documento Visual Studio 2022 o levará através do básico de fazer isso. Tudo o que assume é que você tem o Visual Studio 2022 instalado.
O PerfView é desenvolvido no Visual Studio 2022 usando os recursos através do C# 7.3.
O arquivo de solução é perfview.sln. Abrir este arquivo no Visual Studio (ou clicar duas vezes nele no Windows Explorer) e selecionar a solução Build -> Build, construirá. Você também pode criar a versão que não é de debug a partir da linha de comando usando msbuild ou o arquivo Build.cmd na base do repositório. A compilação segue as convenções padrão do Visual Studio e o arquivo perfuviex.exe resultante acaba em src/perfview/bin/ buildtype /perfview.exe. Você só precisa implantar este exe para usá -lo.
A solução consiste em vários projetos, representando DLLs de suporte e o principal exe. Para executar o PerfView no depurador , você precisa garantir que o 'projeto de inicialização' esteja definido para o projeto 'Perfview' para que ele inicie o exe principal. Se o projeto Perfview no Solution Explorer (à direita) não estiver em negrito, clique com o botão direito do mouse no projeto Perfview e selecione 'Definir como projeto de inicialização'. Depois de fazer isso 'Start DepinGing' (F5) deve funcionar.
Você deseja implantar a versão 'Release' em vez da versão 'Debug' do Perfview. Assim, primeiro defina sua configuração de compilação como 'Release' (janela de texto na barra de ferramentas superior ou clique com o botão direito do mouse no arquivo .sln -> Gerenciador de configuração -> Configuração da solução ativa). Próximo Build (Build-> Build Solution (Ctrl-Shift-B)). O resultado será que no diretório Src PerfView Bin Net462 Release haverá, entre outras coisas, um perfview.exe. Este arquivo é tudo o que você precisa implantar. Basta copiá -lo para onde você deseja implantar o aplicativo.
Uma das coisas incomuns sobre o Perfview é que ele incorpora suas DLLs de suporte ao próprio exe, e elas são descompactadas no primeiro lançamento. Isso significa que existem dependências complicadas na construção que não são típicas. Você verá erros que certas DLLs não podem ser encontradas se houvesse problemas de construção no início da construção. Normalmente, você pode corrigir isso simplesmente fazendo uma construção normal (não limpa), pois o arquivo ausente estará presente na última compilação. Se isso não consertar as coisas, veja se a DLL está sendo procurada realmente existe (se o fizer, a reconstrução deve corrigi -lo). Pode fazer sentido descer os projetos um por um e construí -los individualmente para ver qual falha 'primeiro'.
Outra coisa incomum sobre o Perfview é que ele inclui um mecanismo de extensão completo com amostras. Esse mecanismo de extensões é o projeto 'global' (chamado assim, porque é a extensão global cujos comandos não têm um 'escopo' explícito) e precisa se referir ao PerfView para resolver algumas de suas referências. Assim, você terá muitos problemas 'não encontrados' no projeto 'global'. Isso pode ser ignorado até que você obtenha todas as outras partes da construção funcionando.
Um dos invariantes do repositório é que, se você estiver executando o Visual Studio 2022 e simplesmente sincroniza e construa o arquivo perfview.sln, ele deve 'apenas trabalhar'. Se isso não acontecer, e o conselho acima não ajuda, precisamos corrigir o repositório ou atualizar os conselhos acima. Portanto, é razoável abrir um problema do GitHub. Se você fizer isso, o objetivo é corrigir o problema, o que significa que você deve colocar informações suficientes no problema para fazer isso. Isso inclui exatamente o que você tentou e quais foram as mensagens de erro.
Você também pode criar o PerfView a partir da linha de comando (mas ainda precisa do Visual Studio 2022 instalado). É um processo de duas etapas. Primeiro, você deve restaurar todos os pacotes Nuget necessários, depois faz a própria construção. Para fazer isso:
Se você receber um erro "MSB8036: o Windows SDK versão 10.0.17763.0 não foi encontrado", ou você recebe um erro 'Assert.h' não encontrado, ou, francamente, qualquer erro associado à criação das DLLs ETWCLRProfiler, deve garantir que você tenha o Windows 10 SDK instalado. Infelizmente, essa biblioteca tende a não ser instalada mais com o Visual Studio, a menos que você o peça explicitamente. Para corrigi -lo, inicie o instalador do Visual Studio, modifique a instalação e procure no desenvolvimento da área de trabalho C ++ e verifique se a opção Windows SDK 10.0.17763.0 está selecionada. Caso contrário, selecione e continue. Em seguida, tente criar o Perfview novamente.
Se você receber um erro "MSB8040: bibliotecas mitigadas do Spectre forem necessárias para este projeto", modifique sua instalação do Visual Studio para garantir que você tenha o componente MSVC v143-vs 2022 C ++ X64/X86 Mitigated Libs (mais recente) 'instalado.
O PerfView possui vários projetos *.Test que têm testes automatizados. Eles podem ser executados no Visual Studio selecionando o teste -> Executar -> TODOS OS TESTES MENU ITEM. Para obter os resultados mais completos (e certamente se você pretende enviar alterações), precisará executar esses testes com uma construção de depuração do produto (consulte a janela de texto na barra de ferramentas superior, diz 'Debug' ou 'Release'). Se os testes falharem, clique com o botão direito do mouse no teste falhado e selecione o item de menu de contexto 'Debug' para executar o teste sob o depurador para descobrir o que deu errado.
Esse repositório usa o Azure DevOps para criar e testar automaticamente solicitações de tração, o que permite à comunidade visualizar facilmente os resultados da construção. A construção e o status refletidos aqui é o status do Azure DevOps da ramificação principal .
️ As compilações produzidas pelo Azure DevOps CI não são consideradas construções oficiais do Perfview e não são assinadas ou validadas de outra forma para segurança ou segurança de forma alguma. Essa integração de construção é fornecida como uma conveniência para os participantes da comunidade, mas não é endossada pela Microsoft, nem é considerada um canal de liberação oficial de forma alguma. Para obter informações sobre compilações oficiais, consulte a página do Perfview Download.
Você pode obter muito valor da base do código -fonte simplesmente podendo criar o código, depurar por ele ou fazer um recurso local e especializado, mas o poder real do software de código aberto acontece quando você contribui para a base de código compartilhada e, portanto, ajuda a comunidade como um todo. Embora incentivemos isso, é necessário significativamente mais esforço de sua parte . Se você estiver interessado em intensificar, consulte o PerfView Contribution Guide e o Perfview Coding Standards antes de iniciar.
O código é dividido em várias seções principais: