allocator_perf_tool
gtest_fused
performance
python_framework
Allocator.hpp
Makefile.mk
README
TestPolicy.hpp
alloc_benchmark.c
alloc_performance_tests.cpp
allocate_to_max_stress_test.cpp
autohbw_test_helper.c
bat_tests.cpp
check.cpp
check.h
common.h
dax_kmem_env_var_test.py
dax_kmem_nodes.cpp
dax_kmem_nodes.h
decorator_test.cpp
decorator_test.h
dlopen_test.cpp
draw_plots.py
environ_err_dax_kmem_malloc_positive_test.cpp
environ_err_dax_kmem_malloc_test.cpp
environ_err_hbw_malloc_test.cpp
error_message_tests.cpp
fragmentation_benchmark_pmem.cpp
freeing_memory_segfault_test.cpp
gb_page_tests_bind_policy.cpp
get_arena_test.cpp
hbw_allocator_performance_tests.cpp
hbw_allocator_tests.cpp
hbw_verify_function_test.cpp
heap_manager_init_perf_test.cpp
huge_page_test.cpp
load_tbbmalloc_symbols.c
locality_test.cpp
main.cpp
memkind-afts-ext.ts
memkind-afts.ts
memkind-perf-ext.ts
memkind-perf.ts
memkind-pytests.ts
memkind-slts.ts
memkind_allocator_tests.cpp
memkind_dax_kmem_test.cpp
memkind_defrag_reallocate.cpp
memkind_detect_kind_tests.cpp
memkind_null_kind_test.cpp
memkind_pmem_config_tests.cpp
memkind_pmem_long_time_tests.cpp
memkind_pmem_tests.cpp
memkind_stat_test.cpp
memkind_versioning_tests.cpp
memory_footprint_test.cpp
memory_manager.h
multithreaded_tests.cpp
negative_tests.cpp
pmem_alloc_performance_tests.cpp
pmem_allocator_tests.cpp
proc_stat.h
random_sizes_allocator.h
run_alloc_benchmark.sh
static_kinds_list.h
static_kinds_tests.cpp
tbbmalloc.h
trace_mechanism_test_helper.c
trial_generator.cpp
trial_generator.h
autohbw_test.py
hbw_detection_test.py
test.sh
test_dax_kmem.sh
trace_mechanism_test.py
README
MEMKIND TESTS
=============


DISCLAIMER
==========
SEE COPYING FILE FOR LICENSE INFORMATION.

THIS SOFTWARE IS PROVIDED AS A DEVELOPMENT SNAPSHOT TO AID
COLLABORATION AND WAS NOT ISSUED AS A RELEASED PRODUCT BY INTEL.

LAST UPDATE
===========
Agata Wozniak <agata.wozniak@intel.com>
Wednesday May 11 2016

TESTS SCENARIOS
===============

memkind-afts
------------
This is scenario for basic functional tests. Maximum number of allocations per numa node:
- 512 x 4KB pages (summary: 2GB)
- 16 x 2MB pages

memkind-afts-ext
----------------
The same tests as in memkind-afts, however this tests are more ravenous and needs more memory
available. Special test cases prepared only for this scenario are described as ravenous
and needs at least:
- 512 x 4KB pages (summary: 2GB)
- 16 x 2MB pages
memory available per numa node.

memkind-perf
------------
This is scenario for performance tests, excluding tests that allocate more than:
- 512 x 4KB pages (summary: 2GB)
- 16 x 2MB pages

memkind-perf-ext
----------------
This test scenario extend memkind-perf for tests that allocate more than:
- 512 x 4KB pages (summary: 2GB)
- 16 x 2MB pages
AllocPerformanceTest is a group of performance tests for *alloc() execution. TC properties:
- 6 kinds (MEMKIND_DEFAULT, MEMKIND_HBW, MEMKIND_INTERLEAVE, MEMKIND_HBW_INTERLEAVE, MEMKIND_HBW_PREFERRED, PMEM kind)
- 3 calls (malloc, calloc, realloc)
- 5 allocation sizes (100bytes, 4096bytes, 1000bytes, 1001bytes, 1.5MB - 1572864bytes)
- single thread and multithreaded (10threads and 72threads)
All tests record three values:
- total_time_spend_on_alloc (total time spend on *alloc() call during the test - less is better)
- alloc_operations_per_thread (number of done allocations per thread - this value is constant)
- ref_delta_time_percent (percent delta between standard allocator and current tested kind - less is better)

memkind-slts
------------
This is scenario for all stress and longevity tests.

BENCHMARKS
===============

fragmentation_benchmark_pmem
------------
The program logging memory fragmentation of specific workload in file
with date and timestamps ("bench_single_thread_yyyymmdd-hhmm_mem_<pmem_memory_usage_policy>.log").

The program takes, as arguments:
* pmem_path - path where file-backed memory kind should be created
* pmem_size - file-backed memory kind size limit, given in megabytes
* pmem_memory_usage_policy - 0 - MEMKIND_MEM_USAGE_POLICY_DEFAULT, 1 - MEMKIND_MEM_USAGE_POLICY_CONSERVATIVE
* test_time - time how long program runs, given in seconds

For example:

    ./fragmentation_benchmark_pmem /mnt/pmem 17 0 60

This will create PMEM kind limited with 17 MB in /mnt/pmem/ with default memory usage policy
and save results in log file after 60 seconds.

MANUAL TESTING
==============
In order to run tests on local machine, test.sh should be executed.
When test.sh is run, all tests are executed as long as -d (skip MCDRAM nodes detection), -m (skip
tests that require 2MB pages) parameters are not used.