Adding Blob Perf Tests

5 views
Skip to first unread message

Daniel Murphy

unread,
Mar 12, 2015, 5:32:00 PM3/12/15
to tele...@chromium.org
Hello!

I'm trying to add some telemetry tests to measure the performance of Blob storage.  Since it's not something that's used very often yet in pages, I'm creating a custom page set and static page to exercise the various parts of blob storage.  I'm also adding tracing to the parts of the system I want to measure.

I'm trying to figure out what I need to do to hook this all up in a perf test.  I imagine this will be similar to IndexedDB, but I'm not sure if I need to add my own measurement to record the in-page timing results.

Would you be able to outline what else I need to do?
Thanks!
Daniel

Daniel Murphy

unread,
Mar 16, 2015, 9:56:34 PM3/16/15
to tele...@chromium.org, Annie Sullivan

Gentle ping, +sullivan

Nat Duca

unread,
Mar 17, 2015, 7:34:12 AM3/17/15
to Daniel Murphy, telemetry, Annie Sullivan
Ideally you'd just use timeline_based_measurement and then insure that one of the metrics in timeline_based_measurement reflects what you're trying to measure. The thread times metrics seem promising: we track total wall time and total cpu time --- if blob storage gets faster or slower, then these numbers should go up and down, right?

Try following the tough_x_sites convention in the pagesets dir for your new pageset. Making synthetic pages sounds good.

Daniel Murphy

unread,
Mar 17, 2015, 2:22:34 PM3/17/15
to Nat Duca, telemetry, Annie Sullivan
I'm a little scared that it won't give us good data, but I guess it could work for now.  In that case, should I just have the pages automatically run 'benchmarky' things with our system, and then have one page per benchmark?

Nat Duca

unread,
Mar 17, 2015, 3:21:11 PM3/17/15
to Daniel Murphy, telemetry, Annie Sullivan
Hehe, fair enough! What's your ideal data that you'd like to get from a measurement? You might be able to extract specific traces as well --- a la layout.py metric --- the key thing is using timeline based measurement.

Daniel Murphy

unread,
Mar 17, 2015, 4:02:33 PM3/17/15
to Nat Duca, telemetry, Annie Sullivan
Quick overview of blobs:

* creating a blob is synchronous for sending memory to browser 
  * all memory-backed, no disk, and we have a global cap
* reading is a network request, all from memory on IO thread.

We are changing to:
* creating a blob is asynchronous and can be disk backed based on the size and the current storage size
* reading can block on pending data from the renderer.

Ideally we would want specific timing information on
* How long it takes to register a blob
* How long individual items take to add
* How long it takes to read a blob
* How long for the whole round trip, construct -> read

I added tracing for most of these, except the round trip.  I imagine if we make specific pages to benchmark each of these, we can use the measurements that you mentioned instead?
Reply all
Reply to author
Forward
0 new messages