From: Thomas Hellstrom <thellstrom@vmware.com>
To: Jerome Glisse <j.glisse@gmail.com>
Cc: Jerome Glisse <jglisse@redhat.com>, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 05/13] drm/ttm: overhaul memory accounting
Date: Fri, 11 Nov 2011 08:49:39 +0100 [thread overview]
Message-ID: <4EBCD393.1060705@vmware.com> (raw)
In-Reply-To: <20111110233356.GA1741@homer.localdomain>
[-- Attachment #1.1: Type: text/plain, Size: 3763 bytes --]
On 11/11/2011 12:33 AM, Jerome Glisse wrote:
> On Thu, Nov 10, 2011 at 09:05:22PM +0100, Thomas Hellstrom wrote:
>
>> On 11/10/2011 07:05 PM, Jerome Glisse wrote:
>>
>>> On Thu, Nov 10, 2011 at 11:27:33AM +0100, Thomas Hellstrom wrote:
>>>
>>>> On 11/09/2011 09:22 PM, j.glisse@gmail.com wrote:
>>>>
>>>>> From: Jerome Glisse<jglisse@redhat.com>
>>>>>
>>>>> This is an overhaul of the ttm memory accounting. This tries to keep
>>>>> the same global behavior while removing the whole zone concept. It
>>>>> keeps a distrinction for dma32 so that we make sure that ttm don't
>>>>> starve the dma32 zone.
>>>>>
>>>>> There is 3 threshold for memory allocation :
>>>>> - max_mem is the maximum memory the whole ttm infrastructure is
>>>>> going to allow allocation for (exception of system process see
>>>>> below)
>>>>> - emer_mem is the maximum memory allowed for system process, this
>>>>> limit is> to max_mem
>>>>> - swap_limit is the threshold at which point ttm will start to
>>>>> try to swap object because ttm is getting close the max_mem
>>>>> limit
>>>>> - swap_dma32_limit is the threshold at which point ttm will start
>>>>> swap object to try to reduce the pressure on the dma32 zone. Note
>>>>> that we don't specificly target object to swap to it might very
>>>>> well free more memory from highmem rather than from dma32
>>>>>
>>>>> Accounting is done through used_mem& used_dma32_mem, which sum give
>>>>> the total amount of memory actually accounted by ttm.
>>>>>
>>>>> Idea is that allocation will fail if (used_mem + used_dma32_mem)>
>>>>> max_mem and if swapping fail to make enough room.
>>>>>
>>>>> The used_dma32_mem can be updated as a later stage, allowing to
>>>>> perform accounting test before allocating a whole batch of pages.
>>>>>
>>>>>
>>>> Jerome, you're removing a fair amount of functionality here, without
>>>> justifying
>>>> why it could be removed.
>>>>
>>> All this code was overkill.
>>>
>> [1] I don't agree, and since it's well tested, thought throught and
>> working, I see no obvious reason to alter it,
>> within the context of this patch series unless it's absolutely
>> required for the functionality.
>>
> Well one thing i can tell is that it doesn't work on radeon, i pushed
> a test to libdrm and here it's the oom that starts doing its beating.
> Anyway i won't alter it. Was just trying to make it works, ie be useful
> while also being simpler.
>
Well if it doesn't work it should of course be fixed.
I'm not against fixing it nor making it simpler, but I think that
requires a detailed understanding of what's going wrong and how it needs
to be fixed. Not as part of a patch series that really tries to
accomplish something else.
The current code was tested extensively with psb and unichrome.
One good test for drivers with bo-backed textures is to continously
create fairly large texture images. The end result should be the swap
space starting to fill up and once there is no more swap space, the OOM
killer should kill your app, and kmalloc failures should be avoided. It
should be tricky to get a failure from the global alloc system, but a
huge amount of small buffer objects or fence objects should probably do it.
Naturally, that requires that all persistent drm objects created from
user-space are registered with their correct sizes, or at least a really
good size approximation. That includes things like gem flinks, that
could otherwise easily be exploited to bring a system down, simply by
guessing a gem name and create flinks to that name in an infinite loop.
What are the symptoms of the failure you're seeing with Radeon? Any
suggestions on why it happens?
Thanks,
Thomas
[-- Attachment #1.2: Type: text/html, Size: 4446 bytes --]
[-- Attachment #2: Type: text/plain, Size: 159 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2011-11-11 7:52 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-09 20:22 ttm: merge ttm_backend & ttm_tt, introduce ttm dma allocator j.glisse
2011-11-09 20:22 ` [PATCH 01/13] drm/ttm: remove userspace backed ttm object support j.glisse
2011-11-09 20:22 ` [PATCH 02/13] drm/ttm: remove split btw highmen and lowmem page j.glisse
2011-11-09 20:22 ` [PATCH 03/13] drm/ttm: remove unused backend flags field j.glisse
2011-11-09 20:22 ` [PATCH 04/13] drm/ttm: use ttm put pages function to properly restore cache attribute j.glisse
2011-11-09 20:22 ` [PATCH 05/13] drm/ttm: overhaul memory accounting j.glisse
2011-11-10 10:27 ` Thomas Hellstrom
2011-11-10 18:05 ` Jerome Glisse
2011-11-10 20:05 ` Thomas Hellstrom
2011-11-10 23:33 ` Jerome Glisse
2011-11-11 7:49 ` Thomas Hellstrom [this message]
2011-11-11 8:47 ` Dave Airlie
2011-11-11 9:08 ` Thomas Hellstrom
2011-11-11 15:47 ` Jerome Glisse
2011-11-11 16:22 ` Thomas Hellstrom
2011-11-11 17:15 ` Jerome Glisse
2011-11-09 20:22 ` [PATCH 06/13] drm/ttm: convert page allocation to use page ptr array instead of list V4 j.glisse
2011-11-09 20:22 ` [PATCH 07/13] drm/ttm: test for dma_address array allocation failure j.glisse
2011-11-09 20:22 ` [PATCH 08/13] drm/ttm: merge ttm_backend and ttm_tt V2 j.glisse
2011-11-09 20:22 ` [PATCH 09/13] drm/ttm: introduce callback for ttm_tt populate & unpopulate V2 j.glisse
2011-11-09 20:22 ` [PATCH 10/13] ttm: Provide DMA aware TTM page pool code. V5 j.glisse
2011-11-09 20:22 ` [PATCH 11/13] swiotlb: Expose swiotlb_nr_tlb function to modules j.glisse
2011-11-09 20:22 ` [PATCH 12/13] drm/radeon/kms: Enable the TTM DMA pool if swiotlb is on V2 j.glisse
2011-11-09 20:22 ` [PATCH 13/13] drm/nouveau: enable the TTM DMA pool on 32-bit DMA only device V2 j.glisse
2011-11-09 20:25 ` ttm: merge ttm_backend & ttm_tt, introduce ttm dma allocator Thomas Hellstrom
2011-11-09 21:03 ` Jerome Glisse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EBCD393.1060705@vmware.com \
--to=thellstrom@vmware.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=j.glisse@gmail.com \
--cc=jglisse@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.