Closed Bug 1528674 Opened 6 years ago Closed 6 years ago

3.11 - 11.86% Explicit Memory / Heap Unclassified (linux64-qr) regression on push f2b5a9d987e8ea8a38bebd32f68d5cb04247580f (Thu Feb 14 2019)

Categories

(Core :: Graphics: WebRender, defect, P3)

x86_64
Linux
defect

Tracking

()

VERIFIED FIXED
mozilla68
Tracking Status
firefox-esr60 --- unaffected
firefox66 --- unaffected
firefox67 --- disabled
firefox68 --- fixed

People

(Reporter: igoldan, Assigned: kvark)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: backlog-deferred, perf, regression)

Attachments

(1 file)

We have detected an awsy regression from push:

https://hg.mozilla.org/integration/autoland/pushloghtml?changeset=f2b5a9d987e8ea8a38bebd32f68d5cb04247580f

As author of one of the patches included in that push, we need your help to address this regression.

Regressions:

12% Heap Unclassified linux64-qr opt stylo 165,886,453.18 -> 185,553,982.93
3% Explicit Memory linux64-qr opt stylo 461,747,111.37 -> 476,129,820.25

You can find links to graphs and comparison views for each of the above tests at: https://treeherder.mozilla.org/perf.html#/alerts?id=19382

On the page above you can see an alert for each affected platform as well as a link to a graph showing the history of scores for this test. There is also a link to a treeherder page showing the jobs in a pushlog format.

To learn more about the regressing test(s), please see: https://wiki.mozilla.org/AWSY/Tests

Component: General → Graphics: WebRender
Product: Testing → Core
Flags: needinfo?(dmalyshau)

The difference in WR logic is that now we are pre-allocating 16 picture tiles on start, which would count for about 16Mb of GPU memory. This doesn't answer the question on why "Heap Unclassified" and "Explicit Memory" rose up, given that these are for CPU, and we don't want/expect the driver to allocate that storage on CPU side.

Assignee: nobody → dmalyshau
Status: NEW → ASSIGNED
Flags: needinfo?(dmalyshau)

Dzmitry, do you have any updates here?

Flags: needinfo?(dmalyshau)

Ionuț, it's still on my radar to look at. The reason it's not a huge priority is because the regression is Linux only, so it's the specific drivers playing tricks on us.

Flags: needinfo?(dmalyshau)
Priority: -- → P3

The change contains a number of incremental improvements with the main goal of:

  • allocating exactly as many tile as required by the app
  • respecting the picture caching option
Attachment #9053330 - Attachment description: [WIP] WR improve picture texture cache allocaton → WR improve picture texture cache allocaton
Pushed by dmalyshau@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/bbb6a31ebf07 WR improve picture texture cache allocaton r=gw
Backout by csabou@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/0fedcd9cdd51 Backed out changeset bbb6a31ebf07 for webrender crashtests and reftests failures.

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&resultStatus=testfailed%2Cbusted%2Cexception&searchStr=crashtest&fromchange=bbb6a31ebf07466c79b44d31cb5d6ea26a73d544&tochange=0fedcd9cdd51f06c9e177a1b81c04c7ac93e27bf&selectedJob=236250906

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=236250906&repo=autoland&lineNumber=25839

Backout link: https://hg.mozilla.org/integration/autoland/rev/0fedcd9cdd51f06c9e177a1b81c04c7ac93e27bf

