WebKit
WebKit copied to clipboard
Add debug logging for process and page state
e7d7304484632b6bd45655739197176a307f41cd
Add debug logging for process and page state https://bugs.webkit.org/show_bug.cgi?id=245244 rdar://problem/99986063 Reviewed by NOBODY (OOPS!). This adds notifyd callbacks that dump state about processes and pages. I've found this useful recently to debug issues with enabling App Nap and adopting RunningBoard on macOS. I also intend to use this so that Membuster5 knows which domain is loaded into a given WebContent pid. This will allow the benchmark to provide per-origin memory footprint data. I also added logging to UserActivity as we've needed this logging recently to debug and understand issues with App Nap activation. As part of this I changed ProcessAssertion to take the description string as a a string literal to make the logging marginally cheaper. * Source/WTF/wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::singleton): (WTF::MemoryPressureHandler::singletonIfExists): (WTF::MemoryPressureHandler::processStateDescription): * Source/WTF/wtf/MemoryPressureHandler.h: * Source/WebCore/history/BackForwardCache.h: * Source/WebCore/page/MemoryRelease.cpp: (WebCore::logMemoryStatistics): * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::logProcessPoolState): (WebKit::WebProcessPool::platformInitialize): * Source/WebKit/UIProcess/ProcessAssertion.cpp: (WebKit::processAssertionTypeDescription): * Source/WebKit/UIProcess/ProcessAssertion.h: * Source/WebKit/UIProcess/ProcessThrottler.cpp: (WebKit::activityNames): (WebKit::operator<<): * Source/WebKit/UIProcess/ProcessThrottler.h: * Source/WebKit/UIProcess/WebProcessProxy.cpp: (WebKit::operator<<): * Source/WebKit/UIProcess/WebProcessProxy.h: (WebKit::WebProcessProxy::throttler const): * Source/WebKit/WebProcess/WebPage/WebPage.h: (WebKit::WebPage::activityState): * Source/WebKit/WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): (WebKit::WebProcess::processTypeDescription const): * Source/WebKit/WebProcess/WebProcess.h: * Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTypeDescription const): (WebKit::WebProcess::additionalStateForDiagnosticReport const): * Source/WTF/wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::singleton): (WTF::memoryPressureHandlerIfExists): (WTF::MemoryPressureHandler::processStateDescription): * Source/WTF/wtf/MemoryPressureHandler.h: * Source/WebCore/page/MemoryRelease.cpp: (WebCore::logMemoryStatistics): * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::logProcessPoolState): (WebKit::WebProcessPool::platformInitialize): * Source/WebKit/UIProcess/ProcessAssertion.cpp: (WebKit::processAssertionTypeDescription): * Source/WebKit/UIProcess/ProcessAssertion.h: * Source/WebKit/UIProcess/ProcessThrottler.cpp: (WebKit::activityNames): (WebKit::operator<<): * Source/WebKit/UIProcess/ProcessThrottler.h: * Source/WebKit/UIProcess/WebProcessProxy.cpp: (WebKit::operator<<): * Source/WebKit/UIProcess/WebProcessProxy.h: (WebKit::WebProcessProxy::throttler const): * Source/WebKit/WebProcess/WebPage/WebPage.h: (WebKit::WebPage::activityState): * Source/WebKit/WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): (WebKit::WebProcess::processTypeDescription const): * Source/WebKit/WebProcess/WebProcess.h: * Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTypeDescription const): (WebKit::WebProcess::additionalStateForDiagnosticReport const): * Source/WTF/wtf/MemoryPressureHandler.cpp: (WTF::MemoryPressureHandler::singleton): (WTF::memoryPressureHandlerIfExists): (WTF::MemoryPressureHandler::processStateDescription): * Source/WTF/wtf/MemoryPressureHandler.h: * Source/WebCore/page/MemoryRelease.cpp: (WebCore::logMemoryStatistics): * Source/WebCore/platform/CountedUserActivity.h: (WebCore::CountedUserActivity::CountedUserActivity): * Source/WebCore/platform/Logging.h: * Source/WebCore/platform/UserActivity.cpp: (WebCore::UserActivity::Impl::Impl): (WebCore::UserActivity::UserActivity): * Source/WebCore/platform/UserActivity.h: * Source/WebCore/platform/mac/UserActivityMac.mm: (WebCore::UserActivity::Impl::Impl): (WebCore::UserActivity::Impl::beginActivity): (WebCore::UserActivity::Impl::endActivity): * Source/WebCore/platform/mediastream/cocoa/DisplayCaptureSourceCocoa.cpp: (WebCore::DisplayCaptureSourceCocoa::DisplayCaptureSourceCocoa): * Source/WebKit/Shared/AuxiliaryProcess.cpp: (WebKit::AuxiliaryProcess::AuxiliaryProcess): * Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm: (WebKit::logProcessPoolState): (WebKit::WebProcessPool::platformInitialize): * Source/WebKit/UIProcess/ProcessAssertion.cpp: (WebKit::processAssertionTypeDescription): * Source/WebKit/UIProcess/ProcessAssertion.h: * Source/WebKit/UIProcess/ProcessThrottler.cpp: (WebKit::activityNames): (WebKit::operator<<): * Source/WebKit/UIProcess/ProcessThrottler.h: * Source/WebKit/UIProcess/WebProcessProxy.cpp: (WebKit::operator<<): * Source/WebKit/UIProcess/WebProcessProxy.h: (WebKit::WebProcessProxy::throttler const): * Source/WebKit/WebProcess/WebPage/WebPage.cpp: * Source/WebKit/WebProcess/WebPage/WebPage.h: (WebKit::WebPage::activityState): * Source/WebKit/WebProcess/WebProcess.cpp: (WebKit::WebProcess::initializeWebProcess): (WebKit::WebProcess::processTypeDescription const): * Source/WebKit/WebProcess/WebProcess.h: * Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm: (WebKit::WebProcess::processTypeDescription const): (WebKit::WebProcess::additionalStateForDiagnosticReport const):
https://github.com/WebKit/WebKit/commit/e7d7304484632b6bd45655739197176a307f41cd
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/570ab8f7d0665b8ffa7bf94fcc80446ebc0186d9)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/63b1927f3d8a0a2f657a43585236c42a1d17e45d)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/ecd31c4d37404dbeba651ca3225d7f891b271664)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/83b6893d8a242c6f9d7b8b4fbc541a0831162bc7)
This looks super useful! Do you think it'd be reasonable to also log NSActivity
state in UserActivity::Impl::beginActivity()
/UserActivity::Impl::endActivity()
?
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/e7d7304484632b6bd45655739197176a307f41cd)
EWS run on previous version of this PR (hash https://github.com/WebKit/WebKit/commit/73e473c857386ae6db970f487d3de21e182c67b9)
There was a new PR upload but it seems only some of the feedback was addressed?
EWS run on current version of this PR (hash https://github.com/WebKit/WebKit/commit/31b812fb24828a996a0922ae68dc057b6dec8a0e)
Committed 255239@main (501a16433dc7): https://commits.webkit.org/255239@main
Reviewed commits have been landed. Closing PR #4400 and removing active labels.