diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-06-27 06:07:23 +0000 |
commit | 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch) | |
tree | 46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/WebKit2/Shared/CacheModel.cpp | |
parent | 32761a6cee1d0dee366b885b7b9c777e67885688 (diff) | |
download | WebKitGtk-tarball-master.tar.gz |
webkitgtk-2.16.5HEADwebkitgtk-2.16.5master
Diffstat (limited to 'Source/WebKit2/Shared/CacheModel.cpp')
-rw-r--r-- | Source/WebKit2/Shared/CacheModel.cpp | 146 |
1 files changed, 86 insertions, 60 deletions
diff --git a/Source/WebKit2/Shared/CacheModel.cpp b/Source/WebKit2/Shared/CacheModel.cpp index 9439e5a78..403f34dfc 100644 --- a/Source/WebKit2/Shared/CacheModel.cpp +++ b/Source/WebKit2/Shared/CacheModel.cpp @@ -27,13 +27,15 @@ #include "CacheModel.h" #include <algorithm> +#include <wtf/RAMSize.h> +#include <wtf/StdLibExtras.h> namespace WebKit { -void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t diskFreeSize, - unsigned& cacheTotalCapacity, unsigned& cacheMinDeadCapacity, unsigned& cacheMaxDeadCapacity, double& deadDecodedDataDeletionInterval, - unsigned& pageCacheCapacity, unsigned long& urlCacheMemoryCapacity, unsigned long& urlCacheDiskCapacity) +void calculateMemoryCacheSizes(CacheModel cacheModel, unsigned& cacheTotalCapacity, unsigned& cacheMinDeadCapacity, unsigned& cacheMaxDeadCapacity, std::chrono::seconds& deadDecodedDataDeletionInterval, unsigned& pageCacheCapacity) { + uint64_t memorySize = ramSize() / MB; + switch (cacheModel) { case CacheModelDocumentViewer: { // Page cache capacity (in pages) @@ -41,30 +43,22 @@ void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t di // Object cache capacities (in bytes) if (memorySize >= 2048) - cacheTotalCapacity = 96 * 1024 * 1024; + cacheTotalCapacity = 96 * MB; else if (memorySize >= 1536) - cacheTotalCapacity = 64 * 1024 * 1024; + cacheTotalCapacity = 64 * MB; else if (memorySize >= 1024) - cacheTotalCapacity = 32 * 1024 * 1024; + cacheTotalCapacity = 32 * MB; else if (memorySize >= 512) - cacheTotalCapacity = 16 * 1024 * 1024; + cacheTotalCapacity = 16 * MB; cacheMinDeadCapacity = 0; cacheMaxDeadCapacity = 0; - // Foundation memory cache capacity (in bytes) - urlCacheMemoryCapacity = 0; - - // Foundation disk cache capacity (in bytes) - urlCacheDiskCapacity = 0; - break; } case CacheModelDocumentBrowser: { // Page cache capacity (in pages) - if (memorySize >= 1024) - pageCacheCapacity = 3; - else if (memorySize >= 512) + if (memorySize >= 512) pageCacheCapacity = 2; else if (memorySize >= 256) pageCacheCapacity = 1; @@ -73,44 +67,22 @@ void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t di // Object cache capacities (in bytes) if (memorySize >= 2048) - cacheTotalCapacity = 96 * 1024 * 1024; + cacheTotalCapacity = 96 * MB; else if (memorySize >= 1536) - cacheTotalCapacity = 64 * 1024 * 1024; + cacheTotalCapacity = 64 * MB; else if (memorySize >= 1024) - cacheTotalCapacity = 32 * 1024 * 1024; + cacheTotalCapacity = 32 * MB; else if (memorySize >= 512) - cacheTotalCapacity = 16 * 1024 * 1024; + cacheTotalCapacity = 16 * MB; cacheMinDeadCapacity = cacheTotalCapacity / 8; cacheMaxDeadCapacity = cacheTotalCapacity / 4; - // Foundation memory cache capacity (in bytes) - if (memorySize >= 2048) - urlCacheMemoryCapacity = 4 * 1024 * 1024; - else if (memorySize >= 1024) - urlCacheMemoryCapacity = 2 * 1024 * 1024; - else if (memorySize >= 512) - urlCacheMemoryCapacity = 1 * 1024 * 1024; - else - urlCacheMemoryCapacity = 512 * 1024; - - // Foundation disk cache capacity (in bytes) - if (diskFreeSize >= 16384) - urlCacheDiskCapacity = 50 * 1024 * 1024; - else if (diskFreeSize >= 8192) - urlCacheDiskCapacity = 40 * 1024 * 1024; - else if (diskFreeSize >= 4096) - urlCacheDiskCapacity = 30 * 1024 * 1024; - else - urlCacheDiskCapacity = 20 * 1024 * 1024; - break; } case CacheModelPrimaryWebBrowser: { // Page cache capacity (in pages) - if (memorySize >= 1024) - pageCacheCapacity = 3; - else if (memorySize >= 512) + if (memorySize >= 512) pageCacheCapacity = 2; else if (memorySize >= 256) pageCacheCapacity = 1; @@ -119,16 +91,16 @@ void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t di // Object cache capacities (in bytes) // (Testing indicates that value / MB depends heavily on content and - // browsing pattern. Even growth above 128MB can have substantial + // browsing pattern. Even growth above 128MB can have substantial // value / MB for some content / browsing patterns.) if (memorySize >= 2048) - cacheTotalCapacity = 128 * 1024 * 1024; + cacheTotalCapacity = 128 * MB; else if (memorySize >= 1536) - cacheTotalCapacity = 96 * 1024 * 1024; + cacheTotalCapacity = 96 * MB; else if (memorySize >= 1024) - cacheTotalCapacity = 64 * 1024 * 1024; + cacheTotalCapacity = 64 * MB; else if (memorySize >= 512) - cacheTotalCapacity = 32 * 1024 * 1024; + cacheTotalCapacity = 32 * MB; cacheMinDeadCapacity = cacheTotalCapacity / 4; cacheMaxDeadCapacity = cacheTotalCapacity / 2; @@ -137,32 +109,86 @@ void calculateCacheSizes(CacheModel cacheModel, uint64_t memorySize, uint64_t di // can prove that the overall system gain would justify the regression. cacheMaxDeadCapacity = std::max(24u, cacheMaxDeadCapacity); - deadDecodedDataDeletionInterval = 60; + deadDecodedDataDeletionInterval = std::chrono::seconds { 60 }; + + break; + } + default: + ASSERT_NOT_REACHED(); + }; +} +void calculateURLCacheSizes(CacheModel cacheModel, uint64_t diskFreeSize, unsigned& urlCacheMemoryCapacity, uint64_t& urlCacheDiskCapacity) +{ + switch (cacheModel) { + case CacheModelDocumentViewer: { + // Foundation memory cache capacity (in bytes) + urlCacheMemoryCapacity = 0; + + // Disk cache capacity (in bytes) + urlCacheDiskCapacity = 0; + + break; + } + case CacheModelDocumentBrowser: { + uint64_t memorySize = ramSize() / MB; + + // Foundation memory cache capacity (in bytes) + if (memorySize >= 2048) + urlCacheMemoryCapacity = 4 * MB; + else if (memorySize >= 1024) + urlCacheMemoryCapacity = 2 * MB; + else if (memorySize >= 512) + urlCacheMemoryCapacity = 1 * MB; + else + urlCacheMemoryCapacity = 512 * KB; + + // Disk cache capacity (in bytes) + if (diskFreeSize >= 16384) + urlCacheDiskCapacity = 75 * MB; + else if (diskFreeSize >= 8192) + urlCacheDiskCapacity = 40 * MB; + else if (diskFreeSize >= 4096) + urlCacheDiskCapacity = 30 * MB; + else + urlCacheDiskCapacity = 20 * MB; + + break; + } + case CacheModelPrimaryWebBrowser: { + uint64_t memorySize = ramSize() / MB; + +#if PLATFORM(IOS) + if (memorySize >= 1024) + urlCacheMemoryCapacity = 16 * MB; + else + urlCacheMemoryCapacity = 8 * MB; +#else // Foundation memory cache capacity (in bytes) // (These values are small because WebCore does most caching itself.) if (memorySize >= 1024) - urlCacheMemoryCapacity = 4 * 1024 * 1024; + urlCacheMemoryCapacity = 4 * MB; else if (memorySize >= 512) - urlCacheMemoryCapacity = 2 * 1024 * 1024; + urlCacheMemoryCapacity = 2 * MB; else if (memorySize >= 256) - urlCacheMemoryCapacity = 1 * 1024 * 1024; + urlCacheMemoryCapacity = 1 * MB; else - urlCacheMemoryCapacity = 512 * 1024; + urlCacheMemoryCapacity = 512 * KB; +#endif - // Foundation disk cache capacity (in bytes) + // Disk cache capacity (in bytes) if (diskFreeSize >= 16384) - urlCacheDiskCapacity = 175 * 1024 * 1024; + urlCacheDiskCapacity = 500 * MB; else if (diskFreeSize >= 8192) - urlCacheDiskCapacity = 150 * 1024 * 1024; + urlCacheDiskCapacity = 250 * MB; else if (diskFreeSize >= 4096) - urlCacheDiskCapacity = 125 * 1024 * 1024; + urlCacheDiskCapacity = 125 * MB; else if (diskFreeSize >= 2048) - urlCacheDiskCapacity = 100 * 1024 * 1024; + urlCacheDiskCapacity = 100 * MB; else if (diskFreeSize >= 1024) - urlCacheDiskCapacity = 75 * 1024 * 1024; + urlCacheDiskCapacity = 75 * MB; else - urlCacheDiskCapacity = 50 * 1024 * 1024; + urlCacheDiskCapacity = 50 * MB; break; } |