@@ -152,91 +152,3 @@ TEST_F(memspaceHostAllProviderTest, hostAllDefaults) {
152152 UT_ASSERTeq (ret, UMF_RESULT_SUCCESS);
153153 umfMemoryProviderDestroy (hProvider);
154154}
155-
156- TEST_F (memspaceHostAllProviderTest, allocsSpreadAcrossAllNumaNodes) {
157- // This testcase is unsuitable for TSan.
158- #ifdef __SANITIZE_THREAD__
159- GTEST_SKIP ();
160- #endif
161-
162- // Arbitrary allocation size, should be big enough to avoid unnecessarily
163- // prolonging the test execution.
164- size_t size = SIZE_4M;
165- size_t alignment = 0 ;
166- // Unallocated memory space that has to be left in an attempt to avoid OOM
167- // killer - 512MB.
168- size_t remainingSpace = SIZE_4M * 128 ;
169-
170- long long numaCombinedFreeSize = 0 ;
171- // Gather free size of all numa nodes.
172- for (auto &id : nodeIds) {
173- long long numaFreeSize = 0 ;
174- long long numaSize = numa_node_size64 (id, &numaFreeSize);
175- UT_ASSERTne (numaSize, -1 );
176- UT_ASSERT (numaFreeSize >= (long long )(remainingSpace + size));
177-
178- numaCombinedFreeSize += numaFreeSize;
179- }
180-
181- umf_result_t umf_ret = UMF_RESULT_SUCCESS;
182- // Create allocations until all the NUMA nodes until there's space only for
183- // one allocation.
184- std::vector<void *> allocs;
185- std::unordered_set<size_t > allocNodeIds;
186- while (numaCombinedFreeSize >= (long long )(remainingSpace + size)) {
187- void *ptr = nullptr ;
188- umf_ret = umfMemoryProviderAlloc (hProvider, size, alignment, &ptr);
189- if (umf_ret != UMF_RESULT_SUCCESS) {
190- UT_ASSERTeq (umf_ret, UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC);
191- const char *msg = nullptr ;
192- int32_t err = 0 ;
193- umfMemoryProviderGetLastNativeError (hProvider, &msg, &err);
194- // In this scenario, 'UMF_OS_RESULT_ERROR_ALLOC_FAILED' indicates OOM.
195- UT_ASSERTeq (err, UMF_OS_RESULT_ERROR_ALLOC_FAILED);
196- break ;
197- }
198-
199- UT_ASSERTne (ptr, nullptr );
200- // Access the allocation, so that all the pages associated with it are
201- // allocated on available NUMA nodes.
202- memset (ptr, 0xFF , size);
203-
204- int mode = -1 ;
205- std::vector<size_t > boundNodeIds;
206- size_t allocNodeId = SIZE_MAX;
207- getAllocationPolicy (ptr, maxNodeId, mode, boundNodeIds, allocNodeId);
208-
209- // In case of 'HOST ALL' memspace, the default set of nodes (that
210- // contains all available nodes) is used but get_mempolicy() would
211- // return an empty set of nodes.
212- UT_ASSERTeq (mode, MPOL_DEFAULT);
213- UT_ASSERTeq (boundNodeIds.size (), 0 );
214-
215- // Confirm that the memory is allocated on one of the nodes in
216- // 'HOST ALL' memspace.
217- auto it = std::find (nodeIds.begin (), nodeIds.end (), allocNodeId);
218- UT_ASSERT (it != nodeIds.end ());
219-
220- allocs.push_back (ptr);
221- allocNodeIds.insert (allocNodeId);
222-
223- numaCombinedFreeSize -= size;
224- }
225-
226- UT_ASSERT (allocs.size () >= nodeIds.size ());
227- for (auto &ptr : allocs) {
228- umf_ret = umfMemoryProviderFree (hProvider, ptr, size);
229- UT_ASSERTeq (umf_ret, UMF_RESULT_SUCCESS);
230- }
231-
232- // TODO: we want to enable this check only when tests are running under QEMU.
233- // Otherwise it might sporadically fail on a real system where other processes
234- // occupied all memory from a aparticular NUMA node.
235- #if 0
236- // Confirm that all the NUMA nodes bound to 'HOST ALL' memspace were exhausted.
237- for (auto &id : nodeIds) {
238- auto it = std::find(allocNodeIds.begin(), allocNodeIds.end(), id);
239- UT_ASSERT(it != allocNodeIds.end());
240- }
241- #endif
242- }
0 commit comments