New main thread hangs in RtlQueryPerformanceCounter / TimeStamp::Now()
Categories
(Core :: Performance: General, defect)
Tracking
()
Performance Impact | ? |
Tracking | Status | |
---|---|---|
firefox-esr78 | --- | unaffected |
firefox85 | --- | unaffected |
firefox86 | --- | unaffected |
firefox87 | --- | affected |
People
(Reporter: mstange, Unassigned)
References
(Regression)
Details
(Keywords: regression)
The BHR dashboard at https://fqueze.github.io/hang-stats/ is showing a new hang on Windows that wasn't there before: A lot of time is spent getting timestamps using RtlQueryPerformanceCounter
under JS::UnmarkGrayGCThingRecursively
(called from EventListenerManager::MarkForCC
).
Jon, is it possible that the patch in bug 1689140 caused us to query the current timestamp more frequently than before?
Comment 1•5 years ago
•
|
||
JS::UnmarkGrayGCThingRecursively doesn't use SliceBudget so that's unlikely. I don't know why this would have changed.
Unfortunately the BHR dashboard isn't working at the moment. Do you have any idea when this started happening?
Comment 2•5 years ago
|
||
Set release status flags based on info from the regressing bug 1689140
Updated•5 years ago
|
Reporter | ||
Comment 3•5 years ago
|
||
Florian, can you find out when this started?
Comment 4•5 years ago
|
||
The full stack is:
RtlQueryPerformanceCounter ntdll
static mozilla::TimeStamp::NowUnfuzzed(bool) mozglue
JS::UnmarkGrayGCThingRecursively(JS::GCCellPtr) xul
static mozilla::dom::FragmentOrElement::CanSkip(nsINode*, bool) xul
mozilla::CycleCollectedJSRuntime::UnmarkSkippableJSHolders() xul
nsCCUncollectableMarker::Observe(nsISupports*, char const*, char16_t const*) xul
nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) xul
nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) xul
nsObserverService::NotifyObservers cycle-collector-forget-skippable
XPCJSRuntime::PrepareForForgetSkippable() xul
nsCycleCollector_forgetSkippable(js::SliceBudget&, bool, bool) xul
nsCycleCollector_forgetSkippable
FireForgetSkippable(bool, mozilla::TimeStamp) xul
CCRunnerFired(mozilla::TimeStamp) xul
virtual bool std::_Func_impl_no_alloc<bool ( *)(class mozilla::TimeStamp),bool,class mozilla::TimeStamp>::_Do_call(class mozilla::TimeStamp &&) xul
mozilla::IdleTaskRunner::Run() xul
mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex &> const&) xul
Comment 5•5 years ago
|
||
JS::UnmarkGrayGCThingRecursively does result in a call to RtlQueryPerformanceCounter and always has. Maybe something has made the forgetSkippable happen more often?
Is it possible that the stack changed somehow? I'm not aware of anything that would have made us do forget skippable more often.
Olli, have their been any idle scheduling changes that might affect this?
Failing that, we might want to look at general cycle collector or ghost window metrics to see if anything regressed there. It could be a symptom of leaks which tend to tank CC performance.
Comment 7•5 years ago
|
||
Hmm, do we have still the old bhr UI available? I think using that it was easy(er) to see regressions.
I'm not aware of changes to idle handling, unless pbone's patches have already landed.
Comment 8•4 years ago
|
||
(In reply to Markus Stange [:mstange] from comment #3)
Florian, can you find out when this started?
The frequency is very low in current data: https://fqueze.github.io/hang-stats/#row=0&filter=NowUnfuzzed (20210213).
Do we still care about finding out when this started, or can we resolve as worksforme?
(In reply to Olli Pettay [:smaug] from comment #7)
Hmm, do we have still the old bhr UI available?
We still have the code at https://github.com/squarewave/bhr.html but the arewesmoothyet domain name has expired.
Comment 9•4 years ago
|
||
^ (trying to clear up some release engineering triage)
Reporter | ||
Comment 10•4 years ago
|
||
(In reply to Florian Quèze [:florian] from comment #8)
The frequency is very low in current data: https://fqueze.github.io/hang-stats/#row=0&filter=NowUnfuzzed (20210213).
Ok, then let's close this bug.
Updated•4 years ago
|
Updated•3 years ago
|
Description
•