Re: [PATCH v10 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test

[email protected]
Newsgroups org.freedesktop.lists.intel-gfx,org.freedesktop.lists.dri-devel,org.freedesktop.lists.intel-xe
Message-ID <[email protected]>
Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] Scenario 1 of the dirty tracker performance test fails to exercise the contiguous allocation path and `__force_merge()`, rendering its benchmark results invalid.
--

--- Patch [2]: [PATCH v10 2/2] gpu/tests/buddy: add dirty tracker performance KUnit test ---
commit 31fa603bd9e94c9fc78fd665cdb47f320c0dabdd
Author: Arunpravin Paneer Selvam <[email protected]>

gpu/tests/buddy: add dirty tracker performance KUnit test

This commit adds a new KUnit test to demonstrate the performance advantage
of the decoupled dirty-tracker design over the previous dual-tree and
force_merge approach.

> diff --git a/drivers/gpu/tests/gpu_buddy_test.c b/drivers/gpu/tests/gpu_buddy_test.c
> index 6ce485eae83ee..04344468ab6bf 100644
> --- a/drivers/gpu/tests/gpu_buddy_test.c
> +++ b/drivers/gpu/tests/gpu_buddy_test.c
[ ... ]
> +static void gpu_test_buddy_dirty_tracker_performance(struct kunit *test)
> +{
[ ... ]
> +	start = ktime_get();
> +	KUNIT_ASSERT_FALSE_MSG(test,
> +			       gpu_buddy_alloc_blocks(&mm, 0, SZ_4G, SZ_4G, SZ_4K,
> +						      &results,
> +						      GPU_BUDDY_CONTIGUOUS_ALLOCATION),
> +			       "contiguous alloc failed\n");

[Severity: Medium]
Does this allocation actually exercise the contiguous allocation path and
invoke __force_merge() as intended?

Looking at gpu_buddy_alloc_blocks(), when start + size == end (0 + SZ_4G ==
SZ_4G), the function takes an early exact-range allocation path and returns
__gpu_buddy_alloc_range():

drivers/gpu/buddy.c:gpu_buddy_alloc_blocks() {
    ...
	/* Actual range allocation */
	if (start + size == end) {
		if (!IS_ALIGNED(start | end, min_block_size))
			return -EINVAL;

		return __gpu_buddy_alloc_range(mm, start, size, flags, NULL, blocks);
	}
    ...
}

This bypasses the contiguous allocation logic entirely, meaning the baseline
measurement of 71 ms might just be the overhead of iterating the tree and
gathering 1,048,576 individual 4 KiB fragments into a list, rather than
measuring __force_merge() performance.

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/[email protected]?part=2
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.