Há várias situações em que a coleta de perfis pode não ocorrer como esperado:
- A coleta de perfis falha devido a um erro interno. Se isso acontecer, a API
ProfilingResult
vai informar sobre os erros. - A coleta de perfis falha devido à limitação de taxa. Para mais informações, consulte Como funciona a limitação de taxa.
- A coleta de perfil é bem-sucedida, mas o app não é notificado imediatamente.
Isso pode acontecer se o app falhar durante longas coletas de perfil. Se o app for fechado, o sistema vai parar e salvar o perfil automaticamente. O app é
informado sobre o perfil coletado quando é reiniciado e registra um
listener geral com
ProfilingManager
.
Como a limitação de taxa funciona
O ProfilingManager
inclui um limitador de taxa para apps individuais e para o sistema inteiro. O limitador de taxa impede que os apps usem muitos recursos do sistema gravando muitos perfis, porque uma sessão de criação de perfil completa usa muitos recursos.
Os limitadores de taxa do app e do sistema atribuem um custo a cada tipo de perfil coletado, porque alguns perfis exigem mais recursos do que outros. O limitador de apps controla quanto um app individual pode gravar com base no custo total. No entanto, o limitador do sistema controla o custo total de todos os perfis registrados por todos os apps.
O limitador de taxa define um custo total que cada app pode usar (esse custo é o mesmo para todos os apps). Cada perfil usa uma parte desse custo total, dependendo do tipo.
O limitador de taxa usa três períodos:
- Por hora:há um custo máximo permitido por hora.
- Por dia:há um custo máximo permitido por dia.
- Por semana:há um custo máximo permitido por semana.
O limitador de taxa define um custo total que pode ser usado em cada um desses períodos. Por exemplo, um app pode ter permissão para gravar X perfis por hora, Y por dia e Z por semana. Se o app atingir o limite em qualquer um desses períodos,
as solicitações de perfil futuras vão resultar em um erro ERROR_FAILED_RATE_LIMIT_PROCESS
.
Esses períodos funcionam de maneira semelhante para a limitação de taxa no nível do sistema. No entanto, o limitador de taxa do sistema é um limite global compartilhado por todos os apps. Esse limite é definido separadamente das cotas individuais de apps, mas todos os perfis contribuem para ele, usando os mesmos períodos por hora, diários e semanais. Se esse limite global for atingido, você vai receber o erro ERROR_FAILED_RATE_LIMIT_SYSTEM
.