Closed
Bug 1292600
Opened 8 years ago
Closed 7 years ago
Add telemetry to see if idle callbacks take more than their budgeted time
Categories
(Core :: DOM: Core & HTML, defect)
Core
DOM: Core & HTML
Tracking
()
RESOLVED
FIXED
mozilla55
Tracking | Status | |
---|---|---|
firefox55 | --- | fixed |
People
(Reporter: overholt, Assigned: farre)
References
Details
Attachments
(1 file, 3 obsolete files)
6.72 KB,
patch
|
farre
:
review+
|
Details | Diff | Splinter Review |
No description provided.
Assignee | ||
Comment 1•7 years ago
|
||
Assignee | ||
Updated•7 years ago
|
Attachment #8872414 -
Flags: review?(nfroyd)
Attachment #8872414 -
Flags: feedback?
Assignee | ||
Updated•7 years ago
|
Attachment #8872414 -
Flags: feedback?
Assignee | ||
Comment 2•7 years ago
|
||
Realised that we need to setup the AutoTimer with the mNexIdleDeadline before running the event, since that might actually clear it because of nesting.
Attachment #8872414 -
Attachment is obsolete: true
Attachment #8872414 -
Flags: review?(nfroyd)
Attachment #8872433 -
Flags: review?(nfroyd)
Comment 3•7 years ago
|
||
Comment on attachment 8872433 [details] [diff] [review] 0001-Bug-1292600-Add-telemetry-to-measure-how-idle-budget.patch Review of attachment 8872433 [details] [diff] [review]: ----------------------------------------------------------------- This needs data review on the Histograms change. I'll let Benjamin do that change; a few non-histogram related things need fixing. Why do we care about this number, anyway? What action do we hope to take as a result of the data we collect? ::: xpcom/threads/nsThread.cpp @@ +1233,5 @@ > } > > +#ifndef RELEASE_OR_BETA > +bool > +GetLabeledRunnableName(nsIRunnable* aEvent, nsACString& aName) Nit: static bool, please. @@ +1326,5 @@ > HangMonitor::NotifyActivity(); > > #ifndef RELEASE_OR_BETA > nsCString name; > + bool labeled = GetLabeledRunnableName(event, name); Maybe we should just hoist this call out... @@ +1345,5 @@ > + // If mNextIdleDeadline is not null, then event is a runnable > + // from the idle queue > + if (mNextIdleDeadline) { > + nsCString name; > + Unused << GetLabeledRunnableName(event, name); ...so we don't have to do redundant work on the main thread for idle runnables? @@ +1349,5 @@ > + Unused << GetLabeledRunnableName(event, name); > + // If we construct the AutoTimer with the deadline, then we'll > + // compute TimeStamp::Now() - mNextIdleDeadline when > + // accumulating telemetry. If that is positive we've > + // overdrawn out idle budget, if it's negative it will go in Nit: overdrawn *our* idle budget. ::: xpcom/threads/nsThread.h @@ +279,5 @@ > // Set to true if this thread creates a JSRuntime. > bool mCanInvokeJS; > + > +#ifndef RELEASE_OR_BETA > + mozilla::TimeStamp mNextIdleDeadline; Using a member variable to pass this state around is ugh, but I'm not sure I have a better idea.
Attachment #8872433 -
Flags: review?(nfroyd)
Attachment #8872433 -
Flags: review?(benjamin)
Attachment #8872433 -
Flags: feedback+
Assignee | ||
Comment 4•7 years ago
|
||
(In reply to Nathan Froyd [:froydnj] from comment #3) > Comment on attachment 8872433 [details] [diff] [review] > 0001-Bug-1292600-Add-telemetry-to-measure-how-idle-budget.patch > > Review of attachment 8872433 [details] [diff] [review]: > ----------------------------------------------------------------- > > Why do we care about this number, anyway? What action do we hope to take as > a result of the data we collect? > Now that we're starting to add more usage of idleDispatch, especially without using the deadline from SetDeadline I want to be preemptive and track runnables that doesn't adhere to that deadline.
Comment 5•7 years ago
|
||
Comment on attachment 8872433 [details] [diff] [review] 0001-Bug-1292600-Add-telemetry-to-measure-how-idle-budget.patch data-r=me. I did not review the code.
Attachment #8872433 -
Flags: review?(benjamin) → review+
Assignee | ||
Comment 6•7 years ago
|
||
Did some juggling with GetLabeledRunnableName to eliminate possible extra call. I don't like mNextIdleDeadline either, but also have no better solution :( Now the telemetry code is a bit more non-interleavy, so if we ever get a better idea it should be easy to rip out.
Attachment #8872433 -
Attachment is obsolete: true
Attachment #8874423 -
Flags: review?(nfroyd)
Comment 7•7 years ago
|
||
Comment on attachment 8874423 [details] [diff] [review] 0001-Bug-1292600-Add-telemetry-to-measure-how-idle-budget.patch Review of attachment 8874423 [details] [diff] [review]: ----------------------------------------------------------------- ::: xpcom/threads/nsThread.cpp @@ +1325,5 @@ > > #ifndef RELEASE_OR_BETA > + Maybe<Telemetry::AutoTimer<Telemetry::MAIN_THREAD_RUNNABLE_MS>> timer; > + Maybe<Telemetry::AutoTimer<Telemetry::IDLE_RUNNABLE_BUDGET_OVERUSE_MS>> idleTimer; > + bool labeled = false; Can we move this declaration to... @@ +1332,2 @@ > nsCString name; > + labeled = GetLabeledRunnableName(event, name); ...here? It might be my limited review context, but declaring variables as close as possible to their uses is a good thing, and I can't see that labeled is used outside this block.
Attachment #8874423 -
Flags: review?(nfroyd) → review+
Assignee | ||
Comment 8•7 years ago
|
||
Yep, that variable should move, refactoring artifact. Carrying over r+.
Attachment #8874423 -
Attachment is obsolete: true
Attachment #8875284 -
Flags: review+
Pushed by afarre@mozilla.com: https://hg.mozilla.org/integration/mozilla-inbound/rev/e5901d855faf Add telemetry to measure how idle budgets are used. r=froydnj, data-r=bsmedberg
Comment 10•7 years ago
|
||
https://hg.mozilla.org/mozilla-central/rev/e5901d855faf
Status: NEW → RESOLVED
Closed: 7 years ago
status-firefox51:
affected → ---
status-firefox55:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla55
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•