Emissão de dados de métricas do código do manipulador¶
Para fazer seu procedimento ou sua UDF emitir dados de métricas, não é necessário adicionar nenhum código ao seu manipulador. O Snowflake gera os dados coletados em uma tabela de evento.
Como as métricas são medidas¶
Devido à diferença entre os ambientes de execução Java e Python, os dados de métricas coletados também são diferentes. Para obter informações de referência sobre os dados coletados, consulte a referência da coluna RECORD.
A seguir, descrevemos como os dados capturados correspondem ao ambiente de execução.
- Java:
Métricas de CPU e memória da Java Virtual Machine (JVM) são relatadas para cada ID de consulta.
Cada procedimento armazenado recebe sua própria JVM. A seguir são descritos os dados métricos coletados:
process.memory.usage: Quantidade de memória, em bytes, consumida pela execução JVM do manipulador do procedimento armazenado.process.cpu.utilization: Tempo total de CPU dividido pelo tempo em hora local por CPU lógica, medido como uma porcentagem onde 1,0 indica 100 por cento de utilização. Tempo total de CPU é o tempo total gasto em tarefas não ociosas.
Cada UDF Java e Scala chamada em uma consulta compartilha uma única JVM. Os valores métricos são agregados em cada função Java ou Scala na consulta. A seguir são descritos os dados métricos coletados:
process.memory.usage: Como usar memória, mostrado como a soma de todas as funções Java associadas chamadas na consulta.process.cpu.utilization: uso de CPU, mostrado como a média de todas as funções Java e Scala chamadas na consulta.
- Python:
Métricas de CPU e memória são relatadas para cada função ou procedimento Python.
Cada procedimento armazenado é executado em apenas um processo Python. A seguir são descritos os dados métricos coletados:
process.memory.usage: Quantidade de memória, em bytes, consumida pelo processo Python que executa o manipulador do procedimento armazenado.process.cpu.utilization: Tempo total de CPU dividido pelo tempo em hora local e por CPU lógica, medido como uma porcentagem onde 1,0 indica 100 por cento de uso. Tempo total de CPU é o tempo total gasto em tarefas não ociosas.
Cada UDF pode ser executada em vários processos de execução Python. Os valores são agregados em vários processos. A seguir são descritos os dados métricos coletados:
process.memory.usage: Como usar memória, mostrado como a soma de todos os processos Python associados a essa UDF.process.cpu.utilization: CPU relatada, mostrada como a média de todos os processos Python associados a essa UDF.
Exemplo em Python¶
Use as etapas a seguir para gerar dados de exemplo de métricas.
Defina o nível de métricas de sua sessão. O parâmetro
METRIC_LEVELcontrola se os pontos de dados de métricas de recursos autoinstrumentados devem ser emitidos para a tabela de evento. É possível definir o parâmetro comoNONEouALLe defini-lo no nível do objeto e da sessão. Para obter mais informações, consulte Definição de níveis para registro, métricas e rastreamento.Crie um procedimento armazenado.
Execução do procedimento armazenado
Quando a consulta for concluída, a exibição dos dados de métricas, conforme descrito em Visualização dos dados de métricas.