Title: [279084] trunk/Source/WebCore
Revision
279084
Author
cdu...@apple.com
Date
2021-06-21 14:36:27 -0700 (Mon, 21 Jun 2021)

Log Message

Too much CPU time is spent under MemoryPressureHandler::currentMemoryUsagePolicy()
https://bugs.webkit.org/show_bug.cgi?id=227001

Reviewed by Simon Fraser.

Make it so that RenderLayerCompositor::updateCompositingPolicy() queries MemoryPressureHandler::currentMemoryUsagePolicy()
at most once every 2 seconds given that the call is expensive. It can currently get called several times a second and
shows on CPU profiles.

* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::updateCompositingPolicy):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (279083 => 279084)


--- trunk/Source/WebCore/ChangeLog	2021-06-21 21:25:45 UTC (rev 279083)
+++ trunk/Source/WebCore/ChangeLog	2021-06-21 21:36:27 UTC (rev 279084)
@@ -1,3 +1,17 @@
+2021-06-21  Chris Dumez  <cdu...@apple.com>
+
+        Too much CPU time is spent under MemoryPressureHandler::currentMemoryUsagePolicy()
+        https://bugs.webkit.org/show_bug.cgi?id=227001
+
+        Reviewed by Simon Fraser.
+
+        Make it so that RenderLayerCompositor::updateCompositingPolicy() queries MemoryPressureHandler::currentMemoryUsagePolicy()
+        at most once every 2 seconds given that the call is expensive. It can currently get called several times a second and
+        shows on CPU profiles.
+
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::updateCompositingPolicy):
+
 2021-06-21  Megan Gardner  <megan_gard...@apple.com>
 
         AppHighlights disappear on page reload

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (279083 => 279084)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2021-06-21 21:25:45 UTC (rev 279083)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2021-06-21 21:36:27 UTC (rev 279084)
@@ -485,8 +485,16 @@
         return m_compositingPolicy != currentPolicy;
     }
     
-    auto memoryPolicy = MemoryPressureHandler::currentMemoryUsagePolicy();
-    m_compositingPolicy = memoryPolicy == WTF::MemoryUsagePolicy::Unrestricted ? CompositingPolicy::Normal : CompositingPolicy::Conservative;
+    static auto cachedMemoryPolicy = WTF::MemoryUsagePolicy::Unrestricted;
+    static MonotonicTime cachedMemoryPolicyTime;
+    static constexpr auto memoryPolicyCachingDuration = 2_s;
+    auto now = MonotonicTime::now();
+    if (now - cachedMemoryPolicyTime > memoryPolicyCachingDuration) {
+        cachedMemoryPolicy = MemoryPressureHandler::currentMemoryUsagePolicy();
+        cachedMemoryPolicyTime = now;
+    }
+
+    m_compositingPolicy = cachedMemoryPolicy == WTF::MemoryUsagePolicy::Unrestricted ? CompositingPolicy::Normal : CompositingPolicy::Conservative;
     return m_compositingPolicy != currentPolicy;
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to