Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 470bd54de983712380aa5478840b0fe53e566f76 https://github.com/WebKit/WebKit/commit/470bd54de983712380aa5478840b0fe53e566f76 Author: Ben Nham <n...@apple.com> 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 webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes