Limitazioni della profilazione

Esistono diverse situazioni in cui la raccolta dei profili potrebbe non andare come previsto:

  • La raccolta dei profili non riesce a causa di un errore interno. In questo caso, l'API ProfilingResult ti informa degli errori.
  • La raccolta dei profili non riesce a causa della limitazione della frequenza. Per ulteriori informazioni, vedi Come funziona la limitazione della frequenza.
  • La raccolta dei profili ha esito positivo, ma l'app non riceve immediatamente una notifica. Ciò può accadere se l'app si arresta in modo anomalo durante le raccolte di profili di lunga durata. Se l'app si chiude, il sistema interrompe e salva automaticamente il profilo. L'app viene informata del profilo raccolto quando viene riavviata e registra un listener generale con ProfilingManager.

Come funziona limitazione di frequenza

ProfilingManager include un limitatore di frequenza sia per le singole app sia per l'intero sistema. Il limitatore di velocità impedisce alle app di utilizzare troppe risorse di sistema registrando troppi profili, perché una sessione di profilazione completa utilizza molte risorse.

Sia i limitatori di frequenza dell'app che quelli del sistema assegnano un costo a ogni tipo di profilo raccolto, perché alcuni profili richiedono più risorse rispetto ad altri. Il limite app controlla la quantità di dati che una singola app può registrare in base al suo costo totale. Il limite di sistema, invece, controlla il costo totale di tutti i profili registrati da tutte le app.

Il limitatore di frequenza imposta un costo totale che ogni app può utilizzare (questo costo è lo stesso per tutte le app). Ogni profilo utilizza una parte di questo costo totale, a seconda del suo tipo.

Il limitatore di frequenza utilizza tre periodi di tempo:

  • Per ora:è previsto un costo massimo consentito per ora.
  • Al giorno:è previsto un costo massimo consentito al giorno.
  • A settimana:è previsto un costo massimo consentito a settimana.

Il limitatore di frequenza imposta un costo totale che può essere utilizzato in ciascuno di questi periodi. Ad esempio, un'app potrebbe essere autorizzata a registrare X profili all'ora, Y al giorno e Z alla settimana. Se la tua app raggiunge il limite in uno di questi periodi, le richieste di profili future genereranno un errore ERROR_FAILED_RATE_LIMIT_PROCESS.

Questi periodi di tempo funzionano in modo simile per la limitazione della frequenza a livello di sistema. Tuttavia, il limite di velocità del sistema è un limite globale condiviso da tutte le app. Questo limite viene impostato separatamente dalle quote delle singole app, ma ogni profilo contribuisce a questo limite, utilizzando gli stessi periodi orari, giornalieri e settimanali. Se questo limite globale viene raggiunto, riceverai l'errore ERROR_FAILED_RATE_LIMIT_SYSTEM.