Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 470bd54de983712380aa5478840b0fe53e566f76
https://github.com/WebKit/WebKit/commit/470bd54de983712380aa5478840b0fe53e566f76
Author: Ben Nham <[email protected]>
Date: 2023-07-20 (Thu, 20 Jul 2023)
Changed paths:
M Source/WTF/wtf/FileSystem.h
M Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.cpp
M Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.h
Log Message:
-----------
Use mapped files in CacheStorageDiskStore
https://bugs.webkit.org/show_bug.cgi?id=259371
rdar://problem/112623177
Reviewed by Chris Dumez.
Currently CacheStorageDiskStore reads entire files into dirty memory. When many
DOMCache operations
in flight, this can lead to a temporary explosion in NetworkProcess memory
usage (in the gigabytes
of footprint).
To fix this issue, we use read-only mapped files in CacheStorageDiskStore
instead, as we do with the
regular network cache. This trades dirty footprint for higher vnode usage. But
that should be okay
as the number of vnodes consumed by DOMCache should be much lower than the
number of vnodes used by
NetworkCache, which is already mmap'ing everything.
I also removed some unnecessary cross-thread copies, as the data we're passing
across threads isn't
affined to a particular thread (e.g. no non-atomic ref counts).
* Source/WTF/wtf/FileSystem.h:
(WTF::FileSystemImpl::MappedFileData::toSpan):
(WTF::FileSystemImpl::MappedFileData::create):
* Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.cpp:
(WebKit::readRecordInfoFromFileData):
(WebKit::CacheStorageDiskStore::readRecordFromFileData):
(WebKit::CacheStorageDiskStore::readAllRecordInfosInternal):
(WebKit::CacheStorageDiskStore::readAllRecordInfos):
(WebKit::CacheStorageDiskStore::readRecordsInternal):
(WebKit::CacheStorageDiskStore::readRecords):
* Source/WebKit/NetworkProcess/storage/CacheStorageDiskStore.h:
Canonical link: https://commits.webkit.org/266199@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes