Commit 0c24ea68 authored by Sebastien Marchand's avatar Sebastien Marchand Committed by Commit Bot

Record the memory pressure level in tracing

Also add this to the slow report to get a better understanding of the
pressure level when looking at a report.

Change-Id: I73bc8804cb06f5c481b7f8bdc14c79bbcdd28d2f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2025951Reviewed-by: default avataroysteine <oysteine@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
Auto-Submit: Sébastien Marchand <sebmarchand@chromium.org>
Cr-Commit-Position: refs/heads/master@{#736419}
parent 3fec4be4
...@@ -354,7 +354,8 @@ void TabLoader::OnStopTracking(WebContents* web_contents, ...@@ -354,7 +354,8 @@ void TabLoader::OnStopTracking(WebContents* web_contents,
void TabLoader::OnMemoryPressure( void TabLoader::OnMemoryPressure(
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
ReentrancyHelper lifetime_helper(this); ReentrancyHelper lifetime_helper(this);
TRACE_EVENT0("browser", "TabLoader::OnMemoryPressure"); TRACE_EVENT1("browser", "TabLoader::OnMemoryPressure", "Level",
memory_pressure_level);
switch (memory_pressure_level) { switch (memory_pressure_level) {
case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE: case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
......
...@@ -1990,14 +1990,16 @@ void RenderThreadImpl::PurgePluginListCache(bool reload_pages) { ...@@ -1990,14 +1990,16 @@ void RenderThreadImpl::PurgePluginListCache(bool reload_pages) {
void RenderThreadImpl::OnMemoryPressure( void RenderThreadImpl::OnMemoryPressure(
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) { base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
TRACE_EVENT0("memory", "RenderThreadImpl::OnMemoryPressure"); TRACE_EVENT1("memory", "RenderThreadImpl::OnMemoryPressure", "Level",
memory_pressure_level);
if (blink_platform_impl_) { if (blink_platform_impl_) {
blink::WebMemoryPressureListener::OnMemoryPressure( blink::WebMemoryPressureListener::OnMemoryPressure(
static_cast<blink::WebMemoryPressureLevel>(memory_pressure_level)); static_cast<blink::WebMemoryPressureLevel>(memory_pressure_level));
} }
if (memory_pressure_level == if (memory_pressure_level ==
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
ReleaseFreeMemory(); ReleaseFreeMemory();
}
} }
void RenderThreadImpl::RecordPurgeMemory(RendererMemoryMetrics before) { void RenderThreadImpl::RecordPurgeMemory(RendererMemoryMetrics before) {
......
...@@ -42,6 +42,7 @@ const char* const kTopLevelIpcRunTaskAllowedArgs[] = {"ipc_hash", nullptr}; ...@@ -42,6 +42,7 @@ const char* const kTopLevelIpcRunTaskAllowedArgs[] = {"ipc_hash", nullptr};
const char* const kLifecyclesTaskPostedAllowedArgs[] = { const char* const kLifecyclesTaskPostedAllowedArgs[] = {
"task_queue_name", "time_since_disabled_ms", "ipc_hash", "location", "task_queue_name", "time_since_disabled_ms", "ipc_hash", "location",
nullptr}; nullptr};
const char* const kMemoryPressureEventsAllowedArgs[] = {"Level", nullptr};
const WhitelistEntry kEventArgsWhitelist[] = { const WhitelistEntry kEventArgsWhitelist[] = {
{"__metadata", "thread_name", nullptr}, {"__metadata", "thread_name", nullptr},
...@@ -55,7 +56,11 @@ const WhitelistEntry kEventArgsWhitelist[] = { ...@@ -55,7 +56,11 @@ const WhitelistEntry kEventArgsWhitelist[] = {
{"base", "ScopedMayLoadLibraryAtBackgroundPriority", {"base", "ScopedMayLoadLibraryAtBackgroundPriority",
kScopedBlockingCallAllowedArgs}, kScopedBlockingCallAllowedArgs},
{"benchmark", "TestWhitelist*", nullptr}, {"benchmark", "TestWhitelist*", nullptr},
{"blink", "MemoryPressureListenerRegistry::onMemoryPressure",
kMemoryPressureEventsAllowedArgs},
{"browser", "KeyedServiceFactory::GetServiceForContext", nullptr}, {"browser", "KeyedServiceFactory::GetServiceForContext", nullptr},
{"browser", "TabLoader::OnMemoryPressure",
kMemoryPressureEventsAllowedArgs},
{"fonts", "CachedFontLinkSettings::GetLinkedFonts", nullptr}, {"fonts", "CachedFontLinkSettings::GetLinkedFonts", nullptr},
{"fonts", "QueryLinkedFontsFromRegistry", nullptr}, {"fonts", "QueryLinkedFontsFromRegistry", nullptr},
{"fonts", "RenderTextHarfBuzz::ItemizeTextToRuns::Runs", nullptr}, {"fonts", "RenderTextHarfBuzz::ItemizeTextToRuns::Runs", nullptr},
...@@ -63,6 +68,8 @@ const WhitelistEntry kEventArgsWhitelist[] = { ...@@ -63,6 +68,8 @@ const WhitelistEntry kEventArgsWhitelist[] = {
{"ipc", "GpuChannelHost::Send", nullptr}, {"ipc", "GpuChannelHost::Send", nullptr},
{"ipc", "SyncChannel::Send", nullptr}, {"ipc", "SyncChannel::Send", nullptr},
{"latencyInfo", "*", kInputLatencyAllowedArgs}, {"latencyInfo", "*", kInputLatencyAllowedArgs},
{"memory", "RenderThreadImpl::OnMemoryPressure",
kMemoryPressureEventsAllowedArgs},
{"renderer_host", "*", kRendererHostAllowedArgs}, {"renderer_host", "*", kRendererHostAllowedArgs},
{"shutdown", "*", nullptr}, {"shutdown", "*", nullptr},
{"startup", "PrefProvider::PrefProvider", nullptr}, {"startup", "PrefProvider::PrefProvider", nullptr},
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "base/allocator/partition_allocator/memory_reclaimer.h" #include "base/allocator/partition_allocator/memory_reclaimer.h"
#include "base/feature_list.h" #include "base/feature_list.h"
#include "base/system/sys_info.h" #include "base/system/sys_info.h"
#include "base/trace_event/common/trace_event_common.h"
#include "build/build_config.h" #include "build/build_config.h"
#include "third_party/blink/public/common/device_memory/approximated_device_memory.h" #include "third_party/blink/public/common/device_memory/approximated_device_memory.h"
#include "third_party/blink/public/common/features.h" #include "third_party/blink/public/common/features.h"
...@@ -100,7 +101,8 @@ void MemoryPressureListenerRegistry::UnregisterClient( ...@@ -100,7 +101,8 @@ void MemoryPressureListenerRegistry::UnregisterClient(
void MemoryPressureListenerRegistry::OnMemoryPressure( void MemoryPressureListenerRegistry::OnMemoryPressure(
WebMemoryPressureLevel level) { WebMemoryPressureLevel level) {
TRACE_EVENT0("blink", "MemoryPressureListenerRegistry::onMemoryPressure"); TRACE_EVENT1("blink", "MemoryPressureListenerRegistry::onMemoryPressure",
"Level", level);
CHECK(IsMainThread()); CHECK(IsMainThread());
for (auto& client : clients_) for (auto& client : clients_)
client->OnMemoryPressure(level); client->OnMemoryPressure(level);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment