Bug 198023

Summary: [JSC] UnlinkedCodeBlock should be eventually jettisoned in VM mini mode
Product: WebKit Reporter: Yusuke Suzuki <ysuzuki>
Component: JavaScriptCoreAssignee: Yusuke Suzuki <ysuzuki>
Status: RESOLVED FIXED    
Severity: Normal CC: ews-watchlist, guijemont, keith_miller, mark.lam, msaboff, saam, webkit-bug-importer, ysuzuki
Priority: P2 Keywords: InRadar
Version: WebKit Nightly Build   
Hardware: Unspecified   
OS: Unspecified   
Bug Depends on:    
Bug Blocks: 198727    
Attachments:
Description Flags
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch
none
Patch saam: review+

Description Yusuke Suzuki 2019-05-18 17:11:42 PDT
Otherwise, so long as we have a reachable path to that UnlinkedCodeBlock, we still retain it.
Since UnlinkedCodeBlock holds InstructionStream and UnlinkedMetadataTable, it is not so cheap.
We could have some mechanism similar to ScriptExecutable -> CodeBlock (logically) weak reference.
Comment 1 Yusuke Suzuki 2019-05-20 11:04:59 PDT
Now I think this would be very profitable.
CodeBlock -> UnlinkedCodeBlock should be strong ref.
But UnlinkedFunctionExecutable -> UnlinkedCodeBlock can be (special) weak ref as ScriptExecutable -> CodeBlock ref is.
Comment 2 Yusuke Suzuki 2019-05-20 11:09:44 PDT
I’ll prototype it quickly to see the potential impact on Gmail.
Comment 3 Yusuke Suzuki 2019-05-20 14:37:02 PDT
Simply making them Weak<> like thing reduces Gmail memory footprint by ~8% in my MBP.
Comment 4 Yusuke Suzuki 2019-05-20 17:00:33 PDT
Created attachment 370283 [details]
Patch

WIP
Comment 5 Yusuke Suzuki 2019-05-22 22:53:04 PDT
Interesting results

RAMification 0.28% progression
Speedometer 0.69% regression
JetStream2 1.31% progression
Comment 6 Yusuke Suzuki 2019-05-28 19:44:07 PDT
UnlinkedCodeBlock investigation in Gmail. The following numbers are not taken at the same time, so it is just a rough sketch of the memory usage.
But it is enough I think.


Total number = 24219
Actually live = 2208
Baseline or upper + live = 4994
DFG or upper + live = 2532
Comment 7 Yusuke Suzuki 2019-05-28 19:45:12 PDT
(In reply to Yusuke Suzuki from comment #6)
> UnlinkedCodeBlock investigation in Gmail. The following numbers are not
> taken at the same time, so it is just a rough sketch of the memory usage.
> But it is enough I think.
> 
> 
> Total number = 24219
> Actually live = 2208
> Baseline or upper + live = 4994
> DFG or upper + live = 2532

The above says there are 20000 non-live LLInt UnlinkedCodeBlock.
Comment 8 Yusuke Suzuki 2019-05-28 19:46:05 PDT
(In reply to Yusuke Suzuki from comment #7)
> (In reply to Yusuke Suzuki from comment #6)
> > UnlinkedCodeBlock investigation in Gmail. The following numbers are not
> > taken at the same time, so it is just a rough sketch of the memory usage.
> > But it is enough I think.
> > 
> > 
> > Total number = 24219
> > Actually live = 2208
> > Baseline or upper + live = 4994
> > DFG or upper + live = 2532
> 
> The above says there are 20000 non-live LLInt UnlinkedCodeBlock.

LLInt UnlinkedCodeBlock means that CodeBlock belonging to this UnlinkedCodeBlock does not get Baseline or upper so far.
Comment 9 Yusuke Suzuki 2019-05-30 11:55:38 PDT
Discussed with Saam. Basically dropping UnlinkedCodeBlock can cause PLT / Speedometer2 regression. These UnlinkedCodeBlock can be reused once the same page is loaded. This is the same when we are using Safari and navigating to the page in the same domain (typically loading many same scripts again).
On the other hand, keeping these UnlinkedCodeBlock (almost) forever until we fill up CodeCache completely takes huge amount of memory in SPA web pages. One example is Gmail. We do not navigate to the other pages in Gmail, we stay the same page for a very long time. In this case, keeping UnlinkedCodeBlock is much worthless compared to the non-SPA page navigation story. We can accelerate reload of the Gmail, but it is not frequent compared to navigation in non-SPA pages while it takes fair amount of memory.

Maybe, we should discard these UnlinkedCodeBlocks only when it is not used soooooooooooo long time? Or once we get Bytecode disk caching, we could try more aggressive eviction policy? Anyway, we could try various things. And at least for mini mode VM, we should discard these things eagerly because we are incentivize memory reduction more on mini mode.
Comment 10 Yusuke Suzuki 2019-05-30 12:48:34 PDT
<rdar://problem/51192115>
Comment 11 Yusuke Suzuki 2019-06-04 18:34:10 PDT
(In reply to Yusuke Suzuki from comment #10)
> <rdar://problem/51192115>

Let's do it for mini mode VM first.
And I'm also considering whether we can make UnlinkedCodeBlock back to cached bytecode. I think we can do it easily. But we should get some space to saving decoder and offsets :P (I have one idea anyway, so I think we can do it maybe).
Comment 12 Yusuke Suzuki 2019-06-04 18:48:45 PDT
Created attachment 371361 [details]
Patch
Comment 13 Yusuke Suzuki 2019-06-05 17:14:42 PDT
Created attachment 371455 [details]
Patch
Comment 14 Yusuke Suzuki 2019-06-05 22:06:32 PDT
Created attachment 371472 [details]
Patch
Comment 15 Yusuke Suzuki 2019-06-05 22:07:38 PDT
Created attachment 371473 [details]
Patch
Comment 16 Yusuke Suzuki 2019-06-05 22:15:23 PDT
Created attachment 371474 [details]
Patch

WIP
Comment 17 Yusuke Suzuki 2019-06-06 18:26:51 PDT
OK, we could have several problems. But as a first step, I'll go with a simple patch, and after that improving heuristics based on the workload.
Comment 18 Yusuke Suzuki 2019-06-06 21:46:17 PDT
Heuristics data. I think AGE = 7 case would be a good starting point.
AGE = 0 can reduce much memory, but it almost always requires reparsing 400 functions per scene change.


AGE = INFINITY, many = 0
WebKit Using System Malloc_0xe334000      18.5M      1040K      1040K        16K       5592       853K       203K     20%      32
WebKit Using System Malloc_0xe334000      21.7M      3760K      3760K      2368K      20566      5921K       207K      4%     195
WebKit Using System Malloc_0xe334000      22.8M      4928K      4912K      2944K      25225      7826K        30K      1%     204
WebKit Using System Malloc_0xe334000      22.8M      1024K      1024K      6832K      25225      7826K        30K      1%     204
WebKit Using System Malloc_0xe334000      22.8M       992K       992K      6864K      25225      7826K        30K      1%     204
WebKit Using System Malloc_0xe334000      21.7M      6960K      6736K       128K      21587      5918K       946K     14%     209
WebKit Using System Malloc_0xe334000      21.7M      6960K      6736K       128K      21587      5918K       946K     14%     209
WebKit Using System Malloc_0xe334000      21.7M      6960K      6736K       128K      21587      5918K       946K     14%     209
WebKit Using System Malloc_0xe334000      21.8M      6960K      6848K       128K      23709      6428K       548K      8%     208
WebKit Using System Malloc_0xe334000      21.8M      6960K      6848K       128K      23709      6428K       548K      8%     208
WebKit Using System Malloc_0xe334000      21.8M      6960K      6848K       128K      23709      6428K       548K      8%     208
WebKit Using System Malloc_0xe334000      21.6M      6848K      6672K       128K      23213      6149K       651K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6848K      6672K       128K      23213      6149K       651K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6848K      6672K       128K      23213      6149K       651K     10%     202
WebKit Using System Malloc_0xe334000      22.0M      7184K      7008K       128K      23801      6652K       484K      7%     208
WebKit Using System Malloc_0xe334000      22.0M      7184K      7008K       128K      23801      6652K       484K      7%     208
WebKit Using System Malloc_0xe334000      21.7M      6912K      6752K       128K      24338      6457K       423K      7%     209
WebKit Using System Malloc_0xe334000      21.7M      6912K      6752K       128K      24338      6457K       423K      7%     209
WebKit Using System Malloc_0xe334000      21.7M      6912K      6752K       128K      24338      6457K       423K      7%     209
WebKit Using System Malloc_0xe334000      22.7M      7760K      7616K       128K      24202      7503K       241K      4%     205
WebKit Using System Malloc_0xe334000      22.7M      7760K      7616K       128K      24202      7503K       241K      4%     205
WebKit Using System Malloc_0xe334000      23.6M      8656K      8528K       128K      24683      8502K       154K      2%     206
WebKit Using System Malloc_0xe334000      22.7M      7712K      7568K       128K      24431      7472K       224K      3%     203
WebKit Using System Malloc_0xe334000      22.7M      7712K      7568K       128K      24431      7472K       224K      3%     203
WebKit Using System Malloc_0xe334000      22.0M      7248K      7104K       128K      25206      6787K       445K      7%     220
WebKit Using System Malloc_0xe334000      21.8M      6992K      6784K       144K      24012      6362K       566K      9%     212
WebKit Using System Malloc_0xe334000      21.8M      6288K      6096K       832K      24012      6362K       566K      9%     212
WebKit Using System Malloc_0xe334000      21.8M      6416K      6240K       720K      24330      6410K       550K      8%     213
WebKit Using System Malloc_0xe334000      21.6M      6784K      6592K       144K      23254      6018K       718K     11%     199
WebKit Using System Malloc_0xe334000      21.6M      6800K      6608K       144K      23708      6135K       617K     10%     200
WebKit Using System Malloc_0xe334000      21.7M      6880K      6656K       144K      23418      6101K       699K     11%     204
WebKit Using System Malloc_0xe334000      21.7M      6880K      6656K       144K      23418      6101K       699K     11%     204
WebKit Using System Malloc_0xe334000      21.7M      6880K      6656K       144K      23758      6140K       660K     10%     204
WebKit Using System Malloc_0xe334000      21.7M      6848K      6656K       144K      24031      6282K       518K      8%     205
WebKit Using System Malloc_0xe334000      21.7M      6848K      6656K       144K      24031      6282K       518K      8%     205
WebKit Using System Malloc_0xe334000      21.1M      6400K      6160K       144K      21961      5288K      1016K     17%     191
WebKit Using System Malloc_0xe334000      21.5M      6720K      6544K       144K      23923      6141K       547K      9%     196
WebKit Using System Malloc_0xe334000      21.5M      6720K      6544K       144K      23923      6141K       547K      9%     196
WebKit Using System Malloc_0xe334000      21.5M      6720K      6544K       144K      23923      6141K       547K      9%     196
WebKit Using System Malloc_0xe334000      21.5M      6592K      6528K       176K      24226      6191K       513K      8%     197
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23179      5959K       777K     12%     199
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23179      5959K       777K     12%     199
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23179      5959K       777K     12%     199
WebKit Using System Malloc_0xe334000      21.6M      6480K      6432K       304K      23590      6047K       689K     11%     199
WebKit Using System Malloc_0xe334000      21.7M      6576K      6544K       304K      23581      6205K       643K     10%     203
WebKit Using System Malloc_0xe334000      21.7M      6704K      6688K       272K      24688      6518K       442K      7%     205
WebKit Using System Malloc_0xe334000      21.7M      6704K      6688K       272K      24688      6518K       442K      7%     205
WebKit Using System Malloc_0xe334000      21.7M      6704K      6688K       272K      24881      6532K       428K      7%     205
WebKit Using System Malloc_0xe334000      21.6M      6656K      6576K       256K      23405      6087K       745K     11%     203
WebKit Using System Malloc_0xe334000      21.6M      6656K      6576K       256K      23405      6087K       745K     11%     203
WebKit Using System Malloc_0xe334000      21.2M      6304K      6176K       256K      22167      5452K       980K     16%     198
WebKit Using System Malloc_0xe334000      21.6M      6624K      6592K       256K      24300      6293K       555K      9%     199
WebKit Using System Malloc_0xe334000      21.6M      6624K      6592K       256K      24300      6293K       555K      9%     199
WebKit Using System Malloc_0xe334000      21.6M      6624K      6592K       256K      24300      6293K       555K      9%     199
WebKit Using System Malloc_0xe334000      22.7M      7584K      7536K       256K      24654      7475K       317K      5%     206
WebKit Using System Malloc_0xe334000      22.7M      7584K      7536K       256K      24654      7475K       317K      5%     206
WebKit Using System Malloc_0xe334000      21.7M      6800K      6768K       256K      24456      6516K       508K      8%     208
WebKit Using System Malloc_0xe334000      21.7M      6752K      6704K       224K      23692      6228K       700K     11%     204
WebKit Using System Malloc_0xe334000      21.7M      6752K      6704K       224K      23692      6228K       700K     11%     204
WebKit Using System Malloc_0xe334000      21.8M      6864K      6800K       224K      24316      6447K       577K      9%     210
WebKit Using System Malloc_0xe334000      21.8M      6864K      6800K       224K      24316      6447K       577K      9%     210
WebKit Using System Malloc_0xe334000      22.0M      7040K      6976K       224K      25357      6817K       383K      6%     214
WebKit Using System Malloc_0xe334000      21.9M      6944K      6864K       224K      23736      6450K       638K     10%     202
WebKit Using System Malloc_0xe334000      22.1M      7104K      7072K       224K      25123      6991K       305K      5%     209
WebKit Using System Malloc_0xe334000      22.1M      7104K      7072K       224K      25123      6991K       305K      5%     209
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6768K      6704K       224K      23713      6228K       700K     11%     205
WebKit Using System Malloc_0xe334000      21.7M      6752K      6736K       224K      24168      6341K       619K      9%     206
WebKit Using System Malloc_0xe334000      22.0M      7008K      6944K       208K      24214      6588K       564K      8%     206
WebKit Using System Malloc_0xe334000      22.0M      7008K      6944K       208K      24214      6588K       564K      8%     206
WebKit Using System Malloc_0xe334000      21.5M      6560K      6464K       208K      24012      6087K       585K      9%     195
WebKit Using System Malloc_0xe334000      21.5M      6560K      6464K       208K      24012      6087K       585K      9%     195
WebKit Using System Malloc_0xe334000      21.5M      6560K      6480K       208K      24464      6174K       514K      8%     195
WebKit Using System Malloc_0xe334000      21.3M      6400K      6272K       208K      23097      5647K       833K     13%     198
WebKit Using System Malloc_0xe334000      21.3M      6416K      6304K       208K      23459      5718K       794K     13%     199
WebKit Using System Malloc_0xe334000      21.7M      6816K      6768K       208K      24583      6431K       545K      8%     202
WebKit Using System Malloc_0xe334000      21.7M      6816K      6768K       208K      24583      6431K       545K      8%     202
WebKit Using System Malloc_0xe334000      21.7M      6816K      6768K       208K      24994      6506K       470K      7%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24091      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24083      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.6M      6752K      6640K       208K      24083      6214K       634K     10%     202
WebKit Using System Malloc_0xe334000      21.9M      7008K      6928K       208K      25427      6689K       447K      7%     208
WebKit Using System Malloc_0xe334000      21.9M      6928K      6832K       208K      24402      6492K       548K      8%     213
WebKit Using System Malloc_0xe334000      21.6M      6720K      6656K       208K      24338      6326K       538K      8%     200
WebKit Using System Malloc_0xe334000      21.6M      6720K      6656K       208K      24651      6360K       504K      8%     200
WebKit Using System Malloc_0xe334000      21.6M      6720K      6576K       208K      22579      5837K       947K     14%     202
WebKit Using System Malloc_0xe334000      21.6M      6720K      6576K       208K      22579      5837K       947K     14%     202
WebKit Using System Malloc_0xe334000      21.7M      6768K      6656K       192K      23838      6107K       741K     11%     205
WebKit Using System Malloc_0xe334000      21.8M      2960K      2960K      4064K      25182      6591K       433K      7%     208
WebKit Using System Malloc_0xe334000      21.8M      2304K      2304K      4720K      25178      6591K       433K      7%     208
WebKit Using System Malloc_0xe334000      21.8M      2240K      2240K      4784K      25178      6591K       433K      7%     208
WebKit Using System Malloc_0xe334000      21.8M      6192K      6192K       832K      25264      6597K       427K      7%     208
WebKit Using System Malloc_0xe334000      21.4M      6448K      6336K       304K      24644      5907K       733K     12%     199
WebKit Using System Malloc_0xe334000      21.5M      6576K      6528K       256K      24572      6160K       624K     10%     209
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25466      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212
WebKit Using System Malloc_0xe334000      21.8M      6800K      6784K       256K      25458      6625K       415K      6%     212

AGE = 7, many = 100, most case, 1-2, ~20
WebKit Using System Malloc_0xcde8000      18.1M       384K       384K         0K       1003       166K       218K     57%       8
WebKit Using System Malloc_0xcde8000      20.6M      4336K      4336K       320K      15585      4297K       359K      8%     145
WebKit Using System Malloc_0xcde8000      21.7M       560K       560K      5632K      20572      5969K       223K      4%     198
WebKit Using System Malloc_0xcde8000      21.7M      3728K      3728K      2512K      21058      6045K       195K      4%     199
WebKit Using System Malloc_0xcde8000      22.5M      7232K      7216K       208K      24548      7444K         0K      0%     194
WebKit Using System Malloc_0xcde8000      22.5M      6432K      6416K      1008K      24548      7444K         0K      0%     194
WebKit Using System Malloc_0xcde8000      22.5M      6432K      6416K      1008K      24548      7444K         0K      0%     194
WebKit Using System Malloc_0xcde8000      21.5M      6672K      6608K        64K      21630      5980K       692K     11%     194
WebKit Using System Malloc_0xcde8000      21.5M      6672K      6608K        64K      21630      5980K       692K     11%     194
WebKit Using System Malloc_0xcde8000      21.3M      6496K      6400K        32K      20408      5602K       830K     13%     187
WebKit Using System Malloc_0xcde8000      21.3M      6496K      6400K        32K      20408      5602K       830K     13%     187
WebKit Using System Malloc_0xcde8000      21.7M      6944K      6816K        32K      19647      5952K       896K     14%     197
WebKit Using System Malloc_0xcde8000      21.7M      6944K      6816K        32K      19647      5952K       896K     14%     197
WebKit Using System Malloc_0xcde8000      22.2M      7376K      7184K        32K      20153      6551K       665K     10%     203
WebKit Using System Malloc_0xcde8000      21.7M      6016K      5920K       688K      19197      5813K       795K     13%     189
WebKit Using System Malloc_0xcde8000      21.7M      5632K      5600K      1024K      19681      5916K       708K     11%     189
WebKit Using System Malloc_0xcde8000      21.4M      6432K      6400K       112K      19851      5678K       834K     13%     194
WebKit Using System Malloc_0xcde8000      21.4M      6432K      6400K       112K      19851      5678K       834K     13%     194
WebKit Using System Malloc_0xcde8000      21.5M      6448K      6416K       112K      20149      5720K       808K     13%     195
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19604      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19604      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19604      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      21.2M      6208K      6128K       112K      19600      5385K       855K     14%     183
WebKit Using System Malloc_0xcde8000      22.4M      7360K      7296K        96K      20700      6952K       440K      6%     193
WebKit Using System Malloc_0xcde8000      22.4M      7360K      7296K        96K      20700      6952K       440K      6%     193
WebKit Using System Malloc_0xcde8000      22.5M      7392K      7328K        96K      20995      7009K       415K      6%     195
WebKit Using System Malloc_0xcde8000      22.1M      7280K      7184K        64K      19834      6329K       919K     13%     205
WebKit Using System Malloc_0xcde8000      22.1M      7280K      7184K        64K      19834      6329K       919K     13%     205
WebKit Using System Malloc_0xcde8000      21.5M      6608K      6496K        64K      19019      5674K       886K     14%     197
WebKit Using System Malloc_0xcde8000      21.5M      6608K      6496K        64K      19019      5674K       886K     14%     197
WebKit Using System Malloc_0xcde8000      21.5M      6608K      6496K        64K      19019      5674K       886K     14%     197
WebKit Using System Malloc_0xcde8000      21.5M      6640K      6512K        64K      18002      5373K      1203K     19%     200
WebKit Using System Malloc_0xcde8000      21.5M      6640K      6512K        64K      18002      5373K      1203K     19%     200
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6352K        64K      19455      5581K       835K     14%     188
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6352K        64K      19455      5581K       835K     14%     188
WebKit Using System Malloc_0xcde8000      21.6M      6784K      6640K        32K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6624K        48K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6624K        48K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6624K        48K      19785      5849K       823K     13%     192
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6304K        48K      19829      5566K       786K     13%     186
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6304K        48K      19829      5566K       786K     13%     186
WebKit Using System Malloc_0xcde8000      21.3M      6480K      6320K        48K      20153      5614K       754K     12%     187
WebKit Using System Malloc_0xcde8000      21.6M      6768K      6560K        48K      20087      5709K       899K     14%     196
WebKit Using System Malloc_0xcde8000      21.5M      6688K      6592K        32K      21280      5974K       650K     10%     203
WebKit Using System Malloc_0xcde8000      21.5M      6688K      6592K        32K      21280      5974K       650K     10%     203
WebKit Using System Malloc_0xcde8000      21.5M      6688K      6592K        32K      21568      5999K       625K     10%     203
WebKit Using System Malloc_0xcde8000      21.4M      6576K      6400K        32K      19929      5480K       952K     15%     194
WebKit Using System Malloc_0xcde8000      21.4M      6576K      6400K        32K      19929      5480K       952K     15%     194
WebKit Using System Malloc_0xcde8000      21.0M      6256K      6016K        32K      18947      4963K      1085K     18%     189
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6288K        32K      20115      5529K       791K     13%     184
WebKit Using System Malloc_0xcde8000      21.3M      6464K      6288K        32K      20115      5529K       791K     13%     184
WebKit Using System Malloc_0xcde8000      21.9M      7024K      6880K        32K      21624      6375K       537K      8%     203
WebKit Using System Malloc_0xcde8000      21.9M      7024K      6880K        32K      21624      6375K       537K      8%     203
WebKit Using System Malloc_0xcde8000      21.2M      6448K      6256K        32K      20089      5491K       797K     13%     194
WebKit Using System Malloc_0xcde8000      21.5M      6656K      6464K        32K      20399      5825K       671K     11%     196
WebKit Using System Malloc_0xcde8000      21.4M      6544K      6336K        32K      19118      5523K       845K     14%     193
WebKit Using System Malloc_0xcde8000      21.4M      6544K      6336K        32K      19118      5523K       845K     14%     193

AGE = 3, many = 120
WebKit Using System Malloc_0xe6dc000      18.5M      1072K      1072K        16K       5731       866K       222K     21%      32
WebKit Using System Malloc_0xe6dc000      21.8M      4384K      4384K      1952K      20571      6063K       273K      5%     204
WebKit Using System Malloc_0xe6dc000      22.8M      7920K      7856K        32K      25183      7885K       2752      1%     208
WebKit Using System Malloc_0xe6dc000      22.8M      1872K      1808K      6080K      25183      7885K       2752      1%     208
WebKit Using System Malloc_0xe6dc000      23.6M      7264K      7264K      1440K      26203      8818K         0K      0%     222
WebKit Using System Malloc_0xe6dc000      23.4M      7072K      7072K      1408K      26196      8593K         0K      0%     221
WebKit Using System Malloc_0xe6dc000      21.3M      6608K      6464K        48K      18779      5478K      1034K     16%     188
WebKit Using System Malloc_0xe6dc000      21.3M      6592K      6448K        64K      18779      5478K      1034K     16%     188
WebKit Using System Malloc_0xe6dc000      21.5M      6736K      6592K        64K      19472      5722K       934K     15%     190
WebKit Using System Malloc_0xe6dc000      21.7M      6976K      6640K        48K      17424      5587K      1101K     17%     197
WebKit Using System Malloc_0xe6dc000      21.9M      7072K      6768K        32K      19847      6187K       613K     10%     199
WebKit Using System Malloc_0xe6dc000      21.9M      7072K      6768K        32K      19847      6187K       613K     10%     199
WebKit Using System Malloc_0xe6dc000      22.1M      7248K      6944K        32K      20741      6485K       491K      8%     203
WebKit Using System Malloc_0xe6dc000      21.5M      6816K      6400K        32K      18207      5371K      1061K     17%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6784K      6464K        32K      20197      5835K       661K     11%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6784K      6464K        32K      20197      5835K       661K     11%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6768K      6464K        32K      20197      5835K       661K     11%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6768K      6464K        32K      20514      5866K       630K     10%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6768K      6464K        32K      20510      5865K       631K     10%     202
WebKit Using System Malloc_0xe6dc000      21.7M      6944K      6480K        32K      18054      5580K       932K     15%     200
WebKit Using System Malloc_0xe6dc000      21.7M      6976K      6528K        16K      18558      5702K       842K     13%     201
WebKit Using System Malloc_0xe6dc000      21.5M      6816K      6496K        16K      21109      5989K       523K      9%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6816K      6496K        16K      21109      5989K       523K      9%     202
WebKit Using System Malloc_0xe6dc000      21.5M      6832K      6512K        16K      21397      6030K       498K      8%     203
WebKit Using System Malloc_0xe6dc000      21.4M      6656K      6272K        16K      19838      5591K       697K     12%     191
WebKit Using System Malloc_0xe6dc000      21.4M      5936K      5904K       400K      18999      5542K       762K     13%     195
WebKit Using System Malloc_0xe6dc000      21.4M      5936K      5904K       400K      18999      5542K       762K     13%     195
WebKit Using System Malloc_0xe6dc000      21.4M      5936K      5904K       400K      19302      5572K       732K     12%     195
WebKit Using System Malloc_0xe6dc000      21.4M      6320K      6192K        32K      17450      5109K      1115K     18%     195
WebKit Using System Malloc_0xe6dc000      21.6M      6512K      6416K        32K      18932      5611K       837K     13%     199
WebKit Using System Malloc_0xe6dc000      21.5M      6432K      6400K        64K      19556      5770K       694K     11%     199
WebKit Using System Malloc_0xe6dc000      21.5M      6432K      6400K        64K      19556      5770K       694K     11%     199
WebKit Using System Malloc_0xe6dc000      21.3M      6320K      6224K        48K      19044      5517K       755K     13%     189
WebKit Using System Malloc_0xe6dc000      21.3M      6320K      6224K        48K      19044      5517K       755K     13%     189
WebKit Using System Malloc_0xe6dc000      21.3M      6320K      6224K        48K      19044      5517K       755K     13%     189
WebKit Using System Malloc_0xe6dc000      22.5M      7360K      7312K        16K      19896      6823K       505K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7360K      7312K        16K      19896      6823K       505K      7%     197
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      19878      7080K       504K      7%     208
WebKit Using System Malloc_0xe6dc000      22.7M      7648K      7584K         0K      20102      7100K       484K      7%     208
WebKit Using System Malloc_0xe6dc000      23.1M      8080K      8032K         0K      21106      7741K       291K      4%     216
WebKit Using System Malloc_0xe6dc000      21.8M      6992K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.8M      6992K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.8M      6960K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.8M      6960K      6784K         0K      19033      5962K       822K     13%     204
WebKit Using System Malloc_0xe6dc000      21.9M      6928K      6720K         0K      20143      6220K       500K      8%     198
WebKit Using System Malloc_0xe6dc000      21.9M      6928K      6720K         0K      20143      6220K       500K      8%     198
WebKit Using System Malloc_0xe6dc000      21.9M      6928K      6720K         0K      20143      6220K       500K      8%     198
WebKit Using System Malloc_0xe6dc000      21.4M      6528K      6224K         0K      17839      5237K       987K     16%     191
WebKit Using System Malloc_0xe6dc000      21.4M      6528K      6224K         0K      17839      5237K       987K     16%     191
WebKit Using System Malloc_0xe6dc000      21.4M      6560K      6320K         0K      20185      5719K       601K     10%     195
WebKit Using System Malloc_0xe6dc000      21.4M      6560K      6320K         0K      20185      5719K       601K     10%     195
WebKit Using System Malloc_0xe6dc000      21.4M      6576K      6240K         0K      18642      5461K       779K     13%     197
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18825      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.5M      6624K      6384K         0K      18817      5570K       814K     13%     196
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19694      6009K       583K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6848K      6592K         0K      19686      6008K       584K      9%     194
WebKit Using System Malloc_0xe6dc000      21.8M      6928K      6768K         0K      20095      6098K       670K     10%     200
WebKit Using System Malloc_0xe6dc000      21.8M      6928K      6768K         0K      20095      6098K       670K     10%     200
WebKit Using System Malloc_0xe6dc000      21.5M      6656K      6512K         0K      19821      5727K       785K     13%     197
WebKit Using System Malloc_0xe6dc000      21.5M      6656K      6512K         0K      19821      5727K       785K     13%     197
WebKit Using System Malloc_0xe6dc000      21.5M      6656K      6512K         0K      19821      5727K       785K     13%     197
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6368K         0K      18165      5313K      1055K     17%     196
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6368K         0K      18165      5313K      1055K     17%     196
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7520K      7344K         0K      20049      6865K       479K      7%     197
WebKit Using System Malloc_0xe6dc000      22.5M      7536K      7360K         0K      20332      6906K       454K      7%     198
WebKit Using System Malloc_0xe6dc000      22.5M      7616K      7408K         0K      19998      6931K       477K      7%     200
WebKit Using System Malloc_0xe6dc000      22.5M      7616K      7408K         0K      19998      6931K       477K      7%     200
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6240K         0K      17495      5188K      1052K     17%     197
WebKit Using System Malloc_0xe6dc000      21.4M      6624K      6240K         0K      17963      5260K       980K     16%     197
WebKit Using System Malloc_0xe6dc000      21.7M      6912K      6528K         0K      19835      5752K       776K     12%     207
WebKit Using System Malloc_0xe6dc000      22.5M      7648K      7536K         0K      21923      7255K       281K      4%     201
WebKit Using System Malloc_0xe6dc000      22.5M      7648K      7536K         0K      21923      7255K       281K      4%     201
WebKit Using System Malloc_0xe6dc000      22.9M      7968K      7888K         0K      22831      7672K       216K      3%     216
WebKit Using System Malloc_0xe6dc000      21.6M      6816K      6608K         0K      19419      5674K       934K     15%     207
WebKit Using System Malloc_0xe6dc000      21.6M      6816K      6608K         0K      19419      5674K       934K     15%     207
WebKit Using System Malloc_0xe6dc000      21.6M      6816K      6608K         0K      19893      5776K       832K     13%     207
WebKit Using System Malloc_0xe6dc000      21.5M      6720K      6560K         0K      18873      5627K       933K     15%     202

AGE = 2, many = 200
WebKit Using System Malloc_0xac28000      18.1M       176K       176K       240K       1003       166K       250K     61%       8
WebKit Using System Malloc_0xac28000      20.3M      4112K      4080K       112K      13902      3774K       418K     10%     138
WebKit Using System Malloc_0xac28000      21.7M      1712K      1712K      4448K      20565      5921K       239K      4%     195
WebKit Using System Malloc_0xac28000      21.7M       656K       656K      5504K      20565      5921K       239K      4%     195
WebKit Using System Malloc_0xac28000      21.7M      4128K      4128K      2096K      21050      5997K       227K      4%     196
WebKit Using System Malloc_0xac28000      22.3M      6672K      6608K       208K      18484      6425K       391K      6%     184
WebKit Using System Malloc_0xac28000      22.3M      6800K      6752K       112K      19704      6602K       262K      4%     185
WebKit Using System Malloc_0xac28000      23.0M      7616K      7568K        16K      20873      7503K        81K      2%     206
WebKit Using System Malloc_0xac28000      23.0M      7632K      7584K        16K      21121      7536K        64K      1%     207
WebKit Using System Malloc_0xac28000      21.4M      6320K      6208K         0K      18072      5385K       823K     14%     194
WebKit Using System Malloc_0xac28000      21.4M      6320K      6208K         0K      18072      5385K       823K     14%     194
WebKit Using System Malloc_0xac28000      21.4M      6336K      6240K         0K      18713      5520K       720K     12%     195
WebKit Using System Malloc_0xac28000      21.3M      6240K      6160K         0K      19277      5570K       590K     10%     188
WebKit Using System Malloc_0xac28000      21.6M      6496K      6416K         0K      18618      5710K       706K     12%     189
WebKit Using System Malloc_0xac28000      21.6M      6496K      6416K         0K      18618      5710K       706K     12%     189
WebKit Using System Malloc_0xac28000      21.7M      6624K      6544K         0K      18994      5841K       703K     11%     197
WebKit Using System Malloc_0xac28000      21.7M      6624K      6544K         0K      18994      5841K       703K     11%     197
WebKit Using System Malloc_0xac28000      21.4M      6320K      6240K         0K      19107      5516K       724K     12%     191
WebKit Using System Malloc_0xac28000      21.4M      6320K      6240K         0K      19365      5545K       695K     12%     191
WebKit Using System Malloc_0xac28000      21.7M      6608K      6496K         0K      18847      5681K       815K     13%     200
WebKit Using System Malloc_0xac28000      21.2M      6112K      6064K         0K      21036      5650K       414K      7%     183
WebKit Using System Malloc_0xac28000      21.4M      6304K      6208K         0K      18908      5500K       708K     12%     189
WebKit Using System Malloc_0xac28000      21.4M      6304K      6208K         0K      18908      5500K       708K     12%     189
WebKit Using System Malloc_0xac28000      21.4M      6368K      6288K         0K      18769      5450K       838K     14%     193
WebKit Using System Malloc_0xac28000      21.4M      6368K      6288K         0K      18769      5450K       838K     14%     193
WebKit Using System Malloc_0xac28000      21.4M      6368K      6288K         0K      18769      5450K       838K     14%     193
WebKit Using System Malloc_0xac28000      21.8M      6640K      6608K        16K      20304      6100K       524K      8%     198
WebKit Using System Malloc_0xac28000      21.8M      6640K      6608K        16K      20304      6100K       524K      8%     198
WebKit Using System Malloc_0xac28000      21.5M      6416K      6384K        16K      20165      5811K       589K     10%     196
WebKit Using System Malloc_0xac28000      21.5M      6416K      6384K        16K      20165      5811K       589K     10%     196
WebKit Using System Malloc_0xac28000      21.5M      6480K      6368K         0K      18235      5386K       982K     16%     200
WebKit Using System Malloc_0xac28000      21.5M      6480K      6368K         0K      18235      5386K       982K     16%     200
WebKit Using System Malloc_0xac28000      21.6M      6528K      6464K         0K      19342      5778K       686K     11%     188
WebKit Using System Malloc_0xac28000      21.6M      6528K      6464K         0K      19342      5778K       686K     11%     188
WebKit Using System Malloc_0xac28000      21.6M      6528K      6464K         0K      19342      5778K       686K     11%     188
WebKit Using System Malloc_0xac28000      21.7M      6688K      6464K         0K      17059      5579K       885K     14%     197
WebKit Using System Malloc_0xac28000      21.7M      6688K      6464K         0K      17059      5579K       885K     14%     197
WebKit Using System Malloc_0xac28000      21.7M      6704K      6512K         0K      18455      5782K       730K     12%     198

AGE = 1, 
WebKit Using System Malloc_0xebe4000      18.1M       400K       400K         0K       1003       166K       234K     59%       8
WebKit Using System Malloc_0xebe4000      20.3M      3984K      3984K       256K      13785      3765K       475K     12%     138
WebKit Using System Malloc_0xebe4000      21.7M      4480K      4464K      1680K      20572      5953K       191K      4%     197
WebKit Using System Malloc_0xebe4000      21.7M       752K       752K      5392K      20572      5953K       191K      4%     197
WebKit Using System Malloc_0xebe4000      21.7M       656K       656K      5488K      20572      5953K       191K      4%     197
WebKit Using System Malloc_0xebe4000      21.7M      4032K      4016K      2176K      21057      6029K       163K      3%     198
WebKit Using System Malloc_0xebe4000      21.1M      5168K      5056K       688K      17601      5074K       670K     12%     174
WebKit Using System Malloc_0xebe4000      21.2M      5376K      5280K       528K      18837      5284K       524K     10%     177
WebKit Using System Malloc_0xebe4000      21.0M      5824K      5680K        64K      18864      5156K       588K     11%     187
WebKit Using System Malloc_0xebe4000      21.0M      5824K      5696K        64K      19331      5216K       544K     10%     187
WebKit Using System Malloc_0xebe4000      21.6M      6272K      6096K        48K      17801      5609K       535K      9%     184
WebKit Using System Malloc_0xebe4000      21.6M      6272K      6096K        48K      17801      5609K       535K      9%     184
WebKit Using System Malloc_0xebe4000      21.6M      6272K      6096K        48K      17801      5609K       535K      9%     184
WebKit Using System Malloc_0xebe4000      20.8M      5648K      5488K        32K      15781      4414K      1106K     21%     181
WebKit Using System Malloc_0xebe4000      22.4M      7152K      6944K        32K      20470      6812K       164K      3%     193
WebKit Using System Malloc_0xebe4000      22.4M      7152K      6944K        32K      20467      6811K       165K      3%     193
WebKit Using System Malloc_0xebe4000      22.3M      7056K      6832K        32K      19811      6640K       224K      4%     187
WebKit Using System Malloc_0xebe4000      22.3M      7056K      6832K        32K      19811      6640K       224K      4%     187
WebKit Using System Malloc_0xebe4000      22.3M      7296K      7008K        32K      18605      6592K       448K      7%     188
WebKit Using System Malloc_0xebe4000      22.6M      7552K      7328K        16K      20547      7119K       225K      4%     196
WebKit Using System Malloc_0xebe4000      22.9M      7872K      7680K        16K      21021      7554K       142K      2%     204
WebKit Using System Malloc_0xebe4000      22.9M      7872K      7680K        16K      21021      7554K       142K      2%     204
WebKit Using System Malloc_0xebe4000      22.9M      7872K      7680K        16K      21013      7553K       143K      2%     204
WebKit Using System Malloc_0xebe4000      23.0M      7904K      7712K        16K      21256      7602K       126K      2%     206
WebKit Using System Malloc_0xebe4000      21.3M      6416K      6160K         0K      17579      5252K       908K     15%     185
WebKit Using System Malloc_0xebe4000      21.3M      6464K      6256K         0K      18954      5474K       782K     13%     187
WebKit Using System Malloc_0xebe4000      21.4M      6496K      6336K         0K      19661      5694K       642K     11%     192
WebKit Using System Malloc_0xebe4000      21.4M      6496K      6336K         0K      19661      5694K       642K     11%     192
WebKit Using System Malloc_0xebe4000      21.4M      6512K      6352K         0K      19952      5735K       617K     10%     193
WebKit Using System Malloc_0xebe4000      21.6M      6704K      6352K         0K      17214      5427K       925K     15%     190
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19874      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.8M      6864K      6608K         0K      19866      6125K       483K      8%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.4M      6576K      6208K         0K      16702      5126K      1082K     18%     195
WebKit Using System Malloc_0xebe4000      21.2M      6352K      6128K         0K      18710      5320K       808K     14%     182
WebKit Using System Malloc_0xebe4000      21.2M      6352K      6128K         0K      18710      5320K       808K     14%     182
WebKit Using System Malloc_0xebe4000      21.2M      6352K      6128K         0K      18710      5320K       808K     14%     182
WebKit Using System Malloc_0xebe4000      21.6M      6736K      6336K         0K      16805      5372K       964K     16%     189
WebKit Using System Malloc_0xebe4000      21.6M      6736K      6336K         0K      16805      5372K       964K     16%     189
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20502      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20502      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20498      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20498      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.5M      6656K      6496K         0K      20494      5891K       605K     10%     197
WebKit Using System Malloc_0xebe4000      21.7M      6832K      6672K         0K      21280      6179K       493K      8%     201
WebKit Using System Malloc_0xebe4000      21.4M      6544K      6192K         0K      17040      5289K       903K     15%     193
WebKit Using System Malloc_0xebe4000      21.4M      6528K      6192K         0K      17040      5289K       903K     15%     193
WebKit Using System Malloc_0xebe4000      21.4M      6528K      6192K         0K      17040      5289K       903K     15%     193
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20108      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.8M      6784K      6576K         0K      20100      6089K       487K      8%     190
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      21.3M      6400K      6048K         0K      17563      5127K       921K     16%     187
WebKit Using System Malloc_0xebe4000      20.9M      6096K      5456K         0K      12619      4203K      1253K     23%     183
WebKit Using System Malloc_0xebe4000      21.5M      6672K      6144K         0K      18345      5460K       684K     12%     196
WebKit Using System Malloc_0xebe4000      21.2M      6400K      6144K         0K      20052      5526K       618K     11%     184
WebKit Using System Malloc_0xebe4000      21.2M      6400K      6144K         0K      20052      5526K       618K     11%     184
WebKit Using System Malloc_0xebe4000      21.2M      6400K      6144K         0K      20052      5526K       618K     11%     184
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.3M      7376K      7152K         0K      18897      6615K       537K      8%     188
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7408K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      19860      6784K       416K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      22.4M      7328K      7200K         0K      20082      6799K       401K      6%     190
WebKit Using System Malloc_0xebe4000      23.1M      7952K      7856K         0K      21373      7686K       170K      3%     212
WebKit Using System Malloc_0xebe4000      21.3M      6336K      6128K         0K      15738      4967K      1161K     19%     188
WebKit Using System Malloc_0xebe4000      21.3M      6336K      6128K         0K      15738      4967K      1161K     19%     188
WebKit Using System Malloc_0xebe4000      21.3M      6368K      6160K         0K      17123      5187K       973K     16%     190
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.2M      6272K      6064K         0K      17541      5192K       872K     15%     182
WebKit Using System Malloc_0xebe4000      21.3M      6448K      6128K         0K      16562      5069K      1059K     18%     187
WebKit Using System Malloc_0xebe4000      21.3M      6448K      6128K         0K      16562      5069K      1059K     18%     187
WebKit Using System Malloc_0xebe4000      21.0M      6208K      5680K         0K      14159      4545K      1135K     20%     184
WebKit Using System Malloc_0xebe4000      21.2M      6368K      6016K         0K      19274      5438K       578K     10%     181
WebKit Using System Malloc_0xebe4000      21.2M      6368K      6016K         0K      19274      5438K       578K     10%     181


AGE = 0, many = 300
WebKit Using System Malloc_0xabec000      18.1M       400K       400K         0K       1003       166K       234K     59%       8
WebKit Using System Malloc_0xabec000      20.3M      4272K      4112K        48K      13342      3677K       483K     12%     135
WebKit Using System Malloc_0xabec000      21.7M      5136K      5104K      1072K      20586      5956K       220K      4%     197
WebKit Using System Malloc_0xabec000      21.7M       912K       912K      5264K      20586      5956K       220K      4%     197
WebKit Using System Malloc_0xabec000      21.7M      4144K      4144K      2096K      21071      6031K       209K      4%     198
WebKit Using System Malloc_0xabec000      21.1M      5968K      5760K         0K      17877      5104K       656K     12%     174
WebKit Using System Malloc_0xabec000      21.1M      2608K      2496K      3264K      17877      5104K       656K     12%     174
WebKit Using System Malloc_0xabec000      21.1M      2608K      2496K      3264K      17877      5104K       656K     12%     174
WebKit Using System Malloc_0xabec000      21.1M      4416K      4416K      1424K      19108      5298K       542K     10%     176
WebKit Using System Malloc_0xabec000      21.0M      5936K      5824K         0K      17267      4896K       928K     16%     171
WebKit Using System Malloc_0xabec000      21.0M      5408K      5328K       496K      17267      4896K       928K     16%     171
WebKit Using System Malloc_0xabec000      21.1M      5504K      5424K       416K      17757      4976K       864K     15%     172
WebKit Using System Malloc_0xabec000      21.4M      6384K      6256K        16K      18092      5466K       806K     13%     178
WebKit Using System Malloc_0xabec000      21.4M      6384K      6256K        16K      18092      5466K       806K     13%     178
WebKit Using System Malloc_0xabec000      21.4M      6400K      6288K        16K      19342      5644K       660K     11%     179
WebKit Using System Malloc_0xabec000      21.5M      6480K      6368K        16K      18440      5548K       836K     14%     177
WebKit Using System Malloc_0xabec000      21.5M      6480K      6368K        16K      18440      5548K       836K     14%     177
WebKit Using System Malloc_0xabec000      21.4M      6640K      6272K        16K      15547      5086K      1202K     20%     189
WebKit Using System Malloc_0xabec000      21.4M      6640K      6272K        16K      15547      5086K      1202K     20%     189
WebKit Using System Malloc_0xabec000      21.4M      6640K      6272K        16K      15547      5086K      1202K     20%     189
WebKit Using System Malloc_0xabec000      21.0M      6368K      5712K        16K      14778      4612K      1116K     20%     185
WebKit Using System Malloc_0xabec000      21.1M      6368K      6000K        16K      18995      5249K       767K     13%     175
WebKit Using System Malloc_0xabec000      21.1M      6368K      6000K        16K      18995      5249K       767K     13%     175
WebKit Using System Malloc_0xabec000      21.1M      6368K      6000K        16K      19365      5286K       730K     13%     175
WebKit Using System Malloc_0xabec000      21.5M      6864K      6160K        16K      16593      5281K       895K     15%     193
WebKit Using System Malloc_0xabec000      21.2M      6384K      6160K        16K      21100      5620K       556K     10%     178
WebKit Using System Malloc_0xabec000      21.2M      6384K      6160K        16K      21100      5620K       556K     10%     178
WebKit Using System Malloc_0xabec000      21.2M      5584K      5568K       608K      21100      5620K       556K     10%     178
WebKit Using System Malloc_0xabec000      21.1M      6080K      5856K        80K      18276      5151K       785K     14%     177
WebKit Using System Malloc_0xabec000      21.1M      6080K      5856K        80K      18276      5151K       785K     14%     177
WebKit Using System Malloc_0xabec000      21.1M      6080K      5856K        80K      18276      5151K       785K     14%     177
Comment 19 Yusuke Suzuki 2019-06-06 21:46:42 PDT
(In reply to Yusuke Suzuki from comment #18)
> Heuristics data. I think AGE = 7 case would be a good starting point.
> AGE = 0 can reduce much memory, but it almost always requires reparsing 400
> functions per scene change.

Not 400, 300. But still too large.
Comment 20 Yusuke Suzuki 2019-06-06 22:18:55 PDT
Created attachment 371560 [details]
Patch

WIP
Comment 21 Yusuke Suzuki 2019-06-06 22:51:35 PDT
Created attachment 371564 [details]
Patch
Comment 22 Yusuke Suzuki 2019-06-07 00:07:23 PDT
Created attachment 371569 [details]
Patch
Comment 23 Saam Barati 2019-06-07 00:31:44 PDT
Comment on attachment 371569 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371569&action=review

> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
> +    if (VM::isInMiniMode() && !m_isGeneratedFromCache && !isBuiltinFunction()) {

Can we add a different switch here to turn this feature on so we can test it in non mini mode?

Maybe something like: “VM::useUnlinkedCodeBlockJettisoning()”

By default, it will be true in mini mode.

And we can also key that off a runtime option that you can set for some of our stress tests?

Do some of our stress tests run in mini mode?

> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:310
> +            vm.unlinkedFunctionExecutableSpace.set.remove(this);

Where do you add to this set?
Comment 24 Yusuke Suzuki 2019-06-07 01:04:20 PDT
Comment on attachment 371569 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371569&action=review

>> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
>> +    if (VM::isInMiniMode() && !m_isGeneratedFromCache && !isBuiltinFunction()) {
> 
> Can we add a different switch here to turn this feature on so we can test it in non mini mode?
> 
> Maybe something like: “VM::useUnlinkedCodeBlockJettisoning()”
> 
> By default, it will be true in mini mode.
> 
> And we can also key that off a runtime option that you can set for some of our stress tests?
> 
> Do some of our stress tests run in mini mode?

Sounds nice. Added.

>> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:310
>> +            vm.unlinkedFunctionExecutableSpace.set.remove(this);
> 
> Where do you add to this set?

UnlinkedFunctionExecutable::unlinkedCodeBlockFor adds |this| to this set if it sets UnlinkedFunctionCodeBlock. This set is maintained before this patch.
Comment 25 EWS Watchlist 2019-06-07 02:09:24 PDT
Comment on attachment 371569 [details]
Patch

Attachment 371569 [details] did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12403825

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases
apiTests
Comment 26 Yusuke Suzuki 2019-06-07 16:14:49 PDT
Created attachment 371624 [details]
Patch
Comment 27 Saam Barati 2019-06-09 13:06:12 PDT
Comment on attachment 371624 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371624&action=review

Nice! r=me

> Source/JavaScriptCore/ChangeLog:54
> +        UnlinkedCodeBlock link weak. We also use execution counter information to reset this age: CodeBlock will reset undelying UnlinkedCodeBlock's age if it has some
> +        execution. While this heuristic is quite simple, it has some effect in practice. Basically what happens with this heuristic is that UnlinkedFunctionExecutable ->

"if it has some execution" -> "if it has executed"

> Source/JavaScriptCore/ChangeLog:67
> +        memory footprint of our target application from about 6.5 MB to about 5.9 MB.

nice!

> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1377
> +        if (!VM::isInMiniMode())

should call useUnlinkedCodeBlockJettisoning instead of miniMode.

> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1392
> +        case JITType::DFGJIT:

Doesn't the DFG have an execution counter?

> Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:432
> +    unsigned m_age : 3;

nit: maybe  static_assert (1 << 3 >= maxAge) ?

> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:151
> +    // We also keep builtin functions. The builtin functions are foundamental library for JavaScript, which means that they can be used in random places of
> +    // the client scripts. It is safe to assume that builtin functions are used relatively frequently from many call sites.

Are we sure this is the case? Wouldn't this be captured by your executionCount logic?

> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
> +    if (VM::useUnlinkedCodeBlockJettisoning() && !m_isGeneratedFromCache && !isBuiltinFunction()) {

nit: You have this logic exactly in visitChildren too. Can you instead make it a helper method on UnlinkedFunctionExecutable? Maybe "codeBlockEdgeMayBeWeak" or "shouldConsiderCodeBlockEdgeAsWeak"
Comment 28 Yusuke Suzuki 2019-06-10 12:24:48 PDT
Comment on attachment 371624 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=371624&action=review

Thank you for your review!

>> Source/JavaScriptCore/ChangeLog:54
>> +        execution. While this heuristic is quite simple, it has some effect in practice. Basically what happens with this heuristic is that UnlinkedFunctionExecutable ->
> 
> "if it has some execution" -> "if it has executed"

Fixed.

>> Source/JavaScriptCore/ChangeLog:67
>> +        memory footprint of our target application from about 6.5 MB to about 5.9 MB.
> 
> nice!

Fixed.

>> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1377
>> +        if (!VM::isInMiniMode())
> 
> should call useUnlinkedCodeBlockJettisoning instead of miniMode.

Yeah, fixed.

>> Source/JavaScriptCore/bytecode/CodeBlock.cpp:1392
>> +        case JITType::DFGJIT:
> 
> Doesn't the DFG have an execution counter?

DFG has the counter too. I thought that DFG and FTL are optimizing layer so that we do not need to handle ages here. But for now, we can do the same thing for DFG too. Fixed.

>> Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h:432
>> +    unsigned m_age : 3;
> 
> nit: maybe  static_assert (1 << 3 >= maxAge) ?

Added, nice.

>> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:151
>> +    // the client scripts. It is safe to assume that builtin functions are used relatively frequently from many call sites.
> 
> Are we sure this is the case? Wouldn't this be captured by your executionCount logic?

This flag is not added based on the empirical measurement, so as you said, maybe our aging mechanism covers this well. Removed.

>> Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp:295
>> +    if (VM::useUnlinkedCodeBlockJettisoning() && !m_isGeneratedFromCache && !isBuiltinFunction()) {
> 
> nit: You have this logic exactly in visitChildren too. Can you instead make it a helper method on UnlinkedFunctionExecutable? Maybe "codeBlockEdgeMayBeWeak" or "shouldConsiderCodeBlockEdgeAsWeak"

Yeah, nice. Fixed.
Comment 29 Yusuke Suzuki 2019-06-10 12:50:04 PDT
Committed r246272: <https://trac.webkit.org/changeset/246272>
Comment 30 Yusuke Suzuki 2019-06-10 13:02:34 PDT
Committed r246274: <https://trac.webkit.org/changeset/246274>
Comment 31 Yusuke Suzuki 2019-06-10 13:10:43 PDT
Committed r246275: <https://trac.webkit.org/changeset/246275>
Comment 32 Yusuke Suzuki 2019-06-10 13:11:48 PDT
I'll create a follow-up patch in https://bugs.webkit.org/show_bug.cgi?id=198727
Comment 33 Guillaume Emont 2019-06-12 07:51:40 PDT
This change might be what made stress/ftl-gettypedarrayoffset-wasteful.js slow to a point it times out on arm/linux. Reported on Bug 198754 and skipped the test for now.