[PATCH 3/3] drm/ttm: under memory pressure minimize the size of memory pool
Michel Dänzer
michel at daenzer.net
Tue Aug 12 23:32:52 PDT 2014
On 13.08.2014 12:52, Jérôme Glisse wrote:
> From: Jérôme Glisse <jglisse at 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 at 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
More information about the dri-devel
mailing list