From patchwork Tue Sep 13 05:21:08 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Rebecca Mckeever X-Patchwork-Id: 12974407 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B708C54EE9 for ; Tue, 13 Sep 2022 05:21:30 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E58DE8D0001; Tue, 13 Sep 2022 01:21:29 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E07F06B0073; Tue, 13 Sep 2022 01:21:29 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CCF988D0001; Tue, 13 Sep 2022 01:21:29 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id BD21B6B0072 for ; Tue, 13 Sep 2022 01:21:29 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 889D0160866 for ; Tue, 13 Sep 2022 05:21:29 +0000 (UTC) X-FDA: 79905914298.01.BBF8D6F Received: from mail-qt1-f195.google.com (mail-qt1-f195.google.com [209.85.160.195]) by imf14.hostedemail.com (Postfix) with ESMTP id 3E904100098 for ; Tue, 13 Sep 2022 05:21:29 +0000 (UTC) Received: by mail-qt1-f195.google.com with SMTP id g23so3314897qtu.2 for ; Mon, 12 Sep 2022 22:21:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=62h1MAuVwSbDjXD0anEf/eJ0jHXwRdLYrtgnbPgF46c=; b=PHLM5nNHcw/mZE3RfBdcDO078m4ywJx+nGSQgee8Wpum/WvcDe7TTI2RFaG5GK8mWP mN0+oXW1TWJGxAcJM681w1dgcSGrt0EpXHEp2nml9ryloG83BRFZyeChUWuJpCkMwoae b+f6IBKmleMb4zdI8qTbpaZfAMsAUqmmwRZVWJs0Go/fkThNytTv6T7ad2lsWKDlbdNG 1apYxz3r/wi+AQJ/vI/Bbs5A5EsVtIvxieDF6ACfbB/hiOUkmrH/cH6p19RLckDESwEV 4/5dDJlI6rFq0oGIfVT/RC/hTs8dl2KDQSnwhwSGlx8iDvt4397zabEAv/wnnGSt5Mb2 0aNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=62h1MAuVwSbDjXD0anEf/eJ0jHXwRdLYrtgnbPgF46c=; b=TPXgpbbTzQ1r2W69DX5CTCEXn1xBsR5mYMs85CRgxqnMuLQ2t2oJNYc8HppYGlAI32 OY6QeXSdso3qsvWMJGzLh50CvWK32jDReDXT7oMtgbtwYN8QRANRiQOtKytQcexVwC3u Z1HVhFnq59SM9kraCKxS6OQAZd0SU5pJQOGD6Bw/IAs5fkgLA1/drrXrPMdQH5VcH+Zx EHpNhJYVSwl9rKPtGz/Beo9LMq/+yR7kP7wpbH8o3ugJklDKsXXoX9uQ4v1FU+03Hkyw du/9wVXI14EvAbmoVATaiqIfoBXBy1vKnHjPJP8iT8Izc3nk5p4s1tZhHCR9PAZfSwQ0 PuNA== X-Gm-Message-State: ACgBeo11S0zKX+r9oBB4NAui8m619UFl9Dlw0hgI/ClYS/0JR9xBjeJn nXTelvWS9jCuvWuFCfPvmFc= X-Google-Smtp-Source: AA6agR4ETJJpeh0g20GjLpaXbfz2QyHtazk7T7p9YBS7fImF4XKNuTMVTUMx6C1nxc1Iy1Kktm7NtA== X-Received: by 2002:ac8:5f82:0:b0:35b:b35e:74ff with SMTP id j2-20020ac85f82000000b0035bb35e74ffmr7485496qta.574.1663046488454; Mon, 12 Sep 2022 22:21:28 -0700 (PDT) Received: from sophie ([45.134.140.166]) by smtp.gmail.com with ESMTPSA id k20-20020a05620a415400b006c479acd82fsm9376839qko.7.2022.09.12.22.21.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Sep 2022 22:21:27 -0700 (PDT) From: Rebecca Mckeever To: Mike Rapoport , linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: David Hildenbrand , Rebecca Mckeever Subject: [PATCH v6 0/4] memblock tests: add NUMA tests for memblock_alloc_try_nid* Date: Tue, 13 Sep 2022 00:21:08 -0500 Message-Id: X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 ARC-Authentication-Results: i=1; imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=PHLM5nNH; spf=pass (imf14.hostedemail.com: domain of remckee0@gmail.com designates 209.85.160.195 as permitted sender) smtp.mailfrom=remckee0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1663046489; a=rsa-sha256; cv=none; b=4+RWbCCCF3NA8IaaV2iz8ZQYkf+VIa+MdmIhS0g02wk3j24LCLEMoi6cUNbZ7oZeuor3Vh +dQ46+IyHBnlV4aXrc/7NyxJdDWqs0FBACGK2givKY7tgwD4u+diPxlCd8GhYeUY8WZ5C0 OEbe+5N+7ZuBTVSkwPCsayTKoeHfHg0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1663046489; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=62h1MAuVwSbDjXD0anEf/eJ0jHXwRdLYrtgnbPgF46c=; b=UFiBGojQBzRDfDnp9ah6FWmOB1uQKVYugyEZDEDN/SRHQq9Kfd9PSElcJw3uTMW5MaEpmn GkZ2sPtXszGIZQEevJwgyMaPOqvvvYsEdZLLn0e1hhw9okdRJf+eXUYGkiw/m3Qm4+i/nk G02Ppz2KjdrG2sg/Udk/iZ2zIafy8HY= Authentication-Results: imf14.hostedemail.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=PHLM5nNH; spf=pass (imf14.hostedemail.com: domain of remckee0@gmail.com designates 209.85.160.195 as permitted sender) smtp.mailfrom=remckee0@gmail.com; dmarc=pass (policy=none) header.from=gmail.com X-Rspamd-Server: rspam12 X-Stat-Signature: 3gt37uyb6cqz35h739ydskue6d1rzkqo X-Rspamd-Queue-Id: 3E904100098 X-Rspam-User: X-HE-Tag: 1663046489-435635 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: These patches add additional tests for memblock_alloc_try_nid() and memblock_alloc_try_nid_raw() that use a simulated physical memory that is set up with multiple NUMA nodes. Additionally, most of these tests set nid != NUMA_NO_NODE. To set up a simulated physical memory with multiple NUMA nodes, patch 1 introduces setup_numa_memblock(). This function uses a previously allocated dummy physical memory. It can be used in place of setup_memblock() in tests that need to simulate a NUMA system. These tests are run twice, once for memblock_alloc_try_nid() and once for memblock_alloc_try_nid_raw(), so that both functions are tested with the same set of tests. When the tests run memblock_alloc_try_nid(), they test that the entire memory region is zero. When the tests run memblock_alloc_try_nid_raw(), they test that the entire memory region is nonzero. --- Changelog v5 -> v6 Based on feedback from David Hildenbrand: PATCH 1: - tests/common.c, tests/common.h: + setup_numa_memblock(): * Change nodes[] from const int to const unsigned int * Remove "&& node_fracs[i] > 0" from the assert() PATCH 2: - tests/alloc_nid_api.c: + Update node_fractions[] type to static const unsigned int to reflect changes in PATCH 1 v4 -> v5 Based on feedback from David Hildenbrand: PATCH 1: - tests/common.c: + setup_numa_memblock(): * Change nodes[] to int basis points (one hundredth of 1% or 1/10000) instead of phys_addr_t fraction denominators * Rename parameter nodes[] to node_fracs[] PATCH 2: - tests/alloc_nid_api.c: + Update node_fractions[] to reflect changes in PATCH 1 v3 -> v4 Based on feedback from David Hildenbrand: PATCH 1: - tests/common.h: + Remove #define MEM_FACTOR PATCH 2: - tests/alloc_nid_api.c: + Add missing blank line after alloc_nid_test_flags = flags; PATCH 2, PATCH 3, PATCH 4: - tests/alloc_nid_api.c: + Define variables in new tests in a single block + Change "cleared memory region" to "memory region" in comment blocks for new tests Based on feedback from Mike Rapoport: PATCH 1: - tests/common.c: + Remove node_sizes[] array - tests/common.c, tests/common.h: + Combine setup_numa_memblock_generic() and setup_numa_memblock(): * Remove setup_numa_memblock(void) * Change setup_numa_memblock_generic() to setup_numa_memblock() and remove the factor and node_cnt parameters * Change nodes[] parameter to an array containing the * denominators of the fractions of MEM_SIZE contained in each node e.g., if nodes[0] = SZ_8, node 0 will contain 1/8th of MEM_SIZE PATCH 2: - tests/alloc_nid_api.c: + Add node_fractions[] array: * Based on values from node_sizes[] array previously in PATCH 1 * Update to fit the new nodes[] parameter of * setup_numa_memblock() v2 -> v3 PATCH 2, PATCH 3, PATCH 4: - tests/alloc_nid_api.c: + Edits for consistency between tests and test naming styles: * Change "numa_top_down" to "top_down_numa" * Change "numa_bottom_up" to "bottom_up_numa" * Move "generic" to immediately before "check" * alloc_try_nid_bottom_up_numa_small_node_check() and alloc_try_nid_bottom_up_numa_node_reserved_check(): - Separate size definition from its declaration Updates based on changes to the dependent patch set noted above: PATCH 2, PATCH 3, PATCH 4: - tests/alloc_nid_api.c: + get_func_testing(): * Rename to get_memblock_alloc_try_nid_name(). + Update calls to verify_mem_content() to assert_mem_content(). v1 -> v2 Updates based on changes to the dependent patch set noted above: PATCH 2, PATCH 3, PATCH 4: - tests/alloc_nid_api.c: + Update calls to verify_mem_content() to include the flags parameter required by the new, common verify_mem_content() function. --- Rebecca Mckeever (4): memblock tests: add simulation of physical memory with multiple NUMA nodes memblock tests: add top-down NUMA tests for memblock_alloc_try_nid* memblock tests: add bottom-up NUMA tests for memblock_alloc_try_nid* memblock tests: add generic NUMA tests for memblock_alloc_try_nid* .../testing/memblock/scripts/Makefile.include | 2 +- tools/testing/memblock/tests/alloc_nid_api.c | 1466 ++++++++++++++++- tools/testing/memblock/tests/alloc_nid_api.h | 16 + tools/testing/memblock/tests/common.c | 31 + tools/testing/memblock/tests/common.h | 22 +- 5 files changed, 1524 insertions(+), 13 deletions(-)