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

Reply via email to