Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(237)

Issue 2710673004: precache: Allow experiment bitsets of any size. (Closed)

Created:
3 years, 10 months ago by twifkak
Modified:
3 years, 9 months ago
Reviewers:
pasko, bengr, jamartin
CC:
chromium-reviews, wifiprefetch-reviews_google.com
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

precache: Allow experiment bitsets of any size. Add bytes-typed field to PrecacheResourceSelection, which allows for an arbitrarily-sized bit vector, and thus doesn't limit the number of resources per site to 64. BUG=696012 Review-Url: https://codereview.chromium.org/2710673004 Cr-Commit-Position: refs/heads/master@{#452921} Committed: https://chromium.googlesource.com/chromium/src/+/b5a09c31d9b7af63c2b82194200bbb3ed9c5a878

Patch Set 1 #

Total comments: 6

Patch Set 2 : Update comments, make test bitset asymmetric, and make proto field deprecation more obvious. #

Total comments: 8
Unified diffs Side-by-side diffs Delta from patch set Stats (+86 lines, -29 lines) Patch
M components/precache/core/precache_fetcher.cc View 1 3 chunks +31 lines, -10 lines 8 comments Download
M components/precache/core/precache_fetcher_unittest.cc View 1 7 chunks +35 lines, -11 lines 0 comments Download
M components/precache/core/proto/precache.proto View 1 1 chunk +20 lines, -8 lines 0 comments Download

Dependent Patchsets:

Messages

Total messages: 27 (12 generated)
twifkak
3 years, 10 months ago (2017-02-22 01:54:17 UTC) #4
jamartin
LGTM. https://codereview.chromium.org/2710673004/diff/1/components/precache/core/precache_fetcher.cc File components/precache/core/precache_fetcher.cc (right): https://codereview.chromium.org/2710673004/diff/1/components/precache/core/precache_fetcher.cc#newcode159 components/precache/core/precache_fetcher.cc:159: // Only one return point to ensure RVO ...
3 years, 10 months ago (2017-02-22 22:14:01 UTC) #5
twifkak
https://codereview.chromium.org/2710673004/diff/1/components/precache/core/precache_fetcher.cc File components/precache/core/precache_fetcher.cc (right): https://codereview.chromium.org/2710673004/diff/1/components/precache/core/precache_fetcher.cc#newcode159 components/precache/core/precache_fetcher.cc:159: // Only one return point to ensure RVO triggers. ...
3 years, 10 months ago (2017-02-22 23:55:03 UTC) #6
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2710673004/20001
3 years, 10 months ago (2017-02-22 23:57:09 UTC) #9
commit-bot: I haz the power
No L-G-T-M from a valid reviewer yet. CQ run can only be started by full ...
3 years, 10 months ago (2017-02-22 23:57:10 UTC) #11
twifkak
Ben: Please review (or refer me to sclittle or rajendrant if you're swamped). I have ...
3 years, 10 months ago (2017-02-23 00:00:36 UTC) #13
pasko
rubberstamp ltgm (is it needed for a committer to l-g-t-m if the sender is already ...
3 years, 10 months ago (2017-02-24 13:42:33 UTC) #15
pasko
I mean, rubberstamp lgtm
3 years, 10 months ago (2017-02-24 13:42:52 UTC) #16
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2710673004/20001
3 years, 10 months ago (2017-02-24 19:34:02 UTC) #18
bengr
I'd add an issue ID, but lgtm fwiw.
3 years, 10 months ago (2017-02-24 21:06:58 UTC) #19
commit-bot: I haz the power
Committed patchset #2 (id:20001) as https://chromium.googlesource.com/chromium/src/+/b5a09c31d9b7af63c2b82194200bbb3ed9c5a878
3 years, 10 months ago (2017-02-24 21:19:32 UTC) #23
twifkak
(It's possible that a committer-reviewer is needed only for CQ, and not `git cl land`.) ...
3 years, 10 months ago (2017-02-24 21:20:12 UTC) #24
pasko
thank you for responses, Devin https://codereview.chromium.org/2710673004/diff/20001/components/precache/core/precache_fetcher.cc File components/precache/core/precache_fetcher.cc (right): https://codereview.chromium.org/2710673004/diff/20001/components/precache/core/precache_fetcher.cc#newcode133 components/precache/core/precache_fetcher.cc:133: uint32_t experiment_id) { On ...
3 years, 9 months ago (2017-02-27 18:12:16 UTC) #25
twifkak
https://codereview.chromium.org/2710673004/diff/20001/components/precache/core/precache_fetcher.cc File components/precache/core/precache_fetcher.cc (right): https://codereview.chromium.org/2710673004/diff/20001/components/precache/core/precache_fetcher.cc#newcode133 components/precache/core/precache_fetcher.cc:133: uint32_t experiment_id) { On 2017/02/27 18:12:16, pasko wrote: > ...
3 years, 9 months ago (2017-02-27 21:46:28 UTC) #26
pasko
3 years, 9 months ago (2017-02-28 12:21:31 UTC) #27
Message was sent while issue was closed.
https://codereview.chromium.org/2710673004/diff/20001/components/precache/cor...
File components/precache/core/precache_fetcher.cc (right):

https://codereview.chromium.org/2710673004/diff/20001/components/precache/cor...
components/precache/core/precache_fetcher.cc:133: uint32_t experiment_id) {
On 2017/02/27 21:46:28, twifkak wrote:
> On 2017/02/27 18:12:16, pasko wrote:
> > On 2017/02/24 21:20:12, twifkak wrote:
> > > On 2017/02/24 13:42:33, pasko wrote:
> > > > Do I understand correctly that each server manifest maps a finch group
to
> a
> > > > bitset, and then you also experiment with different bitsets in the
> manifest
> > > > generation pipeline?
> > > Yup.
> > > 
> > > > Wow. Advanced.
> > > Thanks. Or sorry. :P
> > > 
> > > > Did you find 64 to be limiting in some specific cases or you just want
to
> > > > experiment with larger bitsets and see what happens?
> > > Don't know for certain, but we suspect it's an issue. 64 is the number of
> > > _unfiltered_ resources -- the more filters we experiment with, the fewer
> > > _filtered_ resources per experiment we get. So, e.g. if we experiment with
> > > filtering out short-lived or uncached resources, and 90% of resources are
> > > filtered out, then we only get 6.4 resources per manifest.
> > > 
> > > In addition, with global ranking, it may be useful for some sites to have
> more
> > > resources while others have less.
> > 
> > Ah, thank you for background. Naive question: why not applying bitsets after
> > filtering? Is it something historical?
> 
> Perhaps I misunderstand your question. The bitsets are the mechanism for
> client-side filtering. The idea is we want to play with different manifest
> variants; it would be possible to generate and host multiple copies of the
> manifests, but this is much cheaper. So let's say we want to experiment with
two
> versions of the manifest:
> 
> Variant 1: [a.js, b.js]
> Variant 2: [a.js, c.js]
> 
> Then we'd encode that as:
> 
> {resources: [a.js, b.js, c.js],
>  variants: {1: 0x3, 2: 0x5}}
> 
> Because the bitset was a fixed64, that put a hard limit on the number of
> elements in 'resources' at 64, regardless of how many bits are set.
> 
> PS--The history of this feature is we added it to test the question "Should we
> precache images?" We've more recently used it to test several other what-ifs,
> though.

Oh, ah. Having bitsets _for_ filtering makes a lot of sense to me. Thank you.

Powered by Google App Engine
This is Rietveld 408576698