Criação de perfil dos manipuladores de funções definidas pelo usuário no Snowpark Python¶
Você pode descobrir quanto tempo ou memória foi gasto na execução do código do manipulador usando o criador de perfil do código integrado. O criador de perfil gera informações que descrevem quanto tempo ou memória foi gasto na execução de cada linha do manipulador.
Usando o criador de perfil, você pode gerar relatórios que se concentram em um dos seguintes itens de cada vez:
Quanto tempo por linha, que mostra quantas vezes uma linha foi executada, duração da execução etc.
Quantidade de uso de memória por linha, que mostra a quantidade de memória consumida por linha.
O criador de perfil salva o relatório gerado em uma tabela de eventos interna. Você pode recuperar os resultados usando uma função designada para acessar a tabela.
Nota
A criação de perfil gera uma sobrecarga de desempenho para execução do Python e pode afetar o desempenho da consulta. Ele se destina a desenvolvimento e testes e não deve ser ativado em cargas de trabalho de produção contínua.
Privilégios obrigatórios¶
Para gerenciar e usar os dados dos resultados do criador de perfil, que são armazenados na tabela de eventos SNOWFLAKE.LOCAL.PROFILER_EVENTS_RAW, você deve usar as seguintes funções:
Função do aplicativo |
Notas |
|---|---|
PROFILER_EVENTS_ADMIN |
Necessária para gerenciar dados na tabela de eventos em que os dados do criador de perfil são armazenados, inclusive para selecionar, truncar ou descartar registros. |
PROFILER_USER |
Necessária para ler os resultados do criador de perfil da tabela de eventos. |
Para obter mais informações sobre como conceder uma função de aplicativo, consulte GRANT APPLICATION ROLE. O exemplo a seguir usa a função ACCOUNTADMIN para conceder a função de aplicativo PROFILER_USER a um usuário.
Limitações¶
Pode levar de 15 a 20 segundos para que os resultados do criador de perfil fiquem prontos após a execução da consulta.
A saída do criador de perfil não será salva se houver falha na execução da UDF.
Não há suporte para criação de perfil recursiva. Somente as funções de nível superior dos módulos especificados são analisadas. As funções definidas dentro de funções não têm o perfil criado.
Não há suporte para criação de perfil de módulos de terceiros.
O suporte para criação de perfil de UDFs criadas no lado do cliente usando a API
snowflake.snowparknão está disponível.As funções Python executadas em paralelo por meio do
joblibnão são analisadas.UDTFs não são suportados.
O tempo é medido no horário local, não no horário da CPU.
Uso¶
Depois de configurar o criador de perfil, você poderá usá-lo simplesmente executando a UDF para gerar a saída do criador de perfil. Depois que a UDF é executada, a saída do criador de perfil é gravada em uma tabela de eventos interna. Você pode buscar a saída do criador de perfil usando uma função do sistema.
Siga estas etapas em seu código para configurar e usar o criador de perfil:
Ative o criador de perfil e defina em que o relatório de perfil deve se concentrar.
Execute a UDF.
Visualize a saída de criação de perfil.
Como habilitar o criador de perfil especificando seu foco¶
Para habilitar o criador de perfil, defina um dos seguintes parâmetros de sessão:
Nota
A criação de perfil gera uma sobrecarga de desempenho para a execução do Python. Você deve criar o perfil do seu código durante o desenvolvimento e o teste. Não habilite a criação de perfil em cargas de trabalho de produção contínua.
Especificando o código para criação de perfil¶
Por padrão, os métodos de perfis do criador de perfil definidos em linha com a declaração da UDF. Em outras palavras, o criador de perfil cria o perfil de todos os métodos definidos no manipulador.
Para o seguinte exemplo de UDF, o criador de perfil criará o perfil dos métodos handler e helper.
Especificar o código externo para o perfil¶
Você pode especificar que o criador de perfil deve criar o perfil do código do manipulador definido fora da declaração da UDF, como um código importado de uma área de preparação.
Para especificar o código externo para criação de perfil, defina o valor do parâmetro de sessão PYTHON_UDF_PROFILER_MODULES como uma lista separada por vírgulas dos módulos que contêm o código.
O criador de perfil inclui os módulos especificados na saída de criação de perfil quando você executa uma UDF que os importa.
O código no exemplo a seguir mostra uma UDF que importa um código dos módulos especificados:
Executar a função definida pelo usuário¶
Depois que você habilitar o criador de perfil, execute sua função definida pelo usuário (User-Defined Function, UDF) para iniciar a criação de perfil.
Por padrão, o criador de perfil cria o perfil dos métodos definidos no seu módulo. Para obter mais informações sobre como registrar outros módulos de arquivos importados no perfil, consulte Especificando o código para criação de perfil.
Como exibir a saída de criação de perfil¶
Para visualizar a saída da criação de perfil, consulte a :doc:` tabela de eventos </developer-guide/logging-tracing/event-table-columns>` interna.
Os resultados da criação de perfil normalmente estarão disponíveis na tabela de eventos entre 15 e 20 segundos após o término da execução da UDF. Você pode acessar a saída usando a função do sistema de tabela GET_PYTHON_UDF_PROFILER_OUTPUT.
O código no exemplo a seguir mostra uma consulta aos resultados do criador de perfil na tabela de eventos. O query_id especificado como argumento é o ID da consulta da UDF para a qual a criação de perfil foi habilitada.
Resultados do perfil¶
Ao visualizar os resultados do criador de perfil, você verá um relatório diferente dependendo se especificou a criação de perfil para um relatório de linha ou de memória.
A saída do criador de perfil de memória terá a seguinte aparência:
A saída do criador de perfil de linha terá a seguinte aparência: