Closed
Bug 1244845
Opened 9 years ago
Closed 9 years ago
Share script-sources between asm.js modules
Categories
(Core :: JavaScript Engine, defect)
Core
JavaScript Engine
Tracking
()
RESOLVED
DUPLICATE
of bug 1211723
Tracking | Status | |
---|---|---|
firefox47 | --- | affected |
People
(Reporter: jujjyl, Unassigned)
Details
Bug 1168981 discusses sharing compiled asm.js code, however, looking at about:memory reports, it looks like script-sources are not being shared either, which creates a lot of wasted memory.
STR:
1. Visit https://dl.dropboxusercontent.com/u/40949268/emcc/bugs/PhysicsStressTest_16threads/12_PhysicsStressTest.html
or offline downloadable zip of the same:
https://dl.dropboxusercontent.com/u/40949268/emcc/bugs/PhysicsStressTest_16threads/PhysicsStressTest_16threads.zip
2. After the page loads, take an about:memory snapshot
Observed:
Each web worker (16 of them + main thread) duplicates 64MB of identical UTF-16 string data in memory corresponding to the asm.js module of the page. The log reads
6,164.81 MB (100.0%) -- explicit
├──5,393.87 MB (87.49%) -- workers/workers(/C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.html)
│ ├────339.34 MB (05.50%) -- worker(pthread-main.js, 0x1de87b16000)
│ │ ├──272.99 MB (04.43%) ++ zone(0x1ded5b29800)
│ │ ├───66.17 MB (01.07%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───2.69 MB (00.04%) ++ (12 tiny)
│ │ └────0.18 MB (00.00%) ++ (2 tiny)
│ ├────339.34 MB (05.50%) -- worker(pthread-main.js, 0x1de87b17000)
│ │ ├──272.99 MB (04.43%) ++ zone(0x1ded5b20800)
│ │ ├───66.17 MB (01.07%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───2.69 MB (00.04%) ++ (12 tiny)
│ │ └────0.18 MB (00.00%) ++ (2 tiny)
│ ├────339.34 MB (05.50%) -- worker(pthread-main.js, 0x1de87b16800)
│ │ ├──272.99 MB (04.43%) ++ zone(0x1ded0f4e800)
│ │ ├───66.17 MB (01.07%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───2.69 MB (00.04%) ++ (12 tiny)
│ │ └────0.18 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de84b31800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0d6b800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b0c800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded5b28000)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b0d800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0f43000)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b0e000)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0d72800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b0e800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0d6f800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b0f000)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded5b1e800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b10800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0d7b800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b11800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0f5b000)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b13000)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded0d6c800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b13800)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1de87b0a800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b14000)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded5b2b800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ ├────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b15000)
│ │ ├──271.57 MB (04.41%) ++ zone(0x1ded5b26800)
│ │ ├───64.81 MB (01.05%) -- runtime
│ │ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ │ └────0.23 MB (00.00%) ++ (2 tiny)
│ └────336.60 MB (05.46%) -- worker(pthread-main.js, 0x1de87b15800)
│ ├──271.57 MB (04.41%) ++ zone(0x1de80e27800)
│ ├───64.81 MB (01.05%) -- runtime
│ │ ├──63.47 MB (01.03%) -- script-sources
│ │ │ ├──63.47 MB (01.03%) ++ source(scripts=1, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ └───0.00 MB (00.00%) ++ source(scripts=3, <non-notable files>)
│ │ └───1.33 MB (00.02%) ++ (12 tiny)
│ └────0.23 MB (00.00%) ++ (2 tiny)
├────551.99 MB (08.95%) -- window-objects
│ ├──279.66 MB (04.54%) ++ top(file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.html, id=4294967301)
│ └──272.34 MB (04.42%) ++ top(none)/detached/window([system])
├────157.95 MB (02.56%) -- js-non-window
│ ├──137.74 MB (02.23%) -- runtime
│ │ ├──128.48 MB (02.08%) -- script-sources
│ │ │ ├──126.94 MB (02.06%) ++ source(scripts=2, file:///C:/code/Urho3D/build_emcc_sse2_relwithdebinfo/bin/12_PhysicsStressTest.js)
│ │ │ └────1.54 MB (00.03%) ++ (26 tiny)
│ │ └────9.26 MB (00.15%) ++ (12 tiny)
│ └───20.21 MB (00.33%) ++ (2 tiny)
└─────61.00 MB (00.99%) ++ (19 tiny)
The script-sources are immutable(?), or could be treated with copy-on-write semantics(?) to share the memory. This would save up 16*64MB = 1GB of memory when running this page.
![]() |
||
Updated•9 years ago
|
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•