Bug 155759 - bmalloc: shrink largeMax
Summary: bmalloc: shrink largeMax
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: bmalloc (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Geoffrey Garen
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-22 11:06 PDT by Geoffrey Garen
Modified: 2016-03-22 12:39 PDT (History)
4 users (show)

See Also:


Attachments
Patch (4.08 KB, patch)
2016-03-22 12:01 PDT, Geoffrey Garen
msaboff: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Geoffrey Garen 2016-03-22 11:06:54 PDT
bmalloc: shrink largeMax
Comment 1 Geoffrey Garen 2016-03-22 12:01:32 PDT
Created attachment 274671 [details]
Patch
Comment 2 Geoffrey Garen 2016-03-22 12:02:14 PDT
Memory results:

~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                     
                                                                Baseline                               Patch                                   Δ
Execution Time:
    facebook                                                       224ms                               222ms                      ^ 1.01x faster
    reddit                                                         110ms                               109ms                      ^ 1.01x faster
    flickr                                                         113ms                               115ms                      ! 1.02x slower
    theverge                                                       140ms                               144ms                      ! 1.03x slower
    nimlang                                                        122ms                               118ms                      ^ 1.03x faster
    reddit_memory_warning --runs 0                                   0ms                                 0ms                                    
    flickr_memory_warning --runs 0                                   0ms                                 0ms                                    
    theverge_memory_warning --runs 0                                 0ms                                 0ms                                    

    <geometric mean>                                                 0ms                                 0ms                                    
    <arithmetic mean>                                               89ms                                89ms                       ^ 1.0x faster
    <harmonic mean>                                                  0ms                                 0ms                                    

Peak Memory:
    facebook                                                    73,428kB                            73,172kB                      ^ 1.0x smaller
    reddit                                                      13,316kB                            13,392kB                      ! 1.01x bigger
    flickr                                                      25,316kB                            24,828kB                     ^ 1.02x smaller
    theverge                                                    26,460kB                            26,336kB                      ^ 1.0x smaller
    nimlang                                                    216,848kB                           184,484kB                     ^ 1.18x smaller
    reddit_memory_warning --runs 0                              13,356kB                            13,328kB                      ^ 1.0x smaller
    flickr_memory_warning --runs 0                              25,560kB                            24,888kB                     ^ 1.03x smaller
    theverge_memory_warning --runs 0                            26,468kB                            26,300kB                     ^ 1.01x smaller

    <geometric mean>                                            32,624kB                            31,745kB                     ^ 1.03x smaller
    <arithmetic mean>                                           52,594kB                            48,341kB                     ^ 1.09x smaller
    <harmonic mean>                                             24,814kB                            24,597kB                     ^ 1.01x smaller

Memory at End:
    facebook                                                     2,804kB                             2,724kB                     ^ 1.03x smaller
    reddit                                                       1,688kB                             1,764kB                      ! 1.05x bigger
    flickr                                                       2,724kB                             2,748kB                      ! 1.01x bigger
    theverge                                                     2,776kB                             2,812kB                      ! 1.01x bigger
    nimlang                                                     33,736kB                            33,400kB                     ^ 1.01x smaller
    reddit_memory_warning --runs 0                               8,824kB                             8,796kB                      ^ 1.0x smaller
    flickr_memory_warning --runs 0                              11,848kB                            11,840kB                      ^ 1.0x smaller
    theverge_memory_warning --runs 0                            20,740kB                            20,744kB                       ! 1.0x bigger

    <geometric mean>                                             6,342kB                             6,361kB                       ! 1.0x bigger
    <arithmetic mean>                                           10,643kB                            10,604kB                      ^ 1.0x smaller
    <harmonic mean>                                              4,098kB                             4,145kB                      ! 1.01x bigger
Comment 3 Geoffrey Garen 2016-03-22 12:02:31 PDT
Throughput results:

~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                                      Baseline                          Patch                              Δ
Execution Time:
    churn                                                 79ms                           76ms                 ^ 1.04x faster
    list_allocate                                         70ms                           74ms                 ! 1.06x slower
    tree_allocate                                         74ms                           72ms                 ^ 1.03x faster
    tree_churn                                            80ms                           80ms                               
    fragment                                              70ms                           69ms                 ^ 1.01x faster
    fragment_iterate                                      75ms                           76ms                 ! 1.01x slower
    medium                                               194ms                          179ms                 ^ 1.08x faster
    big                                                  139ms                          139ms                               
    facebook                                             234ms                          233ms                  ^ 1.0x faster
    reddit                                               110ms                          111ms                 ! 1.01x slower
    flickr                                               115ms                          113ms                 ^ 1.02x faster
    theverge                                             143ms                          144ms                 ! 1.01x slower
    nimlang                                              123ms                          121ms                 ^ 1.02x faster
    message_one                                          209ms                          207ms                 ^ 1.01x faster
    message_many                                         114ms                          114ms                               
    churn --parallel                                      40ms                           40ms                               
    list_allocate --parallel                              66ms                           65ms                 ^ 1.02x faster
    tree_allocate --parallel                              81ms                           82ms                 ! 1.01x slower
    tree_churn --parallel                                 87ms                           82ms                 ^ 1.06x faster
    fragment --parallel                                   47ms                           47ms                               
    fragment_iterate --parallel                           32ms                           31ms                 ^ 1.03x faster
    medium --parallel                                    182ms                          180ms                 ^ 1.01x faster
    big --parallel                                       130ms                          131ms                 ! 1.01x slower

    <geometric mean>                                      96ms                           95ms                 ^ 1.01x faster
    <arithmetic mean>                                    108ms                          107ms                 ^ 1.01x faster
    <harmonic mean>                                       84ms                           83ms                 ^ 1.01x faster

Peak Memory:
    churn                                                780kB                          780kB                               
    list_allocate                                      2,092kB                        2,092kB                               
    tree_allocate                                      5,452kB                        5,452kB                               
    tree_churn                                         4,760kB                        4,760kB                               
    fragment                                           7,000kB                        7,000kB                               
    fragment_iterate                                  25,580kB                       25,580kB                               
    medium                                         1,068,416kB                    1,068,416kB                               
    big                                            1,060,460kB                    1,060,460kB                               
    facebook                                          73,428kB                       73,172kB                 ^ 1.0x smaller
    reddit                                            13,388kB                       13,368kB                 ^ 1.0x smaller
    flickr                                            25,316kB                       24,748kB                ^ 1.02x smaller
    theverge                                          26,460kB                       26,304kB                ^ 1.01x smaller
    nimlang                                          216,900kB                      184,484kB                ^ 1.18x smaller
    message_one                                        4,524kB                        4,504kB                 ^ 1.0x smaller
    message_many                                       4,968kB                        4,996kB                 ! 1.01x bigger
    churn --parallel                                     956kB                          964kB                 ! 1.01x bigger
    list_allocate --parallel                           2,192kB                        2,212kB                 ! 1.01x bigger
    tree_allocate --parallel                           3,300kB                        3,304kB                  ! 1.0x bigger
    tree_churn --parallel                              2,972kB                        2,988kB                 ! 1.01x bigger
    fragment --parallel                                7,156kB                        7,156kB                               
    fragment_iterate --parallel                       25,716kB                       25,724kB                  ! 1.0x bigger
    medium --parallel                              1,067,404kB                    1,064,652kB                 ^ 1.0x smaller
    big --parallel                                 1,058,680kB                    1,057,880kB                 ^ 1.0x smaller

    <geometric mean>                                  18,364kB                       18,226kB                ^ 1.01x smaller
    <arithmetic mean>                                204,691kB                      203,087kB                ^ 1.01x smaller
    <harmonic mean>                                    4,379kB                        4,390kB                  ! 1.0x bigger

Memory at End:
    churn                                                368kB                          368kB                               
    list_allocate                                        396kB                          396kB                               
    tree_allocate                                        432kB                          432kB                               
    tree_churn                                           420kB                          420kB                               
    fragment                                             448kB                          448kB                               
    fragment_iterate                                     628kB                          628kB                               
    medium                                             4,608kB                        4,608kB                               
    big                                                4,592kB                        4,592kB                               
    facebook                                           2,804kB                        2,724kB                ^ 1.03x smaller
    reddit                                             1,760kB                        1,740kB                ^ 1.01x smaller
    flickr                                             2,724kB                        2,668kB                ^ 1.02x smaller
    theverge                                           2,776kB                        2,780kB                  ! 1.0x bigger
    nimlang                                           33,788kB                       33,400kB                ^ 1.01x smaller
    message_one                                          688kB                          668kB                ^ 1.03x smaller
    message_many                                       1,084kB                        1,084kB                               
    churn --parallel                                     540kB                          548kB                 ! 1.01x bigger
    list_allocate --parallel                             576kB                          588kB                 ! 1.02x bigger
    tree_allocate --parallel                             668kB                          660kB                ^ 1.01x smaller
    tree_churn --parallel                              1,104kB                        1,176kB                 ! 1.07x bigger
    fragment --parallel                                1,404kB                        1,320kB                ^ 1.06x smaller
    fragment_iterate --parallel                          832kB                          836kB                  ! 1.0x bigger
    medium --parallel                                  4,736kB                        4,728kB                 ^ 1.0x smaller
    big --parallel                                     4,720kB                        4,708kB                 ^ 1.0x smaller

    <geometric mean>                                   1,343kB                        1,339kB                 ^ 1.0x smaller
    <arithmetic mean>                                  3,135kB                        3,110kB                ^ 1.01x smaller
    <harmonic mean>                                      865kB                          865kB                 ^ 1.0x smaller
Comment 4 Michael Saboff 2016-03-22 12:06:59 PDT
Comment on attachment 274671 [details]
Patch

r=me

Do you have any performance data showing memory usage improvement and the impact of possibly more XLarge objects?
Comment 5 Geoffrey Garen 2016-03-22 12:09:29 PDT
> Do you have any performance data showing memory usage improvement and the
> impact of possibly more XLarge objects?

The data above cover memory in the average case.

There is a potential for worse XLarge memory usage in the worst case. But we are saved in the average case because XLarge objects are rare.
Comment 6 Michael Saboff 2016-03-22 12:19:14 PDT
(In reply to comment #5)
> > Do you have any performance data showing memory usage improvement and the
> > impact of possibly more XLarge objects?
> 
> The data above cover memory in the average case.
> 
> There is a potential for worse XLarge memory usage in the worst case. But we
> are saved in the average case because XLarge objects are rare.

Didn't see the perf results when I reviewed.  I like the results, especially the nimlang peak reduction.
Comment 7 Geoffrey Garen 2016-03-22 12:39:12 PDT
Committed r198545: <http://trac.webkit.org/changeset/198545>