Linux Kernel Selftest development
 help / color / mirror / Atom feed
* Re: [PATCH v8 3/3] selftests/mm: add new selftests for KSM
       [not found] ` <20230415225913.3206647-4-shr@devkernel.io>
@ 2023-04-17  8:07   ` David Hildenbrand
  2023-04-17 14:35   ` David Hildenbrand
  1 sibling, 0 replies; 7+ messages in thread
From: David Hildenbrand @ 2023-04-17  8:07 UTC (permalink / raw)
  To: Stefan Roesch, kernel-team
  Cc: linux-mm, riel, mhocko, linux-kselftest, linux-doc, akpm, hannes,
	willy, Bagas Sanjaya

On 16.04.23 00:59, Stefan Roesch wrote:
> This adds three new tests to the selftests for KSM.  These tests use the
> new prctl API's to enable and disable KSM.
> 
> 1) add new prctl flags to prctl header file in tools dir
> 
>     This adds the new prctl flags to the include file prct.h in the
>     tools directory.  This makes sure they are available for testing.
> 
> 2) add KSM prctl merge test to ksm_tests
> 
>     This adds the -t option to the ksm_tests program.  The -t flag
>     allows to specify if it should use madvise or prctl ksm merging.
> 
> 3) add two functions for debugging merge outcome for ksm_tests
> 
>     This adds two functions to report the metrics in /proc/self/ksm_stat
>     and /sys/kernel/debug/mm/ksm. The debug output is enabled with the
>     -d option.
> 
> 4) add KSM prctl test to ksm_functional_tests
> 
>     This adds a test to the ksm_functional_test that verifies that the
>     prctl system call to enable / disable KSM works.
> 
> 5) add KSM fork test to ksm_functional_test
> 
>     Add fork test to verify that the MMF_VM_MERGE_ANY flag is inherited
>     by the child process.
> 
> Signed-off-by: Stefan Roesch <shr@devkernel.io>
> Cc: Bagas Sanjaya <bagasdotme@gmail.com>
> Cc: David Hildenbrand <david@redhat.com>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Cc: Michal Hocko <mhocko@suse.com>
> Cc: Rik van Riel <riel@surriel.com>
> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
> ---

Thanks!

Acked-by: David Hildenbrand <david@redhat.com>

-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v8 3/3] selftests/mm: add new selftests for KSM
       [not found] ` <20230415225913.3206647-4-shr@devkernel.io>
  2023-04-17  8:07   ` [PATCH v8 3/3] selftests/mm: add new selftests for KSM David Hildenbrand
@ 2023-04-17 14:35   ` David Hildenbrand
  2023-04-17 14:56     ` David Hildenbrand
  2023-04-17 16:40     ` Stefan Roesch
  1 sibling, 2 replies; 7+ messages in thread
From: David Hildenbrand @ 2023-04-17 14:35 UTC (permalink / raw)
  To: Stefan Roesch, kernel-team
  Cc: linux-mm, riel, mhocko, linux-kselftest, linux-doc, akpm, hannes,
	willy, Bagas Sanjaya

> +/* Verify that KSM can be enabled / queried with prctl. */
> +static void test_prctl(void)
> +{
> +	int ret;
> +
> +	ksft_print_msg("[RUN] %s\n", __func__);
> +
> +	ret = prctl(PR_SET_MEMORY_MERGE, 1, 0, 0, 0);
> +	if (ret < 0 && errno == EINVAL) {
> +		ksft_test_result_skip("PR_SET_MEMORY_MERGE not supported\n");
> +		return;
> +	} else if (ret) {
> +		ksft_test_result_fail("PR_SET_MEMORY_MERGE=1 failed\n");
> +	}

Just realized we're missing a "return;" in case of the failure here.

-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v8 3/3] selftests/mm: add new selftests for KSM
  2023-04-17 14:35   ` David Hildenbrand
@ 2023-04-17 14:56     ` David Hildenbrand
  2023-04-17 16:42       ` Stefan Roesch
  2023-04-17 16:40     ` Stefan Roesch
  1 sibling, 1 reply; 7+ messages in thread
From: David Hildenbrand @ 2023-04-17 14:56 UTC (permalink / raw)
  To: Stefan Roesch, kernel-team
  Cc: linux-mm, riel, mhocko, linux-kselftest, linux-doc, akpm, hannes,
	willy, Bagas Sanjaya

On 17.04.23 16:35, David Hildenbrand wrote:
>> +/* Verify that KSM can be enabled / queried with prctl. */
>> +static void test_prctl(void)
>> +{
>> +	int ret;
>> +
>> +	ksft_print_msg("[RUN] %s\n", __func__);
>> +
>> +	ret = prctl(PR_SET_MEMORY_MERGE, 1, 0, 0, 0);
>> +	if (ret < 0 && errno == EINVAL) {
>> +		ksft_test_result_skip("PR_SET_MEMORY_MERGE not supported\n");
>> +		return;
>> +	} else if (ret) {
>> +		ksft_test_result_fail("PR_SET_MEMORY_MERGE=1 failed\n");
>> +	}
> 
> Just realized we're missing a "return;" in case of the failure here.
> 


And we should probably fix that as well:

ERROR: do not initialise globals to 0
#235: FILE: tools/testing/selftests/mm/ksm_tests.c:57:
+int debug = 0;

total: 1 errors, 0 warnings, 512 lines checked


-- 
Thanks,

David / dhildenb


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v8 1/3] mm: add new api to enable ksm per process
       [not found] ` <20230415225913.3206647-2-shr@devkernel.io>
@ 2023-04-17 15:00   ` David Hildenbrand
  2023-04-17 16:36     ` Stefan Roesch
  0 siblings, 1 reply; 7+ messages in thread
From: David Hildenbrand @ 2023-04-17 15:00 UTC (permalink / raw)
  To: Stefan Roesch, kernel-team
  Cc: linux-mm, riel, mhocko, linux-kselftest, linux-doc, akpm, hannes,
	willy, Bagas Sanjaya

> +static void __ksm_add_vma(struct vm_area_struct *vma)
> +{
> +	unsigned long vm_flags = vma->vm_flags;
> +
> +	if (vm_flags & VM_MERGEABLE)
> +		return;
> +
> +	if (vma_ksm_compatible(vma)) {
> +		vm_flags |= VM_MERGEABLE;
> +		vm_flags_reset(vma, vm_flags);
> +	}
> +}

We can do the following simplification on top:

diff --git a/mm/ksm.c b/mm/ksm.c
index 905c8edce5cf..26e7f585d65d 100644
--- a/mm/ksm.c
+++ b/mm/ksm.c
@@ -2511,15 +2511,11 @@ static int ksm_scan_thread(void *nothing)

  static void __ksm_add_vma(struct vm_area_struct *vma)
  {
-	unsigned long vm_flags = vma->vm_flags;
-
-	if (vm_flags & VM_MERGEABLE)
+	if (vma->vm_flags & VM_MERGEABLE)
  		return;

-	if (vma_ksm_compatible(vma)) {
-		vm_flags |= VM_MERGEABLE;
-		vm_flags_reset(vma, vm_flags);
-	}
+	if (vma_ksm_compatible(vma))
+		vm_flags_set(vma, VM_MERGEABLE);
  }

  /**
-- 
2.39.2


I have some patches based on your patch set (handling/testing unmerging 
whens setting PR_SET_MEMORY_MERGE=0. Will send out once you changes are 
queued.

-- 
Thanks,

David / dhildenb


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v8 1/3] mm: add new api to enable ksm per process
  2023-04-17 15:00   ` [PATCH v8 1/3] mm: add new api to enable ksm per process David Hildenbrand
@ 2023-04-17 16:36     ` Stefan Roesch
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Roesch @ 2023-04-17 16:36 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: kernel-team, linux-mm, riel, mhocko, linux-kselftest, linux-doc,
	akpm, hannes, willy, Bagas Sanjaya


David Hildenbrand <david@redhat.com> writes:

>> +static void __ksm_add_vma(struct vm_area_struct *vma)
>> +{
>> +	unsigned long vm_flags = vma->vm_flags;
>> +
>> +	if (vm_flags & VM_MERGEABLE)
>> +		return;
>> +
>> +	if (vma_ksm_compatible(vma)) {
>> +		vm_flags |= VM_MERGEABLE;
>> +		vm_flags_reset(vma, vm_flags);
>> +	}
>> +}
>
> We can do the following simplification on top:
>
> diff --git a/mm/ksm.c b/mm/ksm.c
> index 905c8edce5cf..26e7f585d65d 100644
> --- a/mm/ksm.c
> +++ b/mm/ksm.c
> @@ -2511,15 +2511,11 @@ static int ksm_scan_thread(void *nothing)
>
>  static void __ksm_add_vma(struct vm_area_struct *vma)
>  {
> -	unsigned long vm_flags = vma->vm_flags;
> -
> -	if (vm_flags & VM_MERGEABLE)
> +	if (vma->vm_flags & VM_MERGEABLE)
>  		return;
>
> -	if (vma_ksm_compatible(vma)) {
> -		vm_flags |= VM_MERGEABLE;
> -		vm_flags_reset(vma, vm_flags);
> -	}
> +	if (vma_ksm_compatible(vma))
> +		vm_flags_set(vma, VM_MERGEABLE);
>  }
>
>  /**
> --
> 2.39.2
>
>

The next version has the above change.

> I have some patches based on your patch set (handling/testing unmerging whens
> setting PR_SET_MEMORY_MERGE=0. Will send out once you changes are queued.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v8 3/3] selftests/mm: add new selftests for KSM
  2023-04-17 14:35   ` David Hildenbrand
  2023-04-17 14:56     ` David Hildenbrand
@ 2023-04-17 16:40     ` Stefan Roesch
  1 sibling, 0 replies; 7+ messages in thread
