mbox series

[0/9] Add tests for memblock allocation functions

Message ID cover.1646055639.git.karolinadrobnik@gmail.com (mailing list archive)
Headers show
Series Add tests for memblock allocation functions | expand

Message

Karolina Drobnik Feb. 28, 2022, 2:46 p.m. UTC
Patches are on top of memblock/for-next.

This series adds test coverage for memblock allocation functions that return
virtual addresses:
  * memblock_alloc
  * memblock_alloc_try_nid
  * memblock_alloc_from

These tests are a part of memblock simulator, a user space test suite that uses
the actual memblock code[1]. All the tests are run as one, monolithic test, that
exercises both basic operations and allocation functions of memblock.

To simplify implementation of the memory allocation tests, reset_memblock() was
split into two functions - reset_memblock_attributes() and
reset_memblock_regions(). The former sets default values for region array names,
allocation direction flag (bottom_up) and current memory limit. The latter only
resets region arrays and corresponding counters.

In addition to these, the patch set introduces a data structure that simulates
physical memory, test_memory. It is a simple wrapper around a pointer to the
memory block allocated via malloc(), which is added to memblock as available
memory. This is required because the tested functions interact with the memory
before allocating it.

Patchset structure:
  * Patch 1 splits reset_memblock() into two functions -
    reset_memblock_regions() and reset_memblock_attributes(), and updates
    basic API tests to use the new definitions
  * Patch 2 adds test_memory struct and functions to add (or release) dummy
    physical memory
  * Patches 3 - 8 add test cases for memblock_alloc, memblock_alloc_try_nid and
    memblock_alloc_from for both allocation directions (default top down and
    bottom up)
  * Patch 9 adds README and TODO files

[1] https://lore.kernel.org/linux-mm/cover.1643796665.git.karolinadrobnik@gmail.com/

Karolina Drobnik (9):
  memblock tests: Split up reset_memblock function
  memblock tests: Add simulation of physical memory
  memblock tests: Add memblock_alloc tests for top down
  memblock tests: Add memblock_alloc tests for bottom up
  memblock tests: Add memblock_alloc_from tests for top down
  memblock tests: Add memblock_alloc_from tests for bottom up
  memblock tests: Add memblock_alloc_try_nid tests for top down
  memblock tests: Add memblock_alloc_try_nid tests for bottom up
  memblock tests: Add TODO and README files

 tools/testing/memblock/Makefile               |    3 +-
 tools/testing/memblock/README                 |  114 ++
 tools/testing/memblock/TODO                   |   28 +
 tools/testing/memblock/main.c                 |    7 +
 tools/testing/memblock/tests/alloc_api.c      |  742 +++++++++++
 tools/testing/memblock/tests/alloc_api.h      |    9 +
 .../memblock/tests/alloc_helpers_api.c        |  393 ++++++
 .../memblock/tests/alloc_helpers_api.h        |    9 +
 tools/testing/memblock/tests/alloc_nid_api.c  | 1167 +++++++++++++++++
 tools/testing/memblock/tests/alloc_nid_api.h  |    9 +
 tools/testing/memblock/tests/basic_api.c      |   49 +-
 tools/testing/memblock/tests/basic_api.h      |    1 -
 tools/testing/memblock/tests/common.c         |   33 +-
 tools/testing/memblock/tests/common.h         |   21 +-
 14 files changed, 2550 insertions(+), 35 deletions(-)
 create mode 100644 tools/testing/memblock/README
 create mode 100644 tools/testing/memblock/TODO
 create mode 100644 tools/testing/memblock/tests/alloc_api.c
 create mode 100644 tools/testing/memblock/tests/alloc_api.h
 create mode 100644 tools/testing/memblock/tests/alloc_helpers_api.c
 create mode 100644 tools/testing/memblock/tests/alloc_helpers_api.h
 create mode 100644 tools/testing/memblock/tests/alloc_nid_api.c
 create mode 100644 tools/testing/memblock/tests/alloc_nid_api.h


base-commit: f30b002ccfee8c60c8feb590e145c0b5e8fa4c67
--
2.30.2

Comments

Mike Rapoport March 7, 2022, 6:17 p.m. UTC | #1
Hi Karolina,

On Mon, Feb 28, 2022 at 03:46:42PM +0100, Karolina Drobnik wrote:
> Patches are on top of memblock/for-next.
> 
> This series adds test coverage for memblock allocation functions that return
> virtual addresses:
>   * memblock_alloc
>   * memblock_alloc_try_nid
>   * memblock_alloc_from
> 
> These tests are a part of memblock simulator, a user space test suite that uses
> the actual memblock code[1]. All the tests are run as one, monolithic test, that
> exercises both basic operations and allocation functions of memblock.
> 
> To simplify implementation of the memory allocation tests, reset_memblock() was
> split into two functions - reset_memblock_attributes() and
> reset_memblock_regions(). The former sets default values for region array names,
> allocation direction flag (bottom_up) and current memory limit. The latter only
> resets region arrays and corresponding counters.
> 
> In addition to these, the patch set introduces a data structure that simulates
> physical memory, test_memory. It is a simple wrapper around a pointer to the
> memory block allocated via malloc(), which is added to memblock as available
> memory. This is required because the tested functions interact with the memory
> before allocating it.
> 
> Patchset structure:
>   * Patch 1 splits reset_memblock() into two functions -
>     reset_memblock_regions() and reset_memblock_attributes(), and updates
>     basic API tests to use the new definitions
>   * Patch 2 adds test_memory struct and functions to add (or release) dummy
>     physical memory
>   * Patches 3 - 8 add test cases for memblock_alloc, memblock_alloc_try_nid and
>     memblock_alloc_from for both allocation directions (default top down and
>     bottom up)
>   * Patch 9 adds README and TODO files
 
Except for few minor comments about README and TODO these patches look good
to me.

The only think that I'd really like is to wrap the lines longer that 80
characters.

(scripts/checkpatch.pl --max-line-length=80 can help with that)

> [1] https://lore.kernel.org/linux-mm/cover.1643796665.git.karolinadrobnik@gmail.com/
> 
> Karolina Drobnik (9):
>   memblock tests: Split up reset_memblock function
>   memblock tests: Add simulation of physical memory
>   memblock tests: Add memblock_alloc tests for top down
>   memblock tests: Add memblock_alloc tests for bottom up
>   memblock tests: Add memblock_alloc_from tests for top down
>   memblock tests: Add memblock_alloc_from tests for bottom up
>   memblock tests: Add memblock_alloc_try_nid tests for top down
>   memblock tests: Add memblock_alloc_try_nid tests for bottom up
>   memblock tests: Add TODO and README files
> 
>  tools/testing/memblock/Makefile               |    3 +-
>  tools/testing/memblock/README                 |  114 ++
>  tools/testing/memblock/TODO                   |   28 +
>  tools/testing/memblock/main.c                 |    7 +
>  tools/testing/memblock/tests/alloc_api.c      |  742 +++++++++++
>  tools/testing/memblock/tests/alloc_api.h      |    9 +
>  .../memblock/tests/alloc_helpers_api.c        |  393 ++++++
>  .../memblock/tests/alloc_helpers_api.h        |    9 +
>  tools/testing/memblock/tests/alloc_nid_api.c  | 1167 +++++++++++++++++
>  tools/testing/memblock/tests/alloc_nid_api.h  |    9 +
>  tools/testing/memblock/tests/basic_api.c      |   49 +-
>  tools/testing/memblock/tests/basic_api.h      |    1 -
>  tools/testing/memblock/tests/common.c         |   33 +-
>  tools/testing/memblock/tests/common.h         |   21 +-
>  14 files changed, 2550 insertions(+), 35 deletions(-)
>  create mode 100644 tools/testing/memblock/README
>  create mode 100644 tools/testing/memblock/TODO
>  create mode 100644 tools/testing/memblock/tests/alloc_api.c
>  create mode 100644 tools/testing/memblock/tests/alloc_api.h
>  create mode 100644 tools/testing/memblock/tests/alloc_helpers_api.c
>  create mode 100644 tools/testing/memblock/tests/alloc_helpers_api.h
>  create mode 100644 tools/testing/memblock/tests/alloc_nid_api.c
>  create mode 100644 tools/testing/memblock/tests/alloc_nid_api.h
> 
> 
> base-commit: f30b002ccfee8c60c8feb590e145c0b5e8fa4c67
> --
> 2.30.2
>
Mike Rapoport March 9, 2022, 3:10 p.m. UTC | #2
On Mon, Mar 07, 2022 at 08:17:39PM +0200, Mike Rapoport wrote:
> Hi Karolina,
> 
> On Mon, Feb 28, 2022 at 03:46:42PM +0100, Karolina Drobnik wrote:
> > Patches are on top of memblock/for-next.
> > 
> > This series adds test coverage for memblock allocation functions that return
> > virtual addresses:
> >   * memblock_alloc
> >   * memblock_alloc_try_nid
> >   * memblock_alloc_from
> > 
> > These tests are a part of memblock simulator, a user space test suite that uses
> > the actual memblock code[1]. All the tests are run as one, monolithic test, that
> > exercises both basic operations and allocation functions of memblock.
> > 
> > To simplify implementation of the memory allocation tests, reset_memblock() was
> > split into two functions - reset_memblock_attributes() and
> > reset_memblock_regions(). The former sets default values for region array names,
> > allocation direction flag (bottom_up) and current memory limit. The latter only
> > resets region arrays and corresponding counters.
> > 
> > In addition to these, the patch set introduces a data structure that simulates
> > physical memory, test_memory. It is a simple wrapper around a pointer to the
> > memory block allocated via malloc(), which is added to memblock as available
> > memory. This is required because the tested functions interact with the memory
> > before allocating it.
> > 
> > Patchset structure:
> >   * Patch 1 splits reset_memblock() into two functions -
> >     reset_memblock_regions() and reset_memblock_attributes(), and updates
> >     basic API tests to use the new definitions
> >   * Patch 2 adds test_memory struct and functions to add (or release) dummy
> >     physical memory
> >   * Patches 3 - 8 add test cases for memblock_alloc, memblock_alloc_try_nid and
> >     memblock_alloc_from for both allocation directions (default top down and
> >     bottom up)
> >   * Patch 9 adds README and TODO files
>  
> Except for few minor comments about README and TODO these patches look good
> to me.

I went ahead and applied this series with some formatting fixes.