On Sun, May 22, 2022 at 4:03 AM Christian König
<[email protected]> wrote:
>
> Well, it's not arguing. I'm just pointing out the problems.
>
> Those issues were discovered because I'm trying to raise the limit for a 
> couple of years now.

I think simply retesting the problematic tests on a modern system
should be enough.  The old limit was put in place in the Carrizo
timeframe.  Back then boards generally only had 2-4G of system memory.

Alex


>
> I've also already hacked together the necessary functionality, but 
> upstreaming them has caused other issues which I don't have time to solve.
>
> If you have time to tackle those, I'm happy to push the necessary patches 
> upstream.
>
> Regards,
> Christian.
>
> Am 20.05.22 um 23:36 schrieb Marek Olšák:
>
> We don't have to care about case 2 here. Broken apps will be handled by app 
> profiles. The problem is that some games don't work with the current limit on 
> the most powerful consumer APU we've ever made (Rembrandt) with precisely the 
> games that the APU was made for, and instead of increasing the limit, we 
> continue arguing about some TTM stuff that doesn't help anything right now.
>
> Marek
>
> On Fri., May 20, 2022, 14:25 Christian König, 
> <[email protected]> wrote:
>>
>> Am 20.05.22 um 19:41 schrieb Bas Nieuwenhuizen:
>> > On Fri, May 20, 2022 at 11:42 AM Christian König
>> > <[email protected]> wrote:
>> >> In theory we should allow much more than that. The problem is just that 
>> >> we can't.
>> >>
>> >> We have the following issues:
>> >> 1. For swapping out stuff we need to make sure that we can allocate 
>> >> temporary pages.
>> >>      Because of this TTM has a fixed 50% limit where it starts to unmap 
>> >> memory from GPUs.
>> >>      So currently even with a higher GTT limit you can't actually use 
>> >> this.
>> >>
>> >> 2. Apart from the test case of allocating textures with increasing power 
>> >> of two until it fails we also have a bunch of extremely stupid 
>> >> applications.
>> >>      E.g. stuff like looking at the amount of memory available and trying 
>> >> preallocate everything.
>> > I hear you but we also have an increasing number of games that don't
>> > even start with 3 GiB. At some point (which I'd speculate has already
>> > been reached, I've seen a number of complaints of games that ran on
>> > deck but not on desktop linux because on deck we set amdgpu.gttsize)
>> > we have more games broken due to the low limit than there would be
>> > apps broken due to a high limit.
>>
>> That's a really good argument, but the issue is that it is fixable. It's
>> just that nobody had time to look into all the issues.
>>
>> If started efforts to fix this years ago, but there was always something
>> more important going on.
>>
>> So we are left with the choice of breaking old applications or new
>> applications or getting somebody working on fixing this.
>>
>> Christian.
>>
>> >
>> >> I'm working on this for years, but there aren't easy solutions to those 
>> >> issues. Felix has opted out for adding a separate domain for KFD 
>> >> allocations, but sooner or later we need to find a solution which works 
>> >> for everybody.
>> >>
>> >> Christian.
>> >>
>> >> Am 20.05.22 um 11:14 schrieb Marek Olšák:
>> >>
>> >> Ignore the silly tests. We only need to make sure games work. The current 
>> >> minimum requirement for running modern games is 8GB of GPU memory. Soon 
>> >> it will be 12GB. APUs will need to support that.
>> >>
>> >> Marek
>> >>
>> >> On Fri., May 20, 2022, 03:52 Christian König, 
>> >> <[email protected]> wrote:
>> >>> Am 19.05.22 um 16:34 schrieb Alex Deucher:
>> >>>> The current somewhat strange logic is in place because 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.  The problem is this limit is often too low for many
>> >>>> modern games on systems with more memory so limit the logic to
>> >>>> systems with less than 8GB of main memory.  For systems with 8
>> >>>> or more GB of system memory, set the GTT size to 3/4 of system
>> >>>> memory.
>> >>> It's unfortunately not only the unit tests, but some games as well.
>> >>>
>> >>> 3/4 of total system memory sounds reasonable to be, but I'm 100% sure
>> >>> that this will break some tests.
>> >>>
>> >>> Christian.
>> >>>
>> >>>> Signed-off-by: Alex Deucher <[email protected]>
>> >>>> ---
>> >>>>    drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 25 
>> >>>> ++++++++++++++++++++-----
>> >>>>    1 file changed, 20 insertions(+), 5 deletions(-)
>> >>>>
>> >>>> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c 
>> >>>> b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> >>>> index 4b9ee6e27f74..daa0babcf869 100644
>> >>>> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> >>>> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
>> >>>> @@ -1801,15 +1801,30 @@ int amdgpu_ttm_init(struct amdgpu_device *adev)
>> >>>>        /* Compute GTT size, either bsaed on 3/4th the size of RAM size
>> >>>>         * or whatever the user passed on module init */
>> >>>>        if (amdgpu_gtt_size == -1) {
>> >>>> +             const u64 eight_GB = 8192ULL * 1024 * 1024;
>> >>>>                struct sysinfo si;
>> >>>> +             u64 total_memory, default_gtt_size;
>> >>>>
>> >>>>                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
>> >>>> +             total_memory = (u64)si.totalram * si.mem_unit;
>> >>>> +             default_gtt_size = total_memory * 3 / 4;
>> >>>> +             /* This somewhat strange logic is in place because 
>> >>>> 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.
>> >>>> +              * The problem is this limit is often too low for many 
>> >>>> modern games
>> >>>> +              * on systems with more memory so limit the logic to 
>> >>>> systems with
>> >>>> +              * less than 8GB of main memory.
>> >>>> +              */
>> >>>> +             if (total_memory < eight_GB) {
>> >>>> +                     gtt_size = min(max((AMDGPU_DEFAULT_GTT_SIZE_MB << 
>> >>>> 20),
>> >>>> +                                        adev->gmc.mc_vram_size),
>> >>>> +                                    default_gtt_size);
>> >>>> +             } else {
>> >>>> +                     gtt_size = default_gtt_size;
>> >>>> +             }
>> >>>> +     } else {
>> >>>>                gtt_size = (uint64_t)amdgpu_gtt_size << 20;
>> >>>> +     }
>> >>>>
>> >>>>        /* Initialize GTT memory pool */
>> >>>>        r = amdgpu_gtt_mgr_init(adev, gtt_size);
>>
>

Reply via email to