Re: [PATCH v6 6/6] selftest: add testing unsharing and counting ksm zero page

From: Claudio Imbrenda
Date: Tue Mar 07 2023 - 14:10:56 EST


On Fri, 10 Feb 2023 09:21:57 +0800 (CST)
<yang.yang29@xxxxxxxxxx> wrote:

> From: xu xin <xu.xin16@xxxxxxxxxx>
>
> Add a function test_unmerge_zero_page() to test the functionality on
> unsharing and counting ksm-placed zero pages and counting of this patch
> series.
>
> test_unmerge_zero_page() actually contains three subjct test objects:
> 1) whether the count of ksm zero page can react correctly to cow
> (copy on write);
> 2) whether the count of ksm zero page can react correctly to unmerge;
> 3) whether ksm zero pages are really unmerged.
>
> Signed-off-by: xu xin <xu.xin16@xxxxxxxxxx>
> Cc: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx>
> Cc: David Hildenbrand <david@xxxxxxxxxx>
> Cc: Xuexin Jiang <jiang.xuexin@xxxxxxxxxx>
> Reviewed-by: Xiaokai Ran <ran.xiaokai@xxxxxxxxxx>
> Reviewed-by: Yang Yang <yang.yang29@xxxxxxxxxx>

[...]

> +static int unmerge_zero_page(char *start, unsigned long size)
> +{
> + int ret;
> +
> + ret = madvise(start, size, MADV_UNMERGEABLE);
> + if (ret) {
> + ksft_test_result_fail("MADV_UNMERGEABLE failed\n");
> + return ret;
> + }
> +
> + /*
> + * Wait for two full scans such that any possible unmerging of zero
> + * pages happened. Why? Because the unmerge action of zero pages is not

please remove "Why? Because"

> + * done in the context of madvise(), but in the context of
> + * unshare_zero_pages() of the ksmd thread.
> + */
> + return wait_two_full_scans();
> +}
> +
> static char *mmap_and_merge_range(char val, unsigned long size)
> {
> char *map;

[...]