[webkit-changes] [WebKit/WebKit] 0420e9: [macOS] background tab suspension - 3.5% MBA8, 2 me...

Miguel Salinas noreply at github.com
Fri Apr 21 14:35:47 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0420e99f106002c9da9e4803154ae715289a3087
      https://github.com/WebKit/WebKit/commit/0420e99f106002c9da9e4803154ae715289a3087
  Author: Miguel Salinas <miguel_salinas at apple.com>
  Date:   2023-04-21 (Fri, 21 Apr 2023)

  Changed paths:
    M Source/WebKit/UIProcess/ProcessThrottler.cpp
    M Source/WebKit/UIProcess/ProcessThrottler.h
    M Source/WebKit/UIProcess/WebPageProxy.cpp
    M Source/WebKit/UIProcess/WebPageProxy.h
    M Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm

  Log Message:
  -----------
  [macOS] background tab suspension - 3.5% MBA8,2 membuster regression
https://bugs.webkit.org/show_bug.cgi?id=255226
rdar://106969950

Reviewed by Chris Dumez.

Membuster sends a low memory signal to web content processes to measure
the memory impact of our low memory handler. When runningboard
throttling is enabled on MBA8,2 the web content process never gets
scheduled due to the machine only having 2 cores and the web content
process having a priority of darwin_bg. This fix holds the foreground
assertion for 8 minutes after the last foreground activity is released
to ensure we have enough time to handle the low memory signal in
membuster. I also tried having the web content process take an assertion
on itself for the duration of the low memory handler but that did not
fix the regression.

* Source/WebKit/UIProcess/ProcessThrottler.cpp:
(WebKit::ProcessThrottlerTimedActivity::ProcessThrottlerTimedActivity):
(WebKit::ProcessThrottlerTimedActivity::operator=):
(WebKit::ProcessThrottlerTimedActivity::activityTimedOut):
(WebKit::ProcessThrottlerTimedActivity::updateTimer):
(WebKit::ProcessThrottler::TimedActivity::TimedActivity): Deleted.
(WebKit::ProcessThrottler::TimedActivity::operator=): Deleted.
(WebKit::ProcessThrottler::TimedActivity::activityTimedOut): Deleted.
(WebKit::ProcessThrottler::TimedActivity::updateTimer): Deleted.
* Source/WebKit/UIProcess/ProcessThrottler.h:
* Source/WebKit/UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::ProcessActivityState::ProcessActivityState):
(WebKit::WebPageProxy::ProcessActivityState::takeVisibleActivity):
(WebKit::WebPageProxy::ProcessActivityState::takeAudibleActivity):
(WebKit::WebPageProxy::ProcessActivityState::takeCapturingActivity):
(WebKit::WebPageProxy::ProcessActivityState::reset):
(WebKit::WebPageProxy::ProcessActivityState::dropVisibleActivity):
(WebKit::WebPageProxy::ProcessActivityState::dropAudibleActivity):
(WebKit::WebPageProxy::ProcessActivityState::dropCapturingActivity):
(WebKit::WebPageProxy::ProcessActivityState::hasValidVisibleActivity const):
(WebKit::WebPageProxy::ProcessActivityState::hasValidAudibleActivity const):
(WebKit::WebPageProxy::ProcessActivityState::hasValidCapturingActivity const):
(WebKit::WebPageProxy::ProcessActivityState::takeOpeningAppLinkActivity):
(WebKit::WebPageProxy::ProcessActivityState::dropOpeningAppLinkActivity):
(WebKit::WebPageProxy::ProcessActivityState::hasValidOpeningAppLinkActivity const):
(WebKit::WebPageProxy::close):
(WebKit::WebPageProxy::updateThrottleState):
(WebKit::WebPageProxy::clearAudibleActivity):
(WebKit::WebPageProxy::waitForDidUpdateActivityState):
(WebKit::WebPageProxy::resetStateAfterProcessExited):
* Source/WebKit/UIProcess/WebPageProxy.h:
* Source/WebKit/UIProcess/ios/WebPageProxyIOS.mm:
(WebKit::WebPageProxy::willOpenAppLink):

Canonical link: https://commits.webkit.org/263264@main




More information about the webkit-changes mailing list