Skip to content

Protected Audience participation versus number of interest groups on the browser #1367

Open
@fabricegaignier

Description

We define participation as the presence of at least one forDebuggingOnly report for a call to the KV server (there is always one if generateBid is executed, even partially executed) and participation rate as the number of participations / the number of KV calls.

Our original set-up is to set maxTrustedBiddingSignalsURLLength to its maximum value. And we count the number of interest groups in each KV call.
We are always setting enableBiddingSignalsPrioritization to false

We notice that the more Interest Groups on the browser (as seen from our KV server, see above) the lower our participation rate.
Between 10 interest groups and 40 interest groups participation rate drops by around 15%.

Our hypothesis was that the round trip from the browser to fetch TrustedBiddingSignals in our KV server was responsible for this phenomenon due to a combination of:

  • latency induced by the computation in the KV server
  • latency induced by the network due to a large payload in our KV response

So we ran 2 experiments:

In the first experiment we set a smaller value for maxTrustedBiddingSignalsURLLength. The behaviour of this feature has been confirmed in this ticket: #1335
Splitting the calls to the KV server reduces both the processing time of our KV server per batch and the size of the returned payload per batch. The first batch to return should execute generateBid without awaiting for the other batches to return.

It did not change anything in our participation rate

In the second experiment we do not touch maxTrustedBiddingSignalsURLLength (and keep it at its maximum value), but we limit the number of Interest Group evaluations by our KV server to 10 interest groups. Interest groups not evaluated return an empty TrustedBiddingSignal associated to the TrustedBiddingSignalsKey, triggering a ForDebuggingOnly report in generateBid.

Again this reduces the processing time of our KV server and the size of the returned payload (per batch).

And again it did not change anything in our participation rate

So this decrease in participation rate is not due to the latency of the call to our KV server, increasing with the number of interest groups on the browser.

The only hypothesis left from our point of view is that the issues lies with the browser itself. As we observe a correlation with the number of IG but our mitigation does not appear to fix the issues, the true underlying issue might be something correlated with the number of Criteo's IG, perhaps the total number of IG.
We would therefore need to understand better what could prevent generateBid from executing once the TrustedBiddingSignals are received by the browser.

If maxTrustedBiddingSignalsURLLength doesn't work priorityVector response to the trusted bidding signals fetch will not work. And we have no other option to filter out interest groups from a Chrome device (out of all those proposals https://developers.google.com/privacy-sandbox/private-advertising/protected-audience-api/latency#buyer_bidder_best_practices).

In the meantime, browsers with the most interest groups are the most valuable ones from our perspective.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions