Re: [PATCH v4 2/4] memblock tests: add top-down NUMA tests for memblock_alloc_try_nid*

From: David Hildenbrand
Date: Thu Sep 08 2022 - 08:24:06 EST


On 04.09.22 06:21, Rebecca Mckeever wrote:
Add tests for memblock_alloc_try_nid() and memblock_alloc_try_nid_raw()
where the simulated physical memory is set up with multiple NUMA nodes.
Additionally, all of these tests set nid != NUMA_NO_NODE. These tests are
run with a top-down allocation direction.

The tested scenarios are:

Range unrestricted:
- region can be allocated in the specific node requested:
+ there are no previously reserved regions
+ the requested node is partially reserved but has enough space
- the specific node requested cannot accommodate the request, but the
region can be allocated in a different node:
+ there are no previously reserved regions, but node is too small
+ the requested node is fully reserved
+ the requested node is partially reserved and does not have
enough space

Range restricted:
- region can be allocated in the specific node requested after dropping
min_addr:
+ range partially overlaps with two different nodes, where the first
node is the requested node
+ range partially overlaps with two different nodes, where the
requested node ends before min_addr
- region cannot be allocated in the specific node requested, but it can be
allocated in the requested range:
+ range overlaps with multiple nodes along node boundaries, and the
requested node ends before min_addr
+ range overlaps with multiple nodes along node boundaries, and the
requested node starts after max_addr
- region cannot be allocated in the specific node requested, but it can be
allocated after dropping min_addr:
+ range partially overlaps with two different nodes, where the
second node is the requested node

Signed-off-by: Rebecca Mckeever <remckee0@xxxxxxxxx>
---
tools/testing/memblock/tests/alloc_nid_api.c | 694 ++++++++++++++++++-
tools/testing/memblock/tests/alloc_nid_api.h | 16 +
tools/testing/memblock/tests/common.h | 18 +
3 files changed, 717 insertions(+), 11 deletions(-)

diff --git a/tools/testing/memblock/tests/alloc_nid_api.c b/tools/testing/memblock/tests/alloc_nid_api.c
index 32b3c1594fdd..a639e9d3e098 100644
--- a/tools/testing/memblock/tests/alloc_nid_api.c
+++ b/tools/testing/memblock/tests/alloc_nid_api.c
@@ -3,6 +3,14 @@
static int alloc_nid_test_flags = TEST_F_NONE;
+/*
+ * contains the denominators of the fractions of MEM_SIZE contained in each node
+ * (e.g., if node_fractions[0] = SZ_8, node 0 will contain 1/8th of MEM_SIZE)
+ */
+static const phys_addr_t node_fractions[] = {
+ SZ_4, SZ_16, SZ_8, SZ_8, SZ_16, SZ_16, SZ_4, SZ_16
+};
+

Besides that part, that I consider confusing :)

Acked-by: David Hildenbrand <david@xxxxxxxxxx>

--
Thanks,

David / dhildenb