New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 635051 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
not on Chrome anymore
Closed: Sep 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows , All
Pri: 2
Type: Bug



Sign in to add a comment

CommandBufferProxyImpl::flushed_release_flush_id_ can increase in size indefinitely

Project Member Reported by jbau...@chromium.org, Aug 5 2016

Issue description

It looks like the raster worker threads keep doing CommandBufferProxyImpl::OrderingBarrier, which can insert an entry into flushed_release_flush_id_, but for some reason those aren't being cleared out properly. That can cause the size of that datastructure to balloon as Chrome runs for a while.
 
I think the issue is that the no sync tokens are being verified in the proxy. If I do "UpdateVerifiedReleases(channel_->GetHighestValidatedFlushID(stream_id_));" in OrderingBarrier once the list of flushes goes over 100, then that seems to solve the problem.

Cc: piman@chromium.org
+piman@

I can't see any use of flushed_release_flush_id_ other than updating it. Maybe it isn't really required?

Comment 3 by piman@chromium.org, Aug 8 2016

It is used in UpdateVerifiedReleases - the map is used to keep track of what we have flushed but not yet verified, so that we can know if we need to do the round trip in IsFenceSyncFlushReceived
Project Member

Comment 4 by bugdroid1@chromium.org, Aug 9 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c5faeccf26cc5e05407c6375231aef4e736138f9

commit c5faeccf26cc5e05407c6375231aef4e736138f9
Author: jbauman <jbauman@chromium.org>
Date: Tue Aug 09 21:50:31 2016

Clear old verified flush IDs when doing OrderingBarrier.

If a command buffer generates sync tokens but doesn't validate them
(letting a different command buffer in the same stream do that), then
its queue of unverified flush ids will grow without bound. It can clear
them out with little overhead by checking which ones are verified after
every GpuChannelHost::OrderingBarrier call.

BUG= 635051 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2222663002
Cr-Commit-Position: refs/heads/master@{#410840}

[modify] https://crrev.com/c5faeccf26cc5e05407c6375231aef4e736138f9/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/c5faeccf26cc5e05407c6375231aef4e736138f9/gpu/ipc/client/gpu_channel_host.cc
[modify] https://crrev.com/c5faeccf26cc5e05407c6375231aef4e736138f9/gpu/ipc/client/gpu_channel_host.h

Labels: Merge-Request-53
Owner: jbau...@chromium.org
Status: Started (was: Available)

Comment 6 by dimu@chromium.org, Aug 15 2016

Labels: -Merge-Request-53 Merge-Approved-53 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M53 (branch: 2785)

Comment 7 by gov...@chromium.org, Aug 15 2016

Please merge your change by today 5:00 PM PT if possible so we can take it in for next week this release. Thank you.
Project Member

Comment 8 by bugdroid1@chromium.org, Aug 15 2016

Labels: -merge-approved-53 merge-merged-2785
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9987bc7fb26e0807237f31cf33d6b7729714542b

commit 9987bc7fb26e0807237f31cf33d6b7729714542b
Author: John Bauman <jbauman@chromium.org>
Date: Mon Aug 15 21:33:00 2016

Clear old verified flush IDs when doing OrderingBarrier.

If a command buffer generates sync tokens but doesn't validate them
(letting a different command buffer in the same stream do that), then
its queue of unverified flush ids will grow without bound. It can clear
them out with little overhead by checking which ones are verified after
every GpuChannelHost::OrderingBarrier call.

BUG= 635051 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2222663002
Cr-Commit-Position: refs/heads/master@{#410840}
(cherry picked from commit c5faeccf26cc5e05407c6375231aef4e736138f9)

Review URL: https://codereview.chromium.org/2241253003 .

Cr-Commit-Position: refs/branch-heads/2785@{#609}
Cr-Branched-From: 68623971be0cfc492a2cb0427d7f478e7b214c24-refs/heads/master@{#403382}

[modify] https://crrev.com/9987bc7fb26e0807237f31cf33d6b7729714542b/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/9987bc7fb26e0807237f31cf33d6b7729714542b/gpu/ipc/client/gpu_channel_host.cc
[modify] https://crrev.com/9987bc7fb26e0807237f31cf33d6b7729714542b/gpu/ipc/client/gpu_channel_host.h

Status: Fixed (was: Started)
Status: Started (was: Fixed)
Still may be broken in some circumstances.
Project Member

Comment 11 by bugdroid1@chromium.org, Sep 8 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0f79f41c428a89593c81deaf5bbbd952b80195d6

commit 0f79f41c428a89593c81deaf5bbbd952b80195d6
Author: jbauman <jbauman@chromium.org>
Date: Thu Sep 08 02:20:33 2016

Validate all flush IDs if the unvalidated list gets too long.

The browser process normally never needs to validate sync tokens unless
it's returning resources to a renderer, so it's possible the highest
verified flush ID will almost never be updated and the list of
unvalidated flush IDs will grow indefinitely. Force a validation if that
happens to avoid wasting memory.

BUG= 635051 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2318933005
Cr-Commit-Position: refs/heads/master@{#417168}

[modify] https://crrev.com/0f79f41c428a89593c81deaf5bbbd952b80195d6/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/0f79f41c428a89593c81deaf5bbbd952b80195d6/gpu/ipc/client/command_buffer_proxy_impl.h

Project Member

Comment 12 by bugdroid1@chromium.org, Sep 8 2016

Labels: merge-merged-2854
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0f79f41c428a89593c81deaf5bbbd952b80195d6

commit 0f79f41c428a89593c81deaf5bbbd952b80195d6
Author: jbauman <jbauman@chromium.org>
Date: Thu Sep 08 02:20:33 2016

Validate all flush IDs if the unvalidated list gets too long.

The browser process normally never needs to validate sync tokens unless
it's returning resources to a renderer, so it's possible the highest
verified flush ID will almost never be updated and the list of
unvalidated flush IDs will grow indefinitely. Force a validation if that
happens to avoid wasting memory.

BUG= 635051 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2318933005
Cr-Commit-Position: refs/heads/master@{#417168}

[modify] https://crrev.com/0f79f41c428a89593c81deaf5bbbd952b80195d6/gpu/ipc/client/command_buffer_proxy_impl.cc
[modify] https://crrev.com/0f79f41c428a89593c81deaf5bbbd952b80195d6/gpu/ipc/client/command_buffer_proxy_impl.h

Status: Fixed (was: Started)

Sign in to add a comment