Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(91)

Side by Side Diff: content/renderer/render_thread_impl.cc

Issue 2564833002: Remove is_renderer_suspended_. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/render_thread_impl.h" 5 #include "content/renderer/render_thread_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <limits> 8 #include <limits>
9 #include <map> 9 #include <map>
10 #include <utility> 10 #include <utility>
(...skipping 899 matching lines...) Expand 10 before | Expand all | Expand 10 after
910 910
911 #if defined(OS_LINUX) 911 #if defined(OS_LINUX)
912 ChildProcess::current()->SetIOThreadPriority(base::ThreadPriority::DISPLAY); 912 ChildProcess::current()->SetIOThreadPriority(base::ThreadPriority::DISPLAY);
913 ChildThreadImpl::current()->SetThreadPriority( 913 ChildThreadImpl::current()->SetThreadPriority(
914 categorized_worker_pool_->background_worker_thread_id(), 914 categorized_worker_pool_->background_worker_thread_id(),
915 base::ThreadPriority::BACKGROUND); 915 base::ThreadPriority::BACKGROUND);
916 #endif 916 #endif
917 917
918 record_purge_suspend_metric_closure_.Reset(base::Bind( 918 record_purge_suspend_metric_closure_.Reset(base::Bind(
919 &RenderThreadImpl::RecordPurgeAndSuspendMetrics, base::Unretained(this))); 919 &RenderThreadImpl::RecordPurgeAndSuspendMetrics, base::Unretained(this)));
920 is_renderer_suspended_ = false;
921 920
922 base::MemoryCoordinatorClientRegistry::GetInstance()->Register(this); 921 base::MemoryCoordinatorClientRegistry::GetInstance()->Register(this);
923 922
924 // If this renderer doesn't run inside the browser process, enable 923 // If this renderer doesn't run inside the browser process, enable
925 // SequencedWorkerPool. Otherwise, it should already have been enabled. 924 // SequencedWorkerPool. Otherwise, it should already have been enabled.
926 // TODO(fdoray): Remove this once the SequencedWorkerPool to TaskScheduler 925 // TODO(fdoray): Remove this once the SequencedWorkerPool to TaskScheduler
927 // redirection experiment concludes https://crbug.com/622400. 926 // redirection experiment concludes https://crbug.com/622400.
928 if (!command_line.HasSwitch(switches::kSingleProcess)) 927 if (!command_line.HasSwitch(switches::kSingleProcess))
929 base::SequencedWorkerPool::EnableForProcess(); 928 base::SequencedWorkerPool::EnableForProcess();
930 } 929 }
(...skipping 840 matching lines...) Expand 10 before | Expand all | Expand 10 after
1771 // TODO(tasak): after enabling MemoryCoordinator, remove this Notify 1770 // TODO(tasak): after enabling MemoryCoordinator, remove this Notify
1772 // and follow MemoryCoordinator's request. 1771 // and follow MemoryCoordinator's request.
1773 if (base::FeatureList::IsEnabled(features::kPurgeAndSuspend)) 1772 if (base::FeatureList::IsEnabled(features::kPurgeAndSuspend))
1774 base::MemoryCoordinatorClientRegistry::GetInstance()->Notify( 1773 base::MemoryCoordinatorClientRegistry::GetInstance()->Notify(
1775 base::MemoryState::NORMAL); 1774 base::MemoryState::NORMAL);
1776 1775
1777 record_purge_suspend_metric_closure_.Cancel(); 1776 record_purge_suspend_metric_closure_.Cancel();
1778 record_purge_suspend_metric_closure_.Reset( 1777 record_purge_suspend_metric_closure_.Reset(
1779 base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMetrics, 1778 base::Bind(&RenderThreadImpl::RecordPurgeAndSuspendMetrics,
1780 base::Unretained(this))); 1779 base::Unretained(this)));
1781 is_renderer_suspended_ = false;
1782 } 1780 }
1783 } 1781 }
1784 1782
1785 void RenderThreadImpl::OnProcessPurgeAndSuspend() { 1783 void RenderThreadImpl::OnProcessPurgeAndSuspend() {
1786 ChildThreadImpl::OnProcessPurgeAndSuspend(); 1784 ChildThreadImpl::OnProcessPurgeAndSuspend();
1787 DCHECK(!is_renderer_suspended_);
1788 if (!RendererIsHidden()) 1785 if (!RendererIsHidden())
1789 return; 1786 return;
1790 is_renderer_suspended_ = true;
1791 if (base::FeatureList::IsEnabled(features::kPurgeAndSuspend)) { 1787 if (base::FeatureList::IsEnabled(features::kPurgeAndSuspend)) {
1792 // TODO(tasak): After enabling MemoryCoordinator, remove this Notify 1788 // TODO(tasak): After enabling MemoryCoordinator, remove this Notify
1793 // and follow MemoryCoordinator's request. 1789 // and follow MemoryCoordinator's request.
1794 base::MemoryCoordinatorClientRegistry::GetInstance()->Notify( 1790 base::MemoryCoordinatorClientRegistry::GetInstance()->Notify(
1795 base::MemoryState::SUSPENDED); 1791 base::MemoryState::SUSPENDED);
1796 } 1792 }
1797 // Since purging is not a synchronous task (e.g. v8 GC, oilpan GC, ...), 1793 // Since purging is not a synchronous task (e.g. v8 GC, oilpan GC, ...),
1798 // we need to wait until the task is finished. So wait 15 seconds and 1794 // we need to wait until the task is finished. So wait 15 seconds and
1799 // update purge+suspend UMA histogram. 1795 // update purge+suspend UMA histogram.
1800 // TODO(tasak): use MemoryCoordinator's callback to report purge+suspend 1796 // TODO(tasak): use MemoryCoordinator's callback to report purge+suspend
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
1850 1846
1851 } // namespace 1847 } // namespace
1852 #endif 1848 #endif
1853 1849
1854 // TODO(tasak): Once it is possible to use memory-infra without tracing, 1850 // TODO(tasak): Once it is possible to use memory-infra without tracing,
1855 // we should collect the metrics using memory-infra. 1851 // we should collect the metrics using memory-infra.
1856 // TODO(tasak): We should also report a difference between the memory usages 1852 // TODO(tasak): We should also report a difference between the memory usages
1857 // before and after purging by using memory-infra. 1853 // before and after purging by using memory-infra.
1858 void RenderThreadImpl::RecordPurgeAndSuspendMetrics() const { 1854 void RenderThreadImpl::RecordPurgeAndSuspendMetrics() const {
1859 // If this renderer is resumed, we should not update UMA. 1855 // If this renderer is resumed, we should not update UMA.
1860 if (!is_renderer_suspended_) 1856 if (!RendererIsHidden())
1861 return; 1857 return;
1862 1858
1863 // TODO(tasak): Compare memory metrics between purge-enabled renderers and 1859 // TODO(tasak): Compare memory metrics between purge-enabled renderers and
1864 // purge-disabled renderers (A/B testing). 1860 // purge-disabled renderers (A/B testing).
1865 blink::WebMemoryStatistics blink_stats = blink::WebMemoryStatistics::Get(); 1861 blink::WebMemoryStatistics blink_stats = blink::WebMemoryStatistics::Get();
1866 UMA_HISTOGRAM_MEMORY_KB("PurgeAndSuspend.Memory.PartitionAllocKB", 1862 UMA_HISTOGRAM_MEMORY_KB("PurgeAndSuspend.Memory.PartitionAllocKB",
1867 blink_stats.partitionAllocTotalAllocatedBytes / 1024); 1863 blink_stats.partitionAllocTotalAllocatedBytes / 1024);
1868 UMA_HISTOGRAM_MEMORY_KB("PurgeAndSuspend.Memory.BlinkGCKB", 1864 UMA_HISTOGRAM_MEMORY_KB("PurgeAndSuspend.Memory.BlinkGCKB",
1869 blink_stats.blinkGCTotalAllocatedBytes / 1024); 1865 blink_stats.blinkGCTotalAllocatedBytes / 1024);
1870 #if defined(OS_LINUX) || defined(OS_ANDROID) 1866 #if defined(OS_LINUX) || defined(OS_ANDROID)
(...skipping 30 matching lines...) Expand all
1901 UMA_HISTOGRAM_MEMORY_MB("PurgeAndSuspend.Memory.TotalAllocatedMB", 1897 UMA_HISTOGRAM_MEMORY_MB("PurgeAndSuspend.Memory.TotalAllocatedMB",
1902 (blink_stats.partitionAllocTotalAllocatedBytes + 1898 (blink_stats.partitionAllocTotalAllocatedBytes +
1903 blink_stats.blinkGCTotalAllocatedBytes + 1899 blink_stats.blinkGCTotalAllocatedBytes +
1904 malloc_usage + v8_usage + discardable_usage) / 1900 malloc_usage + v8_usage + discardable_usage) /
1905 1024 / 1024); 1901 1024 / 1024);
1906 } 1902 }
1907 1903
1908 void RenderThreadImpl::OnProcessResume() { 1904 void RenderThreadImpl::OnProcessResume() {
1909 ChildThreadImpl::OnProcessResume(); 1905 ChildThreadImpl::OnProcessResume();
1910 1906
1911 DCHECK(is_renderer_suspended_); 1907 if (!RendererIsHidden())
1912 is_renderer_suspended_ = false; 1908 return;
1913 if (base::FeatureList::IsEnabled(features::kPurgeAndSuspend)) { 1909 if (base::FeatureList::IsEnabled(features::kPurgeAndSuspend)) {
1914 // TODO(tasak): after enabling MemoryCoordinator, remove this Notify 1910 // TODO(tasak): after enabling MemoryCoordinator, remove this Notify
1915 // and follow MemoryCoordinator's request. 1911 // and follow MemoryCoordinator's request.
1916 base::MemoryCoordinatorClientRegistry::GetInstance()->Notify( 1912 base::MemoryCoordinatorClientRegistry::GetInstance()->Notify(
1917 base::MemoryState::NORMAL); 1913 base::MemoryState::NORMAL);
1918 renderer_scheduler_->ResumeRenderer(); 1914 renderer_scheduler_->ResumeRenderer();
1919 } 1915 }
1920 } 1916 }
1921 1917
1922 scoped_refptr<gpu::GpuChannelHost> RenderThreadImpl::EstablishGpuChannelSync() { 1918 scoped_refptr<gpu::GpuChannelHost> RenderThreadImpl::EstablishGpuChannelSync() {
(...skipping 594 matching lines...) Expand 10 before | Expand all | Expand 10 after
2517 } 2513 }
2518 } 2514 }
2519 2515
2520 void RenderThreadImpl::OnRendererInterfaceRequest( 2516 void RenderThreadImpl::OnRendererInterfaceRequest(
2521 mojom::RendererAssociatedRequest request) { 2517 mojom::RendererAssociatedRequest request) {
2522 DCHECK(!renderer_binding_.is_bound()); 2518 DCHECK(!renderer_binding_.is_bound());
2523 renderer_binding_.Bind(std::move(request)); 2519 renderer_binding_.Bind(std::move(request));
2524 } 2520 }
2525 2521
2526 } // namespace content 2522 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_thread_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698