Title: [255378] trunk/Source
- Revision
- 255378
- Author
- cdu...@apple.com
- Date
- 2020-01-29 13:20:55 -0800 (Wed, 29 Jan 2020)
Log Message
[iOS] Make sure unused service worker processes exit promptly on low memory warning
https://bugs.webkit.org/show_bug.cgi?id=206939
<rdar://problem/58972717>
Reviewed by Alex Christensen.
Make sure unused service worker processes exit promptly on low memory warning. They normally take 10 seconds to exit
for performance reasons. However, in case of memory pressure, keeping those processes around that long is not the
right thing to do.
Source/WebCore:
* workers/service/server/SWServer.cpp:
(WebCore::SWServer::handleLowMemoryWarning):
* workers/service/server/SWServer.h:
Source/WebKit:
* NetworkProcess/NetworkProcess.cpp:
(WebKit::NetworkProcess::lowMemoryHandler):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (255377 => 255378)
--- trunk/Source/WebCore/ChangeLog 2020-01-29 21:00:40 UTC (rev 255377)
+++ trunk/Source/WebCore/ChangeLog 2020-01-29 21:20:55 UTC (rev 255378)
@@ -1,3 +1,19 @@
+2020-01-29 Chris Dumez <cdu...@apple.com>
+
+ [iOS] Make sure unused service worker processes exit promptly on low memory warning
+ https://bugs.webkit.org/show_bug.cgi?id=206939
+ <rdar://problem/58972717>
+
+ Reviewed by Alex Christensen.
+
+ Make sure unused service worker processes exit promptly on low memory warning. They normally take 10 seconds to exit
+ for performance reasons. However, in case of memory pressure, keeping those processes around that long is not the
+ right thing to do.
+
+ * workers/service/server/SWServer.cpp:
+ (WebCore::SWServer::handleLowMemoryWarning):
+ * workers/service/server/SWServer.h:
+
2020-01-29 Antoine Quint <grao...@apple.com>
[Web Animations] `DeclarativeAnimation` for CSS Animation is not always destroyed when class that applies `animation-name` is removed
Modified: trunk/Source/WebCore/workers/service/server/SWServer.cpp (255377 => 255378)
--- trunk/Source/WebCore/workers/service/server/SWServer.cpp 2020-01-29 21:00:40 UTC (rev 255377)
+++ trunk/Source/WebCore/workers/service/server/SWServer.cpp 2020-01-29 21:20:55 UTC (rev 255378)
@@ -43,6 +43,7 @@
#include "ServiceWorkerFetchResult.h"
#include "ServiceWorkerJobData.h"
#include <wtf/CompletionHandler.h>
+#include <wtf/MemoryPressureHandler.h>
#include <wtf/NeverDestroyed.h>
#include <wtf/text/WTFString.h>
@@ -912,7 +913,7 @@
m_clientIdentifiersPerOrigin.remove(clientOrigin);
});
- iterator->value.terminateServiceWorkersTimer->startOneShot(m_isProcessTerminationDelayEnabled ? terminationDelay : 0_s);
+ iterator->value.terminateServiceWorkersTimer->startOneShot(m_isProcessTerminationDelayEnabled && !MemoryPressureHandler::singleton().isUnderMemoryPressure() ? terminationDelay : 0_s);
}
auto clientsByRegistrableDomainIterator = m_clientsByRegistrableDomain.find(clientRegistrableDomain);
@@ -932,6 +933,17 @@
m_clientToControllingRegistration.remove(registrationIterator);
}
+void SWServer::handleLowMemoryWarning()
+{
+ // Accelerating the delayed termination of unused service workers due to memory pressure.
+ if (m_isProcessTerminationDelayEnabled) {
+ for (auto& clients : m_clientIdentifiersPerOrigin.values()) {
+ if (clients.terminateServiceWorkersTimer)
+ clients.terminateServiceWorkersTimer->startOneShot(0_s);
+ }
+ }
+}
+
void SWServer::removeFromScopeToRegistrationMap(const ServiceWorkerRegistrationKey& key)
{
m_scopeToRegistrationMap.remove(key);
Modified: trunk/Source/WebCore/workers/service/server/SWServer.h (255377 => 255378)
--- trunk/Source/WebCore/workers/service/server/SWServer.h 2020-01-29 21:00:40 UTC (rev 255377)
+++ trunk/Source/WebCore/workers/service/server/SWServer.h 2020-01-29 21:20:55 UTC (rev 255378)
@@ -210,6 +210,8 @@
void softUpdate(SWServerRegistration&);
+ WEBCORE_EXPORT void handleLowMemoryWarning();
+
private:
void scriptFetchFinished(const ServiceWorkerFetchResult&);
Modified: trunk/Source/WebKit/ChangeLog (255377 => 255378)
--- trunk/Source/WebKit/ChangeLog 2020-01-29 21:00:40 UTC (rev 255377)
+++ trunk/Source/WebKit/ChangeLog 2020-01-29 21:20:55 UTC (rev 255378)
@@ -1,5 +1,20 @@
2020-01-29 Chris Dumez <cdu...@apple.com>
+ [iOS] Make sure unused service worker processes exit promptly on low memory warning
+ https://bugs.webkit.org/show_bug.cgi?id=206939
+ <rdar://problem/58972717>
+
+ Reviewed by Alex Christensen.
+
+ Make sure unused service worker processes exit promptly on low memory warning. They normally take 10 seconds to exit
+ for performance reasons. However, in case of memory pressure, keeping those processes around that long is not the
+ right thing to do.
+
+ * NetworkProcess/NetworkProcess.cpp:
+ (WebKit::NetworkProcess::lowMemoryHandler):
+
+2020-01-29 Chris Dumez <cdu...@apple.com>
+
Unreviewed, fix Catalyst build after r255366
* Shared/WebPreferencesDefaultValues.cpp:
Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (255377 => 255378)
--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2020-01-29 21:00:40 UTC (rev 255377)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp 2020-01-29 21:20:55 UTC (rev 255378)
@@ -295,6 +295,9 @@
forEachNetworkSession([](auto& networkSession) {
networkSession.clearPrefetchCache();
});
+
+ for (auto& swServer : m_swServers.values())
+ swServer->handleLowMemoryWarning();
}
void NetworkProcess::initializeNetworkProcess(NetworkProcessCreationParameters&& parameters)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes