Loading...
--- libmalloc/libmalloc-283.100.6/tests/basic_malloc_free_perf.c
+++ libmalloc/libmalloc-792.60.6/tests/basic_malloc_free_perf.c
@@ -3,7 +3,7 @@
// libmalloc
//
// Simple and repeatable performance tests for malloc/free, running tests
-// on the regular, Nanov1 and Nanov2 allocators.
+// on the regular and Nanov2 allocators.
//
#include <darwintest.h>
#include <dispatch/dispatch.h>
@@ -12,6 +12,8 @@
// This value is a guess that will be refined over time.
#define PERFCHECK_THRESHOLD_PCT 10.0
+
+T_GLOBAL_META(T_META_TAG_VM_NOT_PREFERRED);
static uint32_t
ncpu(void)
@@ -69,7 +71,7 @@
}
// Test content. Each of the functions is called from six different test cases,
-// with singlethreaded true and false and MallocNanoZone set to 0, V1 and V2.
+// with singlethreaded true and false and MallocNanoZone set to 0 and V2.
// The test content is biased towards the implementation of Nanov2.
static void
@@ -174,10 +176,8 @@
// The tests that follow are grouped as follows:
// - single-thread non-Nano version
-// - single-threaded NanoV1 version
// - single-threaded NanoV2 version
// - parallel non-Nano version
-// - parallel NanoV1 version
// - parallel NanoV2 version
// Each group probably could be built with a macro, but that would be harder
// to debug when there is a problem.
@@ -186,17 +186,17 @@
#pragma mark 8-byte allocation/free
T_DECL(basic_perf_serial_8_bytes, "Malloc/Free 8 bytes single-threaded",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_8_bytes(true);
}
-T_DECL(basic_perf_serial_8_bytes_V1, "Malloc/Free 8 bytes single-threaded on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
- T_META_ENVVAR("MallocNanoZone=V1"))
+T_DECL(basic_perf_serial_8_bytes_V2, "Malloc/Free 8 bytes single-threaded on V2",
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
+ T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
+ T_META_ENVVAR("MallocNanoZone=V2"))
{
#if CONFIG_NANOZONE
basic_perf_malloc_free_8_bytes(true);
@@ -205,40 +205,16 @@
#endif // CONFIG_NANOZONE
}
-T_DECL(basic_perf_serial_8_bytes_V2, "Malloc/Free 8 bytes single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
- T_META_ENVVAR("MallocNanoZone=V2"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_8_bytes(true);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
-}
-
T_DECL(basic_perf_parallel_8_bytes, "Malloc/Free 8 bytes parallel",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_8_bytes(false);
}
-T_DECL(basic_perf_parallel_8_bytes_V1, "Malloc/Free 8 bytes parallel on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_8_bytes(false);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
-}
-
T_DECL(basic_perf_parallel_8_bytes_V2, "Malloc/Free 8 bytes single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -254,29 +230,16 @@
T_DECL(basic_perf_serial_8_bytes_multi_block_default_scan_policy,
"Malloc/Free 8 bytes single-threaded with block overflow, default scan policy",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_8_bytes_multi_block(true);
-}
-
-T_DECL(basic_perf_serial_8_bytes_multi_block_default_scan_policy_V1,
- "Malloc/Free 8 bytes single-threaded with block overflow, default scan policy on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_8_bytes_multi_block(true);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_serial_8_bytes_multi_block_default_scan_policy_V2,
"Malloc/Free 8 bytes single-threaded with block overflow, default scan policy on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -289,29 +252,16 @@
T_DECL(basic_perf_parallel_8_bytes_multi_block_default_scan_policy,
"Malloc/Free 8 bytes parallel with block overflow, default scan policy",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_8_bytes_multi_block(false);
-}
-
-T_DECL(basic_perf_parallel_8_bytes_multi_block_default_scan_policy_V1,
- "Malloc/Free 8 bytes parallel with block overflow, default scan policy on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_8_bytes_multi_block(false);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_parallel_8_bytes_multi_block_default_scan_policy_V2,
"Malloc/Free 8 bytes parallel with block overflow, default scan policy on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -328,7 +278,7 @@
// This test only makes sense on Nanov2
T_DECL(basic_perf_serial_8_bytes_multi_block_first_fit_V2,
"Malloc/Free 8 bytes single-threaded with block overflow, first-fit on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_MAGAZINE_ONLY, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT), T_META_CHECK_LEAKS(false),
T_META_ENVVAR("MallocNanoZone=V2"),
T_META_ENVVAR("MallocNanoScanPolicy=firstfit"))
@@ -342,7 +292,7 @@
T_DECL(basic_perf_parallel_8_bytes_multi_block_first_fit_V2,
"Malloc/Free 8 bytes parallel with block overflow, first-fit on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_MAGAZINE_ONLY, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"),
T_META_ENVVAR("MallocNanoScanPolicy=firstfit"))
@@ -359,29 +309,16 @@
T_DECL(basic_perf_serial_different_size_classes,
"Malloc/Free in different size classes single-threaded",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_different_size_classes(false);
-}
-
-T_DECL(basic_perf_serial_different_size_classes_V1,
- "Malloc/Free in different size classes single-threaded on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_different_size_classes(false);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_serial_different_size_classes_V2,
"Malloc/Free in different size classes single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -394,29 +331,16 @@
T_DECL(basic_perf_parallel_different_size_classes,
"Malloc/Free in different size classes parallel",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_different_size_classes(false);
-}
-
-T_DECL(basic_perf_parallel_different_size_classes_V1,
- "Malloc/Free in different size classes parallel on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_different_size_classes(false);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_parallel_different_size_classes_V2,
"Malloc/Free in different size classes single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -432,29 +356,16 @@
T_DECL(basic_perf_serial_by_size_class,
"Malloc/Free by size class single-threaded",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_by_size_class(true);
-}
-
-T_DECL(basic_perf_serial_by_size_class_V1,
- "Malloc/Free by size class single-threaded on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_by_size_class(true);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_serial_by_size_class_V2,
"Malloc/Free by size class single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -467,29 +378,16 @@
T_DECL(basic_perf_parallel_by_size_class,
"Malloc/Free by size class parallel",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_by_size_class(false);
-}
-
-T_DECL(basic_perf_parallel_by_size_class_V1,
- "Malloc/Free by size class parallel on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_by_size_class(false);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_parallel_by_size_class_V2,
"Malloc/Free by size class single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -505,29 +403,16 @@
T_DECL(basic_perf_serial_by_size_class_offset,
"Malloc/Free by size class with offset single-threaded",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_by_size_class_offset(true);
-}
-
-T_DECL(basic_perf_serial_by_size_class_offset_V1,
- "Malloc/Free by size class with offset single-threaded on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_by_size_class_offset(true);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_serial_by_size_class_offset_V2,
"Malloc/Free by size class with offset single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"))
{
@@ -540,29 +425,16 @@
T_DECL(basic_perf_parallel_by_size_class_offset,
"Malloc/Free by size class with offset parallel",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone"))
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
+ T_META_LTEPHASE(LTE_POSTINIT),
+ T_META_ENVVAR("MallocNanoZone=0"))
{
basic_perf_malloc_free_by_size_class_offset(false);
-}
-
-T_DECL(basic_perf_parallel_by_size_class_offset_V1,
- "Malloc/Free by size class with offset parallel on V1",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
- T_META_LTEPHASE(LTE_POSTINIT),
- T_META_ENVVAR("MallocNanoZone=V1"))
-{
-#if CONFIG_NANOZONE
- basic_perf_malloc_free_by_size_class_offset(false);
-#else // CONFIG_NANOZONE
- T_SKIP("Nano allocator not configured");
-#endif // CONFIG_NANOZONE
}
T_DECL(basic_perf_parallel_by_size_class_offset_V2,
"Malloc/Free by size class with offset single-threaded on V2",
- T_META_TAG_PERF, T_META_ALL_VALID_ARCHS(NO),
+ T_META_TAG_PERF, T_META_TAG_ALL_ALLOCATORS, T_META_ALL_VALID_ARCHS(NO),
T_META_LTEPHASE(LTE_POSTINIT),
T_META_ENVVAR("MallocNanoZone=V2"))
{