<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p>Hello,</p>
    <p>Applying this locally, the issue we were seeing with very high
      submit times in high-end workloads seems largely gone. My
      methodology is to measure the total time spent in
      DRM_IOCTL_AMDGPU_CS with `strace -T` for the whole first scene of
      the Shadow of the Tomb Raider benchmark, and divide by the frame
      count in that scene to get an idea of how much CPU time is spent
      in submissions per frame. More details below.<br>
    </p>
    <p>On a Vega20 system with a 3900X, at High settings (~6 gigs of
      VRAM usage according to UMR, no contention):</p>
    <p> - 5.2.14: 1.1ms per frame in CS</p>
    <p> - 5.2.14 + LRU bulk moves: 0.6ms per frame in CS</p>
    <p>On a Polaris10 system with a i7-7820X, at Very High Settings
      (7.7G/8G VRAM used, no contention):</p>
    <p> - 5.2.15: 12.03ms per frame in CS (!)</p>
    <p> - 5.2.15 + LRU bulk moves:  1.35ms per frame in CS</p>
    <p>The issue is largely addressed. 1.35ms is still higher than I'd
      expect, but it's still pretty reasonable. Note that on many of our
      usecases, submission happens in a separate thread and doesn't
      typically impact overall frame time/latency if you have extra CPU
      cores to work with. However it very negatively affects performance
      as soon as the CPU gets saturated, and burns a ton of power.</p>
    <p>Thanks!</p>
    <p> - Pierre-Loup</p>
    <p>Methodology details:</p>
    <p># Mesa patched to kill() itself with SIGCONT in vkQueuePresent to
      act as a frame marker in-band with the strace data.<br>
    </p>
    <p># strace collection:</p>
    <p>strace -f -p 13113 -e ioctl,kill -o sottr_first_scene_vanilla -T</p>
    <p># frame count:<br>
    </p>
    <p>cat sottr_first_scene_vanilla | grep kill\( | wc -l<br>
      616</p>
    <p># total time spent in _CS:</p>
    <p>cat sottr_first_scene_vanilla | grep AMDGPU_CS | grep -v
      unfinished | tr -s ' '  | cut -d ' ' -f7 | tr -d \< | tr -d
      \> | xargs  | tr ' ' '+' | bc<br>
      7.411782</p>
    <p># seconds to milliseconds, then divide by frame count</p>
    <p>(gdb) p 7.41 * 1000.0 / 616.0<br>
      $1 = 12.029220779220779<br>
    </p>
    <div class="moz-cite-prefix">On 9/12/19 8:18 AM, Zhou,
      David(ChunMing) wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:ayyik7-bhm0th-f76qzcrx4nuhoz097-fqib6y-d00kkm-l8swdj-bb0hlq-6hyzem-xpderd-hmxy8m-n7py9m2f0bz2o58vot2offja-ec4pyzuy9pjm-235qpt-69n2k9ugq2z1gpw45e-vjjmkviqgdj4.1568301521040@email.android.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Exchange Server">
      <!-- converted from text -->
      <style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
      <div>I dont know dkms status,anyway, we should submit this one as
        early as possible.<br>
        <br>
        -------- 原始邮件 --------<br>
        主题:Re: [PATCH] drm/amdgpu: resvert "disable bulk moves for now"<br>
        发件人:Christian König <br>
        收件人:"Zhou, David(ChunMing)" ,<a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a><br>
        抄送:<br>
        <br>
      </div>
      <font size="2"><span style="font-size:11pt;">
          <div class="PlainText">Just to double check: We do have that
            enabled in the DKMS package for a
            <br>
            while and doesn't encounter any more problems with it,
            correct?<br>
            <br>
            Thanks,<br>
            Christian.<br>
            <br>
            Am 12.09.19 um 16:02 schrieb Chunming Zhou:<br>
            > RB on it to go ahead.<br>
            ><br>
            > -David<br>
            ><br>
            > 在 2019/9/12 18:15, Christian König 写道:<br>
            >> This reverts commit
            a213c2c7e235cfc0e0a161a558f7fdf2fb3a624a.<br>
            >><br>
            >> The changes to fix this should have landed in 5.1.<br>
            >><br>
            >> Signed-off-by: Christian König
            <a class="moz-txt-link-rfc2396E" href="mailto:christian.koenig@amd.com"><christian.koenig@amd.com></a><br>
            >> ---<br>
            >>    drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 2 --<br>
            >>    1 file changed, 2 deletions(-)<br>
            >><br>
            >> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c
            b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<br>
            >> index 48349e4f0701..fd3fbaa73fa3 100644<br>
            >> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<br>
            >> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c<br>
            >> @@ -603,14 +603,12 @@ void
            amdgpu_vm_move_to_lru_tail(struct amdgpu_device *adev,<br>
            >>       struct ttm_bo_global *glob =
            adev->mman.bdev.glob;<br>
            >>       struct amdgpu_vm_bo_base *bo_base;<br>
            >>    <br>
            >> -#if 0<br>
            >>       if (vm->bulk_moveable) {<br>
            >>               spin_lock(&glob->lru_lock);<br>
            >>              
            ttm_bo_bulk_move_lru_tail(&vm->lru_bulk_move);<br>
            >>               spin_unlock(&glob->lru_lock);<br>
            >>               return;<br>
            >>       }<br>
            >> -#endif<br>
            >>    <br>
            >>       memset(&vm->lru_bulk_move, 0,
            sizeof(vm->lru_bulk_move));<br>
            >>    <br>
            <br>
          </div>
        </span></font>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
amd-gfx mailing list
<a class="moz-txt-link-abbreviated" href="mailto:amd-gfx@lists.freedesktop.org">amd-gfx@lists.freedesktop.org</a>
<a class="moz-txt-link-freetext" href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx">https://lists.freedesktop.org/mailman/listinfo/amd-gfx</a></pre>
    </blockquote>
  </body>
</html>