From: "Michel Dänzer" <michel@daenzer.net>
To: "Jérôme Glisse" <j.glisse@gmail.com>, dri-devel@lists.freedesktop.org
Cc: "Jérôme Glisse" <jglisse@redhat.com>,
"Thomas Hellstrom" <thellstrom@vmware.com>,
"Konrad Rzeszutek Wilk" <konrad.wilk@oracle.com>
Subject: Re: [PATCH 3/3] drm/ttm: under memory pressure minimize the size of memory pool
Date: Wed, 13 Aug 2014 15:32:52 +0900 [thread overview]
Message-ID: <53EB0694.2060305@daenzer.net> (raw)
In-Reply-To: <1407901926-24516-4-git-send-email-j.glisse@gmail.com>
On 13.08.2014 12:52, Jérôme Glisse wrote:
> From: Jérôme Glisse <jglisse@redhat.com>
>
> When experiencing memory pressure we want to minimize pool size so that
> memory we just shrinked is not added back again just as the next thing.
>
> This will divide by 2 the maximum pool size for each device each time
> the pool have to shrink. The limit is bumped again is next allocation
> happen after one second since the last shrink. The one second delay is
> obviously an arbitrary choice.
>
> Signed-off-by: Jérôme Glisse <jglisse@redhat.com>
[...]
> diff --git a/drivers/gpu/drm/ttm/ttm_page_alloc.c b/drivers/gpu/drm/ttm/ttm_page_alloc.c
> index 09874d6..ab41adf 100644
> --- a/drivers/gpu/drm/ttm/ttm_page_alloc.c
> +++ b/drivers/gpu/drm/ttm/ttm_page_alloc.c
> @@ -68,6 +68,8 @@
> * @list: Pool of free uc/wc pages for fast reuse.
> * @gfp_flags: Flags to pass for alloc_page.
> * @npages: Number of pages in pool.
> + * @cur_max_size: Current maximum size for the pool.
> + * @shrink_timeout: Timeout for pool maximum size restriction.
> */
> struct ttm_page_pool {
> spinlock_t lock;
> @@ -76,6 +78,8 @@ struct ttm_page_pool {
> gfp_t gfp_flags;
> unsigned npages;
> char *name;
> + unsigned cur_max_size;
> + unsigned long last_shrink;
s/last_shrink/shrink_timeout/
Looks like maybe you posted an untested stale set of patches?
> @@ -289,6 +293,16 @@ static void ttm_pool_update_free_locked(struct ttm_page_pool *pool,
> pool->nfrees += freed_pages;
> }
>
> +static inline void ttm_pool_update_max_size(struct ttm_page_pool *pool)
> +{
> + if (time_before(jiffies, pool->shrink_timeout))
> + return;
> + /* In case we reached zero bounce back to 512 pages. */
> + pool->cur_max_size = max(pool->cur_max_size << 1, 512);
Another 'comparison of distinct pointer types lacks a cast' warning.
Both issues apply to ttm_page_alloc_dma.c as well.
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2014-08-13 6:32 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-13 3:52 [PATCH 0/3] drm/ttm: hard to swim in an empty pool Jérôme Glisse
2014-08-13 3:52 ` [PATCH 1/3] drm/ttm: set sensible pool size limit Jérôme Glisse
2014-08-13 6:24 ` Michel Dänzer
2014-08-13 3:52 ` [PATCH 2/3] drm/ttm: fix object deallocation to properly fill in the page pool Jérôme Glisse
2015-03-25 19:06 ` Konrad Rzeszutek Wilk
2015-07-06 9:11 ` Michel Dänzer
2015-07-06 16:10 ` Jerome Glisse
2015-07-07 6:39 ` Michel Dänzer
2015-07-07 17:41 ` Jerome Glisse
2015-07-08 2:34 ` Michel Dänzer
2014-08-13 3:52 ` [PATCH 3/3] drm/ttm: under memory pressure minimize the size of memory pool Jérôme Glisse
2014-08-13 6:32 ` Michel Dänzer [this message]
2014-08-13 9:06 ` Thomas Hellstrom
2014-08-13 10:42 ` Daniel Vetter
2014-08-13 12:35 ` GEM memory DOS (WAS Re: [PATCH 3/3] drm/ttm: under memory pressure minimize the size of memory pool) Thomas Hellstrom
2014-08-13 12:40 ` David Herrmann
2014-08-13 12:48 ` Thomas Hellstrom
2014-08-13 13:01 ` Daniel Vetter
2014-08-13 14:09 ` Oded Gabbay
2014-08-13 15:19 ` Thomas Hellstrom
2014-08-13 16:30 ` Daniel Vetter
2014-08-13 15:13 ` Thomas Hellstrom
2014-08-13 16:24 ` Daniel Vetter
2014-08-13 16:30 ` Alex Deucher
2014-08-13 16:38 ` Daniel Vetter
2014-08-13 16:45 ` Daniel Vetter
2014-08-13 17:38 ` Thomas Hellstrom
2014-08-13 17:20 ` Thomas Hellstrom
2014-08-14 22:29 ` Jesse Barnes
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=53EB0694.2060305@daenzer.net \
--to=michel@daenzer.net \
--cc=dri-devel@lists.freedesktop.org \
--cc=j.glisse@gmail.com \
--cc=jglisse@redhat.com \
--cc=konrad.wilk@oracle.com \
--cc=thellstrom@vmware.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox