Re: [PATCH v3 6/6] selftests: prctl: introduce tests for disabling THPs except for madvise

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 05/08/2025 13:29, David Hildenbrand wrote:
> On 05.08.25 14:19, Usama Arif wrote:
>>
>>
>> On 05/08/2025 11:36, David Hildenbrand wrote:
>>> On 04.08.25 17:40, Usama Arif wrote:
>>>> The test will set the global system THP setting to never, madvise
>>>> or always depending on the fixture variant and the 2M setting to
>>>> inherit before it starts (and reset to original at teardown)
>>>>
>>>> This tests if the process can:
>>>> - successfully set and get the policy to disable THPs expect for madvise.
>>>> - get hugepages only on MADV_HUGE and MADV_COLLAPSE if the global policy
>>>>     is madvise/always and only with MADV_COLLAPSE if the global policy is
>>>>     never.
>>>> - successfully reset the policy of the process.
>>>> - after reset, only get hugepages with:
>>>>     - MADV_COLLAPSE when policy is set to never.
>>>>     - MADV_HUGE and MADV_COLLAPSE when policy is set to madvise.
>>>>     - always when policy is set to "always".
>>>> - repeat the above tests in a forked process to make sure  the policy is
>>>>     carried across forks.
>>>>
>>>> Signed-off-by: Usama Arif <usamaarif642@xxxxxxxxx>
>>>> ---
>>>
>>> [...]
>>>
>>>> +FIXTURE_VARIANT(prctl_thp_disable_except_madvise)
>>>> +{
>>>> +    enum thp_enabled thp_policy;
>>>> +};
>>>> +
>>>> +FIXTURE_VARIANT_ADD(prctl_thp_disable_except_madvise, never)
>>>> +{
>>>> +    .thp_policy = THP_NEVER,
>>>> +};
>>>> +
>>>> +FIXTURE_VARIANT_ADD(prctl_thp_disable_except_madvise, madvise)
>>>> +{
>>>> +    .thp_policy = THP_MADVISE,
>>>> +};
>>>> +
>>>> +FIXTURE_VARIANT_ADD(prctl_thp_disable_except_madvise, always)
>>>> +{
>>>> +    .thp_policy = THP_ALWAYS,
>>>> +};
>>>> +
>>>> +FIXTURE_SETUP(prctl_thp_disable_except_madvise)
>>>> +{
>>>> +    if (!thp_available())
>>>> +        SKIP(return, "Transparent Hugepages not available\n");
>>>> +
>>>> +    self->pmdsize = read_pmd_pagesize();
>>>> +    if (!self->pmdsize)
>>>> +        SKIP(return, "Unable to read PMD size\n");
>>>
>>> Should we test here if the kernel knows PR_THP_DISABLE_EXCEPT_ADVISED, and if not, skip?
>>>
>>> Might be as simple as trying issuing two prctl, and making sure the first disabling attempt doesn't fail. If so, SKIP.
>>>
>>> Nothing else jumped at me. Can you include a test run result in the patch description?
>>>
>>
>> Instead of 2 prctls, I think doing just the below should be enough:
>>
>> diff --git a/tools/testing/selftests/mm/prctl_thp_disable.c b/tools/testing/selftests/mm/prctl_thp_disable.c
>> index 93cedaa59854..da28bc4441ed 100644
>> --- a/tools/testing/selftests/mm/prctl_thp_disable.c
>> +++ b/tools/testing/selftests/mm/prctl_thp_disable.c
>> @@ -236,6 +236,9 @@ FIXTURE_SETUP(prctl_thp_disable_except_madvise)
>>          if (!self->pmdsize)
>>                  SKIP(return, "Unable to read PMD size\n");
>>   +       if (prctl(PR_SET_THP_DISABLE, 1, PR_THP_DISABLE_EXCEPT_ADVISED, NULL, NULL))
>> +               SKIP(return, "Unable to set PR_THP_DISABLE_EXCEPT_ADVISED\n");
>> +
>>          thp_save_settings();
>>          thp_read_settings(&self->settings);
>>          self->settings.thp_enabled = variant->thp_policy;
> 
> Then probably best to remove the
> 
> ASSERT_EQ(prctl(PR_SET_THP_DISABLE, 1, PR_THP_DISABLE_EXCEPT_ADVISED, NULL, NULL), 0);
> 
> From both test functions?
> 
> You can consider doing the same in patch #5.
> 

Yes makes sense, Thanks!




[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [NTFS 3]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [NTFS 3]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux