[PATCH] drm/amdgpu: Adjust logic around GTT size (v3)

Russell, Kent Kent.Russell at amd.com
Fri May 20 17:56:54 UTC 2022


[AMD Official Use Only - General]

I'll defer to Felix/Christian for the actual change, but a small typo in a comment:

> -----Original Message-----
> From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Alex
> Deucher
> Sent: Friday, May 20, 2022 11:09 AM
> To: amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>
> Subject: [PATCH] drm/amdgpu: Adjust logic around GTT size (v3)
> 
> Certain GL unit tests for large textures can cause problems
> with the OOM killer since there is no way to link this memory
> to a process.  This was originally mitigated (but not necessarily
> eliminated) by limiting the GTT size.  The problem is this limit
> is often too low for many modern games so just make the limit 1/2
> of system memory. The OOM accounting needs to be addressed, but
> we shouldn't prevent common 3D applications from being usable
> just to potentially mitigate that corner case.
> 
> Set default GTT size to max(3G, 1/2 of system ram) by default.
> 
> v2: drop previous logic and default to 3/4 of ram
> v3: default to half of ram to align with ttm
> 
> Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 20 ++++++++++++++------
>  1 file changed, 14 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index d2b5cccb45c3..7195ed77c85a 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1798,18 +1798,26 @@ int amdgpu_ttm_init(struct amdgpu_device
> *adev)
>  	DRM_INFO("amdgpu: %uM of VRAM memory ready\n",
>  		 (unsigned) (adev->gmc.real_vram_size / (1024 * 1024)));
> 
> -	/* Compute GTT size, either bsaed on 3/4th the size of RAM size
> +	/* Compute GTT size, either bsaed on 1/2 the size of RAM size

 ^ s/bsaed/based

 Kent

>  	 * or whatever the user passed on module init */
>  	if (amdgpu_gtt_size == -1) {
>  		struct sysinfo si;
> 
>  		si_meminfo(&si);
> -		gtt_size = min(max((AMDGPU_DEFAULT_GTT_SIZE_MB <<
> 20),
> -			       adev->gmc.mc_vram_size),
> -			       ((uint64_t)si.totalram * si.mem_unit * 3/4));
> -	}
> -	else
> +		/* Certain GL unit tests for large textures can cause problems
> +		 * with the OOM killer since there is no way to link this
> memory
> +		 * to a process.  This was originally mitigated (but not
> necessarily
> +		 * eliminated) by limiting the GTT size.  The problem is this
> limit
> +		 * is often too low for many modern games so just make the
> limit 1/2
> +		 * of system memory which aligns with TTM. The OOM
> accounting needs
> +		 * to be addressed, but we shouldn't prevent common 3D
> applications
> +		 * from being usable just to potentially mitigate that corner
> case.
> +		 */
> +		gtt_size = max((AMDGPU_DEFAULT_GTT_SIZE_MB << 20),
> +			       (u64)si.totalram * si.mem_unit / 2);
> +	} else {
>  		gtt_size = (uint64_t)amdgpu_gtt_size << 20;
> +	}
> 
>  	/* Initialize GTT memory pool */
>  	r = amdgpu_gtt_mgr_init(adev, gtt_size);
> --
> 2.35.3


More information about the amd-gfx mailing list