Bug 155898 - bmalloc: support physical page sizes that don't match the virtual page size
Summary: bmalloc: support physical page sizes that don't match the virtual page size
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Geoffrey Garen
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-03-25 12:52 PDT by Geoffrey Garen
Modified: 2016-03-25 16:45 PDT (History)
3 users (show)

See Also:


Attachments
Patch (13.70 KB, patch)
2016-03-25 13:00 PDT, Geoffrey Garen
barraclough: 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-25 12:52:07 PDT
bmalloc: support physical page sizes that don't match the virtual page size
Comment 1 Geoffrey Garen 2016-03-25 13:00:51 PDT
Created attachment 274931 [details]
Patch
Comment 2 Geoffrey Garen 2016-03-25 13:02:30 PDT
*** Tested on a 4kB/4kB Mac ***

** Memory: **

~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks --memory_warning Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                     
                                                                Baseline                               Patch                                   Δ
Peak Memory:
    reddit_memory_warning --runs 0                              13,152kB                            13,152kB                                    
    flickr_memory_warning --runs 0                              23,940kB                            23,896kB                      ^ 1.0x smaller
    theverge_memory_warning --runs 0                            25,488kB                            25,516kB                       ! 1.0x bigger

    <geometric mean>                                            20,021kB                            20,016kB                      ^ 1.0x smaller
    <arithmetic mean>                                           20,860kB                            20,855kB                      ^ 1.0x smaller
    <harmonic mean>                                             19,103kB                            19,099kB                      ^ 1.0x smaller

Memory at End:
    reddit_memory_warning --runs 0                               8,708kB                             8,708kB                                    
    flickr_memory_warning --runs 0                              11,952kB                            11,908kB                      ^ 1.0x smaller
    theverge_memory_warning --runs 0                            20,644kB                            20,672kB                       ! 1.0x bigger

    <geometric mean>                                            12,904kB                            12,894kB                      ^ 1.0x smaller
    <arithmetic mean>                                           13,768kB                            13,763kB                      ^ 1.0x smaller
    <harmonic mean>                                             12,148kB                            12,136kB                      ^ 1.0x smaller

~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks --memory Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                  Baseline                Patch                    Δ
Peak Memory:
    facebook                      73,972kB             73,972kB                     
    reddit                        13,244kB             13,256kB        ! 1.0x bigger
    flickr                        23,496kB             23,432kB       ^ 1.0x smaller
    theverge                      25,516kB             25,520kB        ! 1.0x bigger

    <geometric mean>              27,684kB             27,672kB       ^ 1.0x smaller
    <arithmetic mean>             34,057kB             34,045kB       ^ 1.0x smaller
    <harmonic mean>               23,422kB             23,417kB       ^ 1.0x smaller

Memory at End:
    facebook                       3,300kB              3,300kB                     
    reddit                         1,788kB              1,800kB       ! 1.01x bigger
    flickr                         2,872kB              2,812kB      ^ 1.02x smaller
    theverge                       2,868kB              2,872kB        ! 1.0x bigger

    <geometric mean>               2,640kB              2,632kB       ^ 1.0x smaller
    <arithmetic mean>              2,707kB              2,696kB       ^ 1.0x smaller
    <harmonic mean>                2,565kB              2,560kB       ^ 1.0x smaller

** Throughput: **

~/OpenSource/PerformanceTests/MallocBench> ./run-malloc-benchmarks Baseline:~/OpenSource/WebKitBuildBaseline/Release/ Patch:~/OpenSource/WebKitBuild/Release/
                                                                                
                                                      Baseline                          Patch                              Δ
Execution Time:
    churn                                                 78ms                           74ms                 ^ 1.05x faster
    list_allocate                                         73ms                           71ms                 ^ 1.03x faster
    tree_allocate                                         78ms                           72ms                 ^ 1.08x faster
    tree_churn                                            81ms                           80ms                 ^ 1.01x faster
    fragment                                              68ms                           66ms                 ^ 1.03x faster
    fragment_iterate                                      76ms                           75ms                 ^ 1.01x faster
    medium                                               183ms                          174ms                 ^ 1.05x faster
    big                                                  138ms                          140ms                 ! 1.01x slower
    facebook                                             234ms                          231ms                 ^ 1.01x faster
    reddit                                               113ms                          115ms                 ! 1.02x slower
    flickr                                               117ms                          117ms                               
    theverge                                             145ms                          147ms                 ! 1.01x slower
    nimlang                                              123ms                          125ms                 ! 1.02x slower
    message_one                                          208ms                          209ms                  ! 1.0x slower
    message_many                                         113ms                          113ms                               
    churn --parallel                                      37ms                           38ms                 ! 1.03x slower
    list_allocate --parallel                              61ms                           63ms                 ! 1.03x slower
    tree_allocate --parallel                              75ms                           78ms                 ! 1.04x slower
    tree_churn --parallel                                 83ms                           86ms                 ! 1.04x slower
    fragment --parallel                                   47ms                           47ms                               
    fragment_iterate --parallel                           31ms                           31ms                               
    medium --parallel                                    176ms                          181ms                 ! 1.03x slower
    big --parallel                                       131ms                          132ms                 ! 1.01x slower

    <geometric mean>                                      95ms                           95ms                  ^ 1.0x faster
    <arithmetic mean>                                    107ms                          107ms                  ^ 1.0x faster
    <harmonic mean>                                       83ms                           83ms                  ^ 1.0x faster
Comment 3 Gavin Barraclough 2016-03-25 16:01:55 PDT
Comment on attachment 274931 [details]
Patch

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

> Source/bmalloc/bmalloc/Sizes.h:49
> +    static const size_t smallPageSize = 4 * kB;

Maybe we should take the term 'PageSize' out of this variable name at some point. Having a define for 4KB that is not actually correlated to machine page size might lead to confusion & error in the future.
Comment 4 Geoffrey Garen 2016-03-25 16:45:59 PDT
Committed r198702: <http://trac.webkit.org/changeset/198702>