bmalloc: support physical page sizes that don't match the virtual page size
Created attachment 274931 [details] Patch
*** 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 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.
Committed r198702: <http://trac.webkit.org/changeset/198702>