<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<div class="moz-cite-prefix">In that case my patch should clearly
help with that.<br>
<br>
Going to release what I have so far today, but looks like I need
more time actually fixing this.<br>
<br>
In the meantime you could try the "drm/amdgpu: fix lru size
grouping" patch as well. It fixes a bug related to this and could
help as well.<br>
<br>
Regards,<br>
Christian.<br>
<br>
Am 18.08.2016 um 01:39 schrieb Marek Olšák:<br>
</div>
<blockquote
cite="mid:CAAxE2A4P7WHQ-1_rh7Gh4X+Go-7eXWEHd=XcQCkMszwN=ea+sQ@mail.gmail.com"
type="cite">
<div dir="ltr">
<div>
<div>Actually, I was wrong.<br>
<br>
</div>
The buffers in that app are pretty small. The largest one has
86 MB and others have 52 MB. I must have misread that as 520
MB.<br>
<br>
</div>
<div>At one point, ttm_bo_validate with a 32 MB buffer moved 971
MB.<br>
<br>
</div>
<div>Maybe it's just a VRAM fragmentation issue (i.e. a lack of
contiguous free memory).</div>
<div><br>
</div>
Marek<br>
<div>
<div>
<div>
<div class="gmail_extra"><br>
<div class="gmail_quote">On Wed, Aug 17, 2016 at 9:19
PM, Christian König <span dir="ltr"><<a
moz-do-not-send="true"
href="mailto:deathsimple@vodafone.de"
target="_blank">deathsimple@vodafone.de</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px
0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">Sharing buffers
between applications is handled by the DRM layer and
transparent to the driver.<br>
<br>
E.g. the driver is not even informed if a sharing is
done by DMA-buf or GEM flink, it's just another
reference to the BO.<br>
<br>
So there isn't any change to that at all.<br>
<br>
Regards,<br>
Christian.
<div class="">
<div class="h5"><br>
<br>
Am 17.08.2016 um 21:03 schrieb Felix Kuehling:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
I think the scatter-gather tables only support
system memory. As I<br>
understand it, a buffer in VRAM has be
migrated to system memory before<br>
it can be shared with another driver.<br>
<br>
I'm more concerned about sharing with the same
driver. There is a<br>
special code path for that, where we simply
add another reference to the<br>
same BO, instead of looking at a scatter
gather table. We use that for<br>
OpenGL-OpenCL interop, and also planning to
use it for IPC buffer<br>
sharing in HSA. As long as a split VRAM buffer
is still a single<br>
amdgpu_bo, and becomes a single dmabuf when
exporting it, I think that<br>
should work.<br>
<br>
Regards,<br>
Felix<br>
<br>
<br>
On 16-08-17 02:58 AM, Christian König wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
One question: Will it be possible to share
these split BOs as dmabufs?<br>
</blockquote>
In theory yes, in practice I'm not sure.<br>
<br>
DMA-bufs are designed around scatter gather
tables, those fortunately<br>
support buffers split over the whole address
space.<br>
<br>
The problem is the importing device needs to
be able to handle that as<br>
well.<br>
<br>
Regards,<br>
Christian.<br>
<br>
Am 16.08.2016 um 20:33 schrieb Felix
Kuehling:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
Very nice. I'm looking forward to this for
KFD as well.<br>
<br>
One question: Will it be possible to share
these split BOs as dmabufs?<br>
<br>
Regards,<br>
Felix<br>
<br>
<br>
On 16-08-16 11:27 AM, Christian König
wrote:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
Hi Marek,<br>
<br>
I'm already working on this.<br>
<br>
My current approach is to use a custom
BO manager for VRAM with TTM<br>
and so split allocations into chunks of
4MB.<br>
<br>
Large BOs are still swapped out as one,
but it makes it much more<br>
likely to that you can allocate 1/2 of
VRAM as one buffer.<br>
<br>
Give me till the end of the week to
finish this and then we can test<br>
if that's sufficient or if we need to do
more.<br>
<br>
Regards,<br>
Christian.<br>
<br>
Am 16.08.2016 um 16:33 schrieb Marek
Olšák:<br>
<blockquote class="gmail_quote"
style="margin:0px 0px 0px
0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">
Hi,<br>
<br>
I'm seeing random temporary freezes
(up to 2 seconds) under memory<br>
pressure. Before I describe the exact
circumstances, I'd like to say<br>
that this is a serious issue affecting
playability of certain AAA<br>
Linux games.<br>
<br>
In order to reproduce this, an
application should:<br>
- allocate a few very large buffers
(256-512 MB per buffer)<br>
- allocate more memory than there is
available VRAM. The issue also<br>
occurs (but at a lower frequency) if
the app needs only 80% of VRAM.<br>
<br>
Example: ttm_bo_validate needs to
migrate a 512 MB buffer. The total<br>
size of moved memory for that call can
be as high as 1.5 GB. This is<br>
always followed by a big temporary
drop in VRAM usage.<br>
<br>
The game I'm testing needs 3.4 GB of
VRAM.<br>
<br>
Setups:<br>
Tonga - 2 GB: It's nearly unplayable,
because freezes occur too often.<br>
Fiji - 4 GB: There is one freeze at
the beginning (which is annoying<br>
too), after that it's smooth.<br>
<br>
So even 4 GB is not enough.<br>
<br>
Workarounds:<br>
- Split buffers into smaller pieces in
the kernel. It's not necessary<br>
to manage memory at page granularity
(64KB). Splitting buffers into<br>
16MB-large pieces might not be optimal
but it would be a significant<br>
improvement.<br>
- Or do the same in Mesa. This would
prevent inter-process and<br>
inter-API buffer sharing for split
buffers (DRI, OpenCL), but we would<br>
at least verify how much the situation
improves.<br>
<br>
Other issues sharing the same cause:<br>
- Allocations requesting 1/3 or more
VRAM have a high chance of<br>
failing. It's generally not possible
to allocate 1/2 or more VRAM as<br>
one buffer.<br>
<br>
Comments welcome,<br>
<br>
Marek<br>
______________________________<wbr>_________________<br>
amd-gfx mailing list<br>
<a moz-do-not-send="true"
href="mailto:amd-gfx@lists.freedesktop.org"
target="_blank">amd-gfx@lists.freedesktop.org</a><br>
<a moz-do-not-send="true"
href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx"
rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/amd-gfx</a><br>
</blockquote>
______________________________<wbr>_________________<br>
amd-gfx mailing list<br>
<a moz-do-not-send="true"
href="mailto:amd-gfx@lists.freedesktop.org"
target="_blank">amd-gfx@lists.freedesktop.org</a><br>
<a moz-do-not-send="true"
href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx"
rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/amd-gfx</a><br>
</blockquote>
</blockquote>
<br>
</blockquote>
______________________________<wbr>_________________<br>
amd-gfx mailing list<br>
<a moz-do-not-send="true"
href="mailto:amd-gfx@lists.freedesktop.org"
target="_blank">amd-gfx@lists.freedesktop.org</a><br>
<a moz-do-not-send="true"
href="https://lists.freedesktop.org/mailman/listinfo/amd-gfx"
rel="noreferrer" target="_blank">https://lists.freedesktop.org/<wbr>mailman/listinfo/amd-gfx</a><br>
</blockquote>
<br>
<br>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</div>
</div>
</blockquote>
<p><br>
</p>
</body>
</html>