[task 2019-03-26T23:38:44.703Z] 23:38:44 INFO - REFTEST PROCESS-CRASH | file:///builds/worker/workspace/build/tests/reftest/tests/netwerk/test/crashtests/785753-1.html | application crashed [@ XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode)]
[task 2019-03-26T23:38:44.703Z] 23:38:44 INFO - Crash dump filename: /tmp/tmp_6fuVL.mozrunner/minidumps/3f7c65db-8b16-42eb-d1cd-b61b327f6e47.dmp
[task 2019-03-26T23:38:44.703Z] 23:38:44 INFO - Operating system: Linux
[task 2019-03-26T23:38:44.703Z] 23:38:44 INFO - 0.0.0 Linux 4.4.0-1014-aws #14taskcluster1-Ubuntu SMP Tue Apr 3 10:27:00 UTC 2018 x86_64
[task 2019-03-26T23:38:44.704Z] 23:38:44 INFO - CPU: x86
[task 2019-03-26T23:38:44.704Z] 23:38:44 INFO - GenuineIntel family 6 model 62 stepping 4
[task 2019-03-26T23:38:44.704Z] 23:38:44 INFO - 2 CPUs
[task 2019-03-26T23:38:44.704Z] 23:38:44 INFO -
[task 2019-03-26T23:38:44.705Z] 23:38:44 INFO - GPU: UNKNOWN
[task 2019-03-26T23:38:44.705Z] 23:38:44 INFO -
[task 2019-03-26T23:38:44.705Z] 23:38:44 INFO - Crash reason: DUMP_REQUESTED
[task 2019-03-26T23:38:44.705Z] 23:38:44 INFO - Crash address: 0xef5cd1f7
[task 2019-03-26T23:38:44.706Z] 23:38:44 INFO - Process uptime: not available
[task 2019-03-26T23:38:44.706Z] 23:38:44 INFO -
[task 2019-03-26T23:38:44.706Z] 23:38:44 INFO - Thread 0 (crashed)
[task 2019-03-26T23:38:44.706Z] 23:38:44 INFO - 0 libxul.so!XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) [XPCWrappedNative.cpp:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 1325 + 0x0]
[task 2019-03-26T23:38:44.706Z] 23:38:44 INFO - eip = 0xef5cd1f7 esp = 0xff8991b0 ebp = 0xff899368 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.707Z] 23:38:44 INFO - esi = 0x0000015f edi = 0xf35945e4 eax = 0x9c954701 ecx = 0xea306a00
[task 2019-03-26T23:38:44.707Z] 23:38:44 INFO - edx = 0x9c954701 efl = 0x00200282
[task 2019-03-26T23:38:44.707Z] 23:38:44 INFO - Found by: given as instruction pointer in context
[task 2019-03-26T23:38:44.707Z] 23:38:44 INFO - 1 libxul.so!XPC_WN_GetterSetter(JSContext*, unsigned int, JS::Value*) [xpcprivate.h:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 1482 + 0x9]
[task 2019-03-26T23:38:44.708Z] 23:38:44 INFO - eip = 0xef5ce825 esp = 0xff899370 ebp = 0xff899438 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.708Z] 23:38:44 INFO - esi = 0xff8993d8 edi = 0xb1235020
[task 2019-03-26T23:38:44.708Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.708Z] 23:38:44 INFO - 2 libxul.so!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 442 + 0xd]
[task 2019-03-26T23:38:44.709Z] 23:38:44 INFO - eip = 0xf24cd107 esp = 0xff899440 ebp = 0xff8994d8 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.709Z] 23:38:44 INFO - esi = 0xff8994f8 edi = 0xea30d800
[task 2019-03-26T23:38:44.709Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.709Z] 23:38:44 INFO - 3 libxul.so!js::CallGetter(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) [Interpreter.cpp:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 589 + 0x17]
[task 2019-03-26T23:38:44.709Z] 23:38:44 INFO - eip = 0xf24ce061 esp = 0xff8994e0 ebp = 0xff899538 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.710Z] 23:38:44 INFO - esi = 0xea30d800 edi = 0xf53ae680
[task 2019-03-26T23:38:44.710Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.710Z] 23:38:44 INFO - 4 libxul.so!js::NativeGetProperty(JSContext*, JS::Handle<js::NativeObject*>, JS::Handle<JS::Value>, JS::Handle<JS::PropertyKey>, JS::MutableHandle<JS::Value>) [NativeObject.cpp:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 2215 + 0x12]
[task 2019-03-26T23:38:44.710Z] 23:38:44 INFO - eip = 0xf266cca9 esp = 0xff899540 ebp = 0xff8995f8 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.711Z] 23:38:44 INFO - esi = 0xea30d800 edi = 0xda4742e0
[task 2019-03-26T23:38:44.711Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.711Z] 23:38:44 INFO - 5 libxul.so!js::GetProperty(JSContext*, JS::Handle<JS::Value>, JS::Handle<js::PropertyName*>, JS::MutableHandle<JS::Value>) [ObjectOperations-inl.h:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 117 + 0x1e]
[task 2019-03-26T23:38:44.711Z] 23:38:44 INFO - eip = 0xf24d0307 esp = 0xff899600 ebp = 0xff899698 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.712Z] 23:38:44 INFO - esi = 0xff899638 edi = 0xea30d800
[task 2019-03-26T23:38:44.712Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.712Z] 23:38:44 INFO - 6 libxul.so!js::jit::IonGetPropertyIC::update(JSContext*, JS::Handle<JSScript*>, js::jit::IonGetPropertyIC*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) [IonIC.cpp:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 181 + 0x1b]
[task 2019-03-26T23:38:44.712Z] 23:38:44 INFO - eip = 0xf2b164d7 esp = 0xff8996a0 ebp = 0xff8998a8 ebx = 0xf53e8000
[task 2019-03-26T23:38:44.713Z] 23:38:44 INFO - esi = 0xe9cd3450 edi = 0xea30d800
[task 2019-03-26T23:38:44.713Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.713Z] 23:38:44 INFO - 7 0x2f112311
[task 2019-03-26T23:38:44.713Z] 23:38:44 INFO - eip = 0x2f112311 esp = 0xff8998b0 ebp = 0xd8b8b720 ebx = 0xff8998d4
[task 2019-03-26T23:38:44.714Z] 23:38:44 INFO - esi = 0xffffff8c edi = 0xe9cd3450
[task 2019-03-26T23:38:44.714Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.714Z] 23:38:44 INFO - 8 libxul.so!_fini + 0x11cd910
[task 2019-03-26T23:38:44.714Z] 23:38:44 INFO - eip = 0xf4702c98 esp = 0xff8998e0 ebp = 0xd8b8b720
[task 2019-03-26T23:38:44.714Z] 23:38:44 INFO - Found by: stack scanning
[task 2019-03-26T23:38:44.715Z] 23:38:44 INFO - 9 libxul.so!_fini + 0x1eb2c78
[task 2019-03-26T23:38:44.715Z] 23:38:44 INFO - eip = 0xf53e8000 esp = 0xff899938 ebp = 0xd8b8b720
[task 2019-03-26T23:38:44.715Z] 23:38:44 INFO - Found by: stack scanning
[task 2019-03-26T23:38:44.715Z] 23:38:44 INFO - 10 libxul.so!js::InternalBarrierMethods<JS::Value>::readBarrier(JS::Value const&) [Value.h:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 0 + 0x5]
[task 2019-03-26T23:38:44.716Z] 23:38:44 INFO - eip = 0xf28f197c esp = 0xff899940 ebp = 0xff899958
[task 2019-03-26T23:38:44.716Z] 23:38:44 INFO - Found by: stack scanning
[task 2019-03-26T23:38:44.716Z] 23:38:44 INFO - 11 libxul.so!JS::Compartment::getOrCreateWrapper(JSContext*, JS::Handle<JSObject*>, JS::MutableHandle<JSObject*>) [Barrier.h:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 584 + 0x8]
[task 2019-03-26T23:38:44.716Z] 23:38:44 INFO - eip = 0xf2568647 esp = 0xff899960 ebp = 0x00100000 ebx = 0xe9e02590
[task 2019-03-26T23:38:44.717Z] 23:38:44 INFO - esi = 0xe9da6cc0 edi = 0xe9e02560
[task 2019-03-26T23:38:44.717Z] 23:38:44 INFO - Found by: call frame info
[task 2019-03-26T23:38:44.717Z] 23:38:44 INFO - 12 libxul.so!ShellCloneAndExecuteScript(JSContext*, unsigned int, JS::Value*) [Variant.h:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 544 + 0x3]
[task 2019-03-26T23:38:44.717Z] 23:38:44 INFO - eip = 0xf2700000 esp = 0xff89996c ebp = 0x00100000
[task 2019-03-26T23:38:44.717Z] 23:38:44 INFO - Found by: stack scanning
[task 2019-03-26T23:38:44.718Z] 23:38:44 INFO - 13 libxul.so!JS::Compartment::getNonWrapperObjectForCurrentCompartment(JSContext*, JS::MutableHandle<JSObject*>) [Compartment.cpp:ae1ddf7ebb7b85071331283e67db6ff39ba9c1c0 : 240 + 0x22]
[task 2019-03-26T23:38:44.718Z] 23:38:44 INFO - eip = 0xf256848e esp = 0xff899970 ebp = 0x00100000
[task 2019-03-26T23:38:44.718Z] 23:38:44 INFO - Found by: stack scanning

I'm seeing shader compile errors in the log (https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=236250906&repo=autoland&lineNumber=989):

23:50:46 INFO - C:\fakepath(252,25-29): error X4576: Input array signature parameter cannot be indexed dynamically.

These are not related to my changes here.
Looking at the other things in the log...

Pushed by dmalyshau@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/03ef11b535d4 WR improve picture texture cache allocaton r=gw
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
Status: RESOLVED → VERIFIED

== Change summary for alert #20225 (as of Mon, 01 Apr 2019 05:20:36 GMT) ==

Improvements:

7% Heap Unclassified linux64-shippable-qr opt stylo 190,945,597.72 -> 178,312,869.71
6% Heap Unclassified linux64-shippable-qr opt stylo 190,243,386.37 -> 178,011,242.13
3% Explicit Memory linux64-shippable-qr opt stylo 477,412,657.55 -> 463,131,383.22

For up to date results, see: https://treeherder.mozilla.org/perf.html#/alerts?id=20225

Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: