Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explainer for PA per-participant metrics #1272

Merged
merged 12 commits into from
Dec 19, 2024

Conversation

morlovich
Copy link
Collaborator

Please note that most of this isn't landed yet (which does mean that feedback is more actionable).

Copy link
Collaborator Author

@morlovich morlovich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the feedback!

@@ -255,6 +256,85 @@ The `reserved.always` event-type is a special value that indicates a report shou
matter whether a bid wins the auction or not. The browser will always trigger reporting for the
`always` contributions.

## Per-participant metrics

More recent versions of Chrome offer some additional features, focused on measuring resource
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

M130 intends to enable Bidding & Auction Services by default. Does the new Per-Participant capabilities for now apply only to "classic" FLEDGE on-device auctions?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Practically, yeah, there is no support for B&A. It would need to be added to the B&A server (when it sends over PrivateAggregation stuff it just sends over the computed bucket and value numbers, no baseValues at this point).

... But I think it won't need any Chrome-side changes.

aarongable pushed a commit to chromium/chromium that referenced this pull request Sep 24, 2024
See  WICG/turtledove#1272 for more context.

Bug: 361262468
Change-Id: I439706b8147aa8d75140ad07931bb24aea78248f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5782999
Reviewed-by: Caleb Raitto <caraitto@chromium.org>
Commit-Queue: Maks Orlovich <morlovich@chromium.org>
Reviewed-by: Joe Mason <joenotcharles@google.com>
Cr-Commit-Position: refs/heads/main@{#1359340}
aarongable pushed a commit to chromium/chromium that referenced this pull request Sep 25, 2024
In particular:
  regular-igs-count,
  percent-regular-ig-count-quota-used,
  negative-igs-count,
  percent-negative-ig-count-quota-used,
  ig-storage-used,
  percent-ig-storage-quota-used


See WICG/turtledove#1272 for more context.

Bug: 361262468
Change-Id: I4098696d1d6eca9f573ae500c754fc8c8f13a92b
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5789141
Commit-Queue: Maks Orlovich <morlovich@chromium.org>
Reviewed-by: Ken Buchanan <kenrb@chromium.org>
Reviewed-by: Caleb Raitto <caraitto@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1360186}
@fhoering
Copy link
Contributor

fhoering commented Nov 5, 2024

@morlovich @alexmturner
Thanks for those new metrics that would allow better debugging.

Having more metrics raises the importance of ticket #1084 because currently for timings a large key space must be allocated and overlap of buckets are not handled.
The issue talks about timings but potentially the same issue will arise for the percentage metrics added here depending on with which precision they are reported (int, float with n digits)

@morlovich
Copy link
Collaborator Author

A lot of these are bounded (...though some by configuration which may be under a different party's control). cumulative-buyer-time is bounded by configured limit plus 1000 (if there is no limit configured, it's 0).
The percentages are bounded by... 110.

Hmm, I guess network times are technically not bounded, and maybe I should add that. The fetch itself does have a 30 second timeout, but there is some sloppiness in measurement. Similarly for script-run-time --- the actual execution has a timeout, but the measured time may be slightly

You do also have 128-bits of address space, however, so you can just give 2^64 metrics 2^64 space each. The values are initially measured as floats, and then after application of your scale and offset truncated.

@fhoering
Copy link
Contributor

fhoering commented Nov 5, 2024

The percentages are bounded by... 110.

What is the unit and precision of the percentages (int vs float) ? Technically if values are close, 99.5 and 99.9% can make a difference.

The fetch itself does have a 30 second timeout,

Which network fetch exactly because it looks low to me in general ? Do you have the Chromium source code for that ?

Hmm, I guess network times are technically not bounded, and maybe I should add that.

The client should be able to decide on how to bound and bucketize them based on the use case. It should not be hardcoded.

You do also have 128-bits of address space, however, so you can just give 2^64 metrics 2^64 space each.

My understanding is that this is not how it works. For timers if I allocate 2^64 I cannot use this for something else. But I let @alexmturner confirm or explain why it would work.

@morlovich
Copy link
Collaborator Author

The percentages are bounded by... 110.

What is the unit and precision of the percentages (int vs float) ? Technically if values are close, 99.5 and 99.9% can make a difference.

They starts as a double. Then scale and offset are applied, and the result is converted to an int.
So if you want more digits of precision, you can use a scale. e.g. without applying any you just end up with 99 and 99, but if you apply scale of 10 you will end up with ... 995 and either 999 or 998. Not sure exactly how the decimal ends up in binary.

The fetch itself does have a 30 second timeout,

Which network fetch exactly because it looks low to me in general ? Do you have the Chromium source code for that ?

scripts/wasm, trusted signals (might not be the case for them for V2 protocol, not sure).

https://source.chromium.org/chromium/chromium/src/+/main:content/services/auction_worklet/public/cpp/auction_downloader.cc;drc=be1dfd15d36d914a9feb33677a0c836c7922c689;l=253

You do also have 128-bits of address space, however, so you can just give 2^64 metrics 2^64 space each.

My understanding is that this is not how it works. For timers if I allocate 2^64 I cannot use this for something else. But I let @alexmturner confirm or explain why it would work.

Well, I mean you make first histogram have bucket offset 0, second have offset 0x100000000 , third 0x200000000, etc. (however one specifies hex for bigints in JS, anyway).

FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Outdated Show resolved Hide resolved
FLEDGE_extended_PA_reporting.md Show resolved Hide resolved
Maks Orlovich and others added 3 commits December 11, 2024 10:06
Co-authored-by: Paul Jensen <JensenPaul@users.noreply.github.com>
@JensenPaul JensenPaul merged commit 6395988 into WICG:main Dec 19, 2024
2 checks passed
github-actions bot added a commit that referenced this pull request Dec 19, 2024
SHA: 6395988
Reason: push, by JensenPaul

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants