Re: [PATCH v9 5/5] selftest: add a testcase of ksm zero pages

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

 



>> +	if (write(ksm_use_zero_pages_fd, "1", 1) != 1) {
>> +		ksft_test_result_skip("write \"/sys/kernel/mm/ksm/use_zero_pages\" failed\n");
>> +		return;
>> +	}
>
>I realize that this test will fail if there is any other process in the system that has KSM
>Enabled with a suitable page filled with zeroes ... maybe instead of checking the global
>KSM zeropages, check the per-mm ones instead? That should be better

Emmm, yes. It makes sense. I'll do it per-mm in next-version.

>You could do something like the following on top (I recall you had some kind of COW
>tests previously, this should be a simplified version of it):
>

Ok. Thank you.

>diff --git a/tools/testing/selftests/mm/ksm_functional_tests.c b/tools/testing/selftests/mm/ksm_functional_tests.c
>index ea060c683c80..160675a4e3d2 100644
>--- a/tools/testing/selftests/mm/ksm_functional_tests.c
>+++ b/tools/testing/selftests/mm/ksm_functional_tests.c
>@@ -182,6 +182,7 @@ static void test_unmerge(void)
>  static void test_unmerge_zero_pages(void)
>  {
>  	const unsigned int size = 2 * MiB;
>+	unsigned int offs;
>  	char *map;
>  	unsigned long pages_expected;
>  
>@@ -225,8 +226,18 @@ static void test_unmerge_zero_pages(void)
>  		goto unmap;
>  	}
>  
>+	/* Trigger unmerging of the other half by writing to the pages. */
>+	for (offs = size / 2; offs < size; offs += pagesize)
>+		*((unsigned int *)&map[offs]) = offs;
>+
>+	/* We should have no zeropages remaining. */
>+	if (get_ksm_zero_pages()) {
>+		ksft_test_result_fail("'ksm_zero_pages' updated after write fault\n");
>+		goto unmap;
>+	}
>+
>  	/* Check if ksm zero pages are really unmerged */
>-	ksft_test_result(!range_maps_duplicates(map, size / 2),
>+	ksft_test_result(!range_maps_duplicates(map, size),
>  				"KSM zero pages were unmerged\n");
>  unmap:
>  	munmap(map, size);




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux