memoryStatus() is wrong in certain testing scenarios on iOS
authorsbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 27 Mar 2018 20:52:35 +0000 (20:52 +0000)
committersbarati@apple.com <sbarati@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 27 Mar 2018 20:52:35 +0000 (20:52 +0000)
https://bugs.webkit.org/show_bug.cgi?id=184050
<rdar://problem/37959258>

Rubber-stamped by Mark Lam.

This switches us from using "phys_footprint" to using "internal + compressed"
when computing the dirty memory in the current process. There are iOS testing
scenarios where phys_footprint doesn't give us a reliable answer. In my testing,
"internal + compressed" tracks phys_footprint closely (when phys_footprint is
working). They're usually within much less than 1% of each other. We're making
this change to ensure testing in our iOS infrastructure is valid.

I opened a bug to move back to phys_footprint when it's feasible:
https://bugs.webkit.org/show_bug.cgi?id=184050

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

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

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

index 177975a..7e819ff 100644 (file)
@@ -1,3 +1,24 @@
+2018-03-27  Saam Barati  <sbarati@apple.com>
+
+        memoryStatus() is wrong in certain testing scenarios on iOS
+        https://bugs.webkit.org/show_bug.cgi?id=184050
+        <rdar://problem/37959258>
+
+        Rubber-stamped by Mark Lam.
+
+        This switches us from using "phys_footprint" to using "internal + compressed"
+        when computing the dirty memory in the current process. There are iOS testing
+        scenarios where phys_footprint doesn't give us a reliable answer. In my testing,
+        "internal + compressed" tracks phys_footprint closely (when phys_footprint is
+        working). They're usually within much less than 1% of each other. We're making
+        this change to ensure testing in our iOS infrastructure is valid.
+        
+        I opened a bug to move back to phys_footprint when it's feasible:
+        https://bugs.webkit.org/show_bug.cgi?id=184050
+
+        * bmalloc/AvailableMemory.cpp:
+        (bmalloc::memoryStatus):
+
 2018-03-20  Tim Horton  <timothy_horton@apple.com>
 
         Add and adopt WK_PLATFORM_NAME and adjust default feature defines
index fcc9b98..e5ba09f 100644 (file)
@@ -99,8 +99,12 @@ MemoryStatus memoryStatus()
     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);
+    if (KERN_SUCCESS == task_info(mach_task_self(), TASK_VM_INFO, (task_info_t)(&vmInfo), &vmSize)) {
+        // FIXME: Move back to phys_footprint when it works in all of our
+        // iOS testing infrastructure:
+        // https://bugs.webkit.org/show_bug.cgi?id=184050
+        memoryFootprint = static_cast<size_t>(vmInfo.internal) + static_cast<size_t>(vmInfo.compressed);
+    }
 
     double percentInUse = static_cast<double>(memoryFootprint) / static_cast<double>(availableMemory());
     double percentAvailableMemoryInUse = std::min(percentInUse, 1.0);