Profiler une mise aux enchères Protected Audience

Vous pouvez analyser les mises aux enchères Protected Audience (visuellement ou par requête SQL avec Perfetto). Les technologies publicitaires peuvent utiliser le profilage avec Perfetto pour mesurer les performances des mises aux enchères Protected Audience :

  • Temps CPU du script d'enchères et d'attribution de scores
  • Latence des requêtes HTTP telles que le service clé-valeur
  • Impact sur les performances du cache inactif par rapport au cache actif
  • Plus ou moins d'audiences personnalisées
  • Ensembles de signaux plus grands ou plus petits
  • Utilisation de différents scripts d'enchères par audience personnalisée ou utilisation du même script pour toutes les enchères

Préparation

  1. Clonez les dépôts Perfetto et Privacy Sandbox.

    git clone https://android.googlesource.com/platform/external/perfetto
    git clone https://github.com/android/privacy-sandbox-samples
    
  2. Dans Android Studio, ouvrez l'application exemple Protected Audience à partir du répertoire privacy-sandbox-samples/Fledge/FledgeKotlin.

  3. Créez et installez l'application exemple sur votre appareil de test ou votre émulateur.

Lancer une mise aux enchères et enregistrer une trace Perfetto

  1. Configurez et déployez des points de terminaison HTTPS de test. Prenez note de l'URL des points de terminaison hébergés, car ils sont nécessaires au fonctionnement de l'application de démonstration Protected Audience.
  2. Lancez l'application de démonstration en spécifiant une URL de point de terminaison de test. Remplacez <test-endpoint-url> par une URL de point de terminaison hébergée que vous avez enregistrée à l'étape précédente.

    adb shell am start -n com.example.adservices.samples.fledge.sampleapp/.MainActivity \
      -e baseUrl "<test-endpoint-url>"
    
  3. Activez "Shoes CA" pour vous assurer qu'au moins une audience personnalisée est active.

    Capture d&#39;écran de l&#39;application de démonstration Protected Audience avec activation de l&#39;audience &quot;Shoes CAS&quot;.
    Application de démonstration de l'API Protected Audience
  4. Enregistrez une trace à l'aide du fichier trace_config.textproto à partir du dépôt GitHub des outils de développement de la Privacy Sandbox :

    ./perfetto/tools/record_android_trace \
      -c path/to/trace_config.textproto
    
  5. Appuyez sur le bouton "Run Ad Selection" (Lancer une sélection d'annonces) et attendez les résultats de la mise aux enchères. Une fois la mise aux enchères terminée, le résultat affiche un message du type "Would display ad from http://example.com/bidding/render_shoes" (Afficherait l'annonce de http://example.com/bidding/render_shoes).

  6. Dans votre terminal, arrêtez le programme record_android_trace (CTRL+C) pour terminer la trace. L'interface utilisateur de Perfetto s'ouvre dans votre navigateur avec les données de trace chargées.

Explorer visuellement les traces dans Perfetto

  1. Recherchez "RunOnDeviceAdSelection" dans la barre d'adresse en haut de l'interface utilisateur. Cliquez sur Enter (Entrée) pour terminer la recherche et afficher les résultats :

    Interface utilisateur de Perfetto examinant la mise aux enchères Protected Audience. Des canaux tels que RunOnDeviceAdSelection et RunBidding sont visibles.
    Mise aux enchères Protected Audience à acheteur unique dans Perfetto
  2. Cliquez sur une trace pour l'inspecter. Des détails tels que la latence d'exécution sont disponibles.

    Interface utilisateur de Perfetto inspectant un segment de trace Les détails de la latence sont visibles.
    Inspecter un segment de trace

Segments de trace spécifiques à Protected Audience

La mise aux enchères Protected Audience est un processus complexe, et de nombreux segments différents sont capturés par la trace Perfetto. Ce tableau documente ce que chaque segment de trace représente.

Temps Segment Description Fréquence
Avant la mise aux enchères RunOnDeviceAdSelection Mise aux enchères complète Par mise aux enchères
Enchères (côté acheteur) FilterContextualAds Filtrer les annonces contextuelles en fonction de l'installation d'applications et limiter la fréquence d'exposition Par mise aux enchères
GetBuyersCustomAudience Charger l'audience personnalisée de l'acheteur à partir de la base de données Par acheteur
FilterCustomAudiences Filtrer les audiences personnalisées en fonction des installations d'applications et de la limite de la fréquence d'exposition Par mise aux enchères
GetTrustedBiddingSignals Charger les signaux d'enchère de l'acheteur Par acheteur
RunBiddingPerCustomAudience Enchères publicitaires pour une seule audience personnalisée Par audience personnalisée
GetBuyerDecisionLogic Charger le code JavaScript de l'acheteur à partir du réseau ou de la base de données, s'il est mis en cache Par audience personnalisée
RunBidding Exécution JavaScript pour un acheteur Par acheteur
GenerateBids Exécution JavaScript pour une audience personnalisée Par audience personnalisée
Attribution de scores (côté vente) GetTrustedScoringSignals Charger les signaux d'attribution de scores du vendeur Par vendeur
RunAdScoring Exécution JavaScript pour l'attribution de scores Par mise aux enchères
ScoreAd Exécution JavaScript pour une annonce Par annonce
GetAdSelectionLogic Charger la logique de sélection des annonces du vendeur Par mise aux enchères
RunAdOutcomeSelection Filtrage final Par mise aux enchères
Après la mise aux enchères PersistOnDeviceAdSelection Écrire le résultat de la mise aux enchères dans la base de données Par mise aux enchères

Interroger la latence d'exécution moyenne

Perfetto peut utiliser des requêtes SQL pour obtenir des mesures précises de ce qui se passe dans une trace particulière.

Cette section explique comment mesurer la latence d'exécution moyenne pour l'exécution JavaScript.

  1. Dans Perfetto, accédez à "Query (SQL)" (Requête (SQL)) dans le volet de navigation de gauche.
  2. Saisissez la requête suivante :

    SELECT AVG(dur)
    FROM slice
    WHERE slice.name GLOB 'FetchPayload';
    
  3. Exécutez la requête et inspectez les résultats.

    Résultats de la requête SQL La latence moyenne est de 1 769 3688 nanosecondes.
    Le résultat de la requête SQL est exprimé en nanosecondes.