Revert back to using phys_footprint to calculate isUnderMemoryPressure()
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Jul 2018 02:09:46 +0000 (02:09 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 25 Jul 2018 02:09:46 +0000 (02:09 +0000)
https://bugs.webkit.org/show_bug.cgi?id=187919
<rdar://problem/42552888>

Reviewed by Simon Fraser.

Currently on iOS, bmalloc will run the scavenger more frequently when it detects
that the process is under memory pressure. However, it only uses bmalloc's
own footprint as a percentage of the HW available memory to determine if
the process is under memory pressure. This is a change I recently made
in an effort to run the scavenger less when bmalloc wasn't contributing
to the dirty footprint in the process. However, this fails to run the
scavenger eagerly when the process in question has a heap split
between a lot of dirty bmalloc memory as well as a lot of dirty memory
from elsewhere. We also have evidence that we may have increased jetsams
in the Web Content process. Since my original change was not a measurable
speedup, this patch reverts isUnderMemoryPressure() to its previous
behavior of using phys_footprint to determine if 75% of the available
HW memory is being used.

* bmalloc/AvailableMemory.cpp:
(bmalloc::memoryStatus):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@234185 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/bmalloc/ChangeLog
Source/bmalloc/bmalloc/AvailableMemory.cpp

index 5d6bfca..19ed955 100644 (file)
@@ -1,3 +1,28 @@
+2018-07-24  Saam Barati  <sbarati@apple.com>
+
+        Revert back to using phys_footprint to calculate isUnderMemoryPressure()
+        https://bugs.webkit.org/show_bug.cgi?id=187919
+        <rdar://problem/42552888>
+
+        Reviewed by Simon Fraser.
+
+        Currently on iOS, bmalloc will run the scavenger more frequently when it detects
+        that the process is under memory pressure. However, it only uses bmalloc's
+        own footprint as a percentage of the HW available memory to determine if
+        the process is under memory pressure. This is a change I recently made
+        in an effort to run the scavenger less when bmalloc wasn't contributing
+        to the dirty footprint in the process. However, this fails to run the
+        scavenger eagerly when the process in question has a heap split
+        between a lot of dirty bmalloc memory as well as a lot of dirty memory
+        from elsewhere. We also have evidence that we may have increased jetsams
+        in the Web Content process. Since my original change was not a measurable
+        speedup, this patch reverts isUnderMemoryPressure() to its previous
+        behavior of using phys_footprint to determine if 75% of the available 
+        HW memory is being used.
+
+        * bmalloc/AvailableMemory.cpp:
+        (bmalloc::memoryStatus):
+
 2019-07-12  Michael Saboff  <msaboff@apple.com>
 
         Disable IsoHeaps when Gigacage is off
index ccc5af6..5263e5e 100644 (file)
@@ -108,16 +108,12 @@ size_t availableMemory()
 #if BPLATFORM(IOS)
 MemoryStatus memoryStatus()
 {
-    size_t memoryFootprint;
-    if (PerProcess<Environment>::get()->isDebugHeapEnabled()) {
-        task_vm_info_data_t vmInfo;
-        mach_msg_type_number_t vmSize = TASK_VM_INFO_COUNT;
-        
-        memoryFootprint = 0;
-        if (KERN_SUCCESS == task_info(mach_task_self(), TASK_VM_INFO, (task_info_t)(&vmInfo), &vmSize))
-            memoryFootprint = static_cast<size_t>(vmInfo.phys_footprint);
-    } else
-        memoryFootprint = PerProcess<Scavenger>::get()->footprint();
+    task_vm_info_data_t vmInfo;
+    mach_msg_type_number_t vmSize = TASK_VM_INFO_COUNT;
+    
+    size_t memoryFootprint = 0;
+    if (KERN_SUCCESS == task_info(mach_task_self(), TASK_VM_INFO, (task_info_t)(&vmInfo), &vmSize))
+        memoryFootprint = static_cast<size_t>(vmInfo.phys_footprint);
 
     double percentInUse = static_cast<double>(memoryFootprint) / static_cast<double>(availableMemory());
     double percentAvailableMemoryInUse = std::min(percentInUse, 1.0);