From: Stefan Roesch @ 2023-04-17 16:40 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: kernel-team, linux-mm, riel, mhocko, linux-kselftest, linux-doc,
	akpm, hannes, willy, Bagas Sanjaya


David Hildenbrand <david@redhat.com> writes:

>> +/* Verify that KSM can be enabled / queried with prctl. */
>> +static void test_prctl(void)
>> +{
>> +	int ret;
>> +
>> +	ksft_print_msg("[RUN] %s\n", __func__);
>> +
>> +	ret = prctl(PR_SET_MEMORY_MERGE, 1, 0, 0, 0);
>> +	if (ret < 0 && errno == EINVAL) {
>> +		ksft_test_result_skip("PR_SET_MEMORY_MERGE not supported\n");
>> +		return;
>> +	} else if (ret) {
>> +		ksft_test_result_fail("PR_SET_MEMORY_MERGE=1 failed\n");
>> +	}
>
> Just realized we're missing a "return;" in case of the failure here.
>
I'll fix it in the next version.

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v8 3/3] selftests/mm: add new selftests for KSM
  2023-04-17 14:56     ` David Hildenbrand
@ 2023-04-17 16:42       ` Stefan Roesch
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Roesch @ 2023-04-17 16:42 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: kernel-team, linux-mm, riel, mhocko, linux-kselftest, linux-doc,
	akpm, hannes, willy, Bagas Sanjaya


David Hildenbrand <david@redhat.com> writes:

> On 17.04.23 16:35, David Hildenbrand wrote:
>>> +/* Verify that KSM can be enabled / queried with prctl. */
>>> +static void test_prctl(void)
>>> +{
>>> +	int ret;
>>> +
>>> +	ksft_print_msg("[RUN] %s\n", __func__);
>>> +
>>> +	ret = prctl(PR_SET_MEMORY_MERGE, 1, 0, 0, 0);
>>> +	if (ret < 0 && errno == EINVAL) {
>>> +		ksft_test_result_skip("PR_SET_MEMORY_MERGE not supported\n");
>>> +		return;
>>> +	} else if (ret) {
>>> +		ksft_test_result_fail("PR_SET_MEMORY_MERGE=1 failed\n");
>>> +	}
>> Just realized we're missing a "return;" in case of the failure here.
>>
>
>
> And we should probably fix that as well:
>
> ERROR: do not initialise globals to 0
> #235: FILE: tools/testing/selftests/mm/ksm_tests.c:57:
> +int debug = 0;
>
> total: 1 errors, 0 warnings, 512 lines checked

I'll fix it in the next version.'

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2023-04-17 16:43 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20230415225913.3206647-1-shr@devkernel.io>
     [not found] ` <20230415225913.3206647-4-shr@devkernel.io>
2023-04-17  8:07   ` [PATCH v8 3/3] selftests/mm: add new selftests for KSM David Hildenbrand
2023-04-17 14:35   ` David Hildenbrand
2023-04-17 14:56     ` David Hildenbrand
2023-04-17 16:42       ` Stefan Roesch
2023-04-17 16:40     ` Stefan Roesch
     [not found] ` <20230415225913.3206647-2-shr@devkernel.io>
2023-04-17 15:00   ` [PATCH v8 1/3] mm: add new api to enable ksm per process David Hildenbrand
2023-04-17 16:36     ` Stefan Roesch

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox