| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| module blink.mojom; |
| |
| import "mojo/public/mojom/base/shared_memory.mojom"; |
| |
| // There are two phases to estimate a near-OOM situation. First phase takes |
| // place in the browser process. When the browser detects a high memory |
| // pressure it starts the second phase in the foreground renderer process, |
| // as the renderer has the best knowledge about memory usage of pages. |
| // The renderer schedules tasks to check memory workload from pages. If the |
| // workload exceeds a threshold the renderer notifies that a high memory usage |
| // is detected. |
| |
| // Browser side interface for OOM intervention. This interface is used to check |
| // high memory usage in a renderer. |
| interface OomInterventionHost { |
| // Called when a renderer detects high memory usage. |
| OnHighMemoryUsage(); |
| }; |
| |
| // Arguments set by field trials to configure various thresholds for detecting |
| // OOM. Setting a threshold to 0 means that OOM detection will not consider |
| // that threshold. |
| struct DetectionArgs { |
| // Limit on V8 + BlinkGC + PartitionAlloc. |
| uint64 blink_workload_threshold; |
| |
| // Limit on total private footprint of the process. |
| uint64 private_footprint_threshold; |
| |
| // Limit on total swap footprint of the process. |
| uint64 swap_threshold; |
| |
| // Limit on total virtual memory used by the process. |
| uint64 virtual_memory_thresold; |
| }; |
| |
| // Renderer side interface for OOM intervention. An instance of this interface |
| // will be created when the browser gets a high memory pressure signal. |
| // It monitors memory usage in renderer side to detect near-OOM situation. |
| interface OomIntervention { |
| // Starts monitoring memory usage in renderer side. When the renderer's |
| // memory usage exceeds |detection_args| memory thresholds (pmf, swap, virtual |
| // memory usage and blink memory usage), the renderer calls |
| // host->OnHighMemoryUsage(). The renderer also triggers OOM intervention when |
| // |renderer_pause_enabled|, |navigate_ads_enabled| or |
| // |purge_v8_memory_enabled| is true. |
| StartDetection(OomInterventionHost host, |
| DetectionArgs detection_args, |
| bool renderer_pause_enabled, |
| bool navigate_ads_enabled, |
| bool purge_v8_memory_enabled); |
| }; |