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,
void TabLoader::OnMemoryPressure(
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
ReentrancyHelper lifetime_helper(this);
TRACE_EVENT0("browser", "TabLoader::OnMemoryPressure");
TRACE_EVENT1("browser", "TabLoader::OnMemoryPressure", "Level",
memory_pressure_level);
switch (memory_pressure_level) {
case base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_NONE:
......
......@@ -1990,14 +1990,16 @@ void RenderThreadImpl::PurgePluginListCache(bool reload_pages) {
void RenderThreadImpl::OnMemoryPressure(
base::MemoryPressureListener::MemoryPressureLevel memory_pressure_level) {
TRACE_EVENT0("memory", "RenderThreadImpl::OnMemoryPressure");
TRACE_EVENT1("memory", "RenderThreadImpl::OnMemoryPressure", "Level",
memory_pressure_level);
if (blink_platform_impl_) {
blink::WebMemoryPressureListener::OnMemoryPressure(
static_cast<blink::WebMemoryPressureLevel>(memory_pressure_level));
}
if (memory_pressure_level ==
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL)
base::MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL) {
ReleaseFreeMemory();
}
}
void RenderThreadImpl::RecordPurgeMemory(RendererMemoryMetrics before) {
......
......@@ -42,6 +42,7 @@ const char* const kTopLevelIpcRunTaskAllowedArgs[] = {"ipc_hash", nullptr};
const char* const kLifecyclesTaskPostedAllowedArgs[] = {
"task_queue_name", "time_since_disabled_ms", "ipc_hash", "location",
nullptr};
const char* const kMemoryPressureEventsAllowedArgs[] = {"Level", nullptr};
const WhitelistEntry kEventArgsWhitelist[] = {
{"__metadata", "thread_name", nullptr},
......@@ -55,7 +56,11 @@ const WhitelistEntry kEventArgsWhitelist[] = {
{"base", "ScopedMayLoadLibraryAtBackgroundPriority",
kScopedBlockingCallAllowedArgs},
{"benchmark", "TestWhitelist*", nullptr},
{"blink", "MemoryPressureListenerRegistry::onMemoryPressure",
kMemoryPressureEventsAllowedArgs},
{"browser", "KeyedServiceFactory::GetServiceForContext", nullptr},
{"browser", "TabLoader::OnMemoryPressure",
kMemoryPressureEventsAllowedArgs},
{"fonts", "CachedFontLinkSettings::GetLinkedFonts", nullptr},
{"fonts", "QueryLinkedFontsFromRegistry", nullptr},
{"fonts", "RenderTextHarfBuzz::ItemizeTextToRuns::Runs", nullptr},
......@@ -63,6 +68,8 @@ const WhitelistEntry kEventArgsWhitelist[] = {
{"ipc", "GpuChannelHost::Send", nullptr},
{"ipc", "SyncChannel::Send", nullptr},
{"latencyInfo", "*", kInputLatencyAllowedArgs},
{"memory", "RenderThreadImpl::OnMemoryPressure",
kMemoryPressureEventsAllowedArgs},
{"renderer_host", "*", kRendererHostAllowedArgs},
{"shutdown", "*", nullptr},
{"startup", "PrefProvider::PrefProvider", nullptr},
......
......@@ -7,6 +7,7 @@
#include "base/allocator/partition_allocator/memory_reclaimer.h"
#include "base/feature_list.h"
#include "base/system/sys_info.h"
#include "base/trace_event/common/trace_event_common.h"
#include "build/build_config.h"
#include "third_party/blink/public/common/device_memory/approximated_device_memory.h"
#include "third_party/blink/public/common/features.h"
......@@ -100,7 +101,8 @@ void MemoryPressureListenerRegistry::UnregisterClient(
void MemoryPressureListenerRegistry::OnMemoryPressure(
WebMemoryPressureLevel level) {
TRACE_EVENT0("blink", "MemoryPressureListenerRegistry::onMemoryPressure");
TRACE_EVENT1("blink", "MemoryPressureListenerRegistry::onMemoryPressure",
"Level", level);
CHECK(IsMainThread());
for (auto& client : clients_)
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