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.
