0

Delay the GPU info collection task from 15 seconds to 120 seconds

Currently, a non-sandbox GPU process for the GPU info collection is launced
15 seconds after the browser starts. From the GPU watchdog crash reports, many
systems are still busy within the first 30 seconds of the GPU process launch.
Running a second GPU process during this period will make the system even
busier. Therefore, the delay is now extended from 15 seconds to 120 seconds.

The side effect of this delay is DX12/Vulkan won't be available in about:gpu
in the first 120 seconds. This will be fixed in the other CL.

TBR=jochen@chromium.org

Bug:949839

Change-Id: Ib21531f2ae8757199878f810ea33536d373081e9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1783108
Commit-Queue: Maggie Chen <magchen@chromium.org>
Reviewed-by: Ilya Sherman <isherman@chromium.org>
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#693948}
This commit is contained in:
Maggie Chen
2019-09-05 21:46:47 +00:00
committed by Commit Bot
parent b08208e719
commit 9fa83ab0ab
10 changed files with 11 additions and 10 deletions

@ -1416,7 +1416,7 @@ int BrowserMainLoop::BrowserThreadsStarted() {
#if defined(OS_WIN)
if (!parsed_command_line_.HasSwitch(
switches::kDisableGpuProcessForDX12VulkanInfoCollection)) {
// The default is to delay the secondary GPU process for 15 seconds.
// The default is to delay the secondary GPU process for 120 seconds.
bool delayed = !parsed_command_line_.HasSwitch(
switches::kNoDelayForDX12VulkanInfoCollection);
GpuDataManagerImpl::GetInstance()->RequestGpuSupportedRuntimeVersion(

@ -435,7 +435,7 @@ void GpuDataManagerImplPrivate::RequestGpuSupportedRuntimeVersion(
if (delayed) {
base::PostDelayedTask(FROM_HERE, {BrowserThread::IO}, std::move(task),
base::TimeDelta::FromMilliseconds(15000));
base::TimeDelta::FromSeconds(120));
} else {
gpu_info_dx12_vulkan_requested_ = true;
gpu_info_dx12_vulkan_request_failed_ = false;

@ -347,7 +347,7 @@ void BrowserTestBase::SetUp() {
}
// Always disable the unsandbox GPU process for DX12 and Vulkan Info
// collection to avoid interference. This GPU process is launched 15
// collection to avoid interference. This GPU process is launched 120
// seconds after chrome starts.
command_line->AppendSwitch(
switches::kDisableGpuProcessForDX12VulkanInfoCollection);

@ -255,7 +255,7 @@ void AppendCommandLineSwitches() {
base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
// Always disable the unsandbox GPU process for DX12 and Vulkan Info
// collection to avoid interference. This GPU process is launched 15
// collection to avoid interference. This GPU process is launched 120
// seconds after chrome starts.
command_line->AppendSwitch(
switches::kDisableGpuProcessForDX12VulkanInfoCollection);

@ -292,7 +292,7 @@ bool ShellMainDelegate::BasicStartupComplete(int* exit_code) {
command_line.AppendSwitch(switches::kUseFakeDeviceForMediaStream);
// Always disable the unsandbox GPU process for DX12 and Vulkan Info
// collection to avoid interference. This GPU process is launched 15
// collection to avoid interference. This GPU process is launched 120
// seconds after chrome starts.
command_line.AppendSwitch(
switches::kDisableGpuProcessForDX12VulkanInfoCollection);

@ -96,7 +96,7 @@ void WebTestBrowserMain(const content::MainFunctionParams& parameters) {
browser_context_path_for_web_tests.GetPath().MaybeAsASCII());
// Always disable the unsandbox GPU process for DX12 and Vulkan Info
// collection to avoid interference. This GPU process is launched 15
// collection to avoid interference. This GPU process is launched 120
// seconds after chrome starts.
base::CommandLine::ForCurrentProcess()->AppendSwitch(
switches::kDisableGpuProcessForDX12VulkanInfoCollection);

@ -80,7 +80,7 @@ class GpuIntegrationTest(
if cls._disable_log_uploads:
browser_options.logs_cloud_bucket = None
# A non-sandboxed, 15-seconds-delayed gpu process is currently running in
# A non-sandboxed, 120-seconds-delayed gpu process is currently running in
# the browser to collect gpu info. A command line switch is added here so
# the dx12/vulkan info can be collected immediately for the tests.
browser_args.append(

@ -51,7 +51,8 @@ const char kUseHighGPUThreadPriorityForPerfTests[] =
"use-gpu-high-thread-priority-for-perf-tests";
// Start the non-sandboxed GPU process for DX12 and Vulkan info collection
// immediately after the browser starts. The default is to delay for 15 seconds.
// immediately after the browser starts. The default is to delay for 120
// seconds.
const char kNoDelayForDX12VulkanInfoCollection[] =
"no-delay-for-dx12-vulkan-info-collection";

@ -50184,7 +50184,7 @@ uploading your change for review.
<owner>vmiura@chromium.org</owner>
<owner>magchen@chromium.org</owner>
<summary>
This metric shows whether the GPU supports D3D12. It is recorded 15 seconds
This metric shows whether the GPU supports D3D12. It is recorded 120 seconds
after the browser launch.
</summary>
</histogram>

@ -102,7 +102,7 @@ class PerfBenchmark(benchmark.Benchmark):
GetAdTaggingProfileFiles(
self._GetOutDirectoryEstimate(finder_options)))
# A non-sandboxed, 15-seconds-delayed gpu process is currently running in
# A non-sandboxed, 120-seconds-delayed gpu process is currently running in
# the browser to collect gpu info. A command line switch is added here to
# skip this gpu process for all perf tests to prevent any interference
# with the test results.