Add a mallctl speed stress test.

This commit is contained in:
David Goldblatt
2020-08-05 16:57:09 -07:00
committed by David Goldblatt
parent 38867c5c17
commit 32d4673221
2 changed files with 75 additions and 0 deletions

74
test/stress/mallctl.c Normal file
View File

@@ -0,0 +1,74 @@
#include "test/jemalloc_test.h"
#include "test/bench.h"
static void
mallctl_short(void) {
const char *version;
size_t sz = sizeof(version);
int err = mallctl("version", &version, &sz, NULL, 0);
assert_d_eq(err, 0, "mallctl failure");
}
size_t mib_short[1];
static void
mallctlbymib_short(void) {
size_t miblen = sizeof(mib_short)/sizeof(mib_short[0]);
const char *version;
size_t sz = sizeof(version);
int err = mallctlbymib(mib_short, miblen, &version, &sz, NULL, 0);
assert_d_eq(err, 0, "mallctlbymib failure");
}
TEST_BEGIN(test_mallctl_vs_mallctlbymib_short) {
size_t miblen = sizeof(mib_short)/sizeof(mib_short[0]);
int err = mallctlnametomib("version", mib_short, &miblen);
assert_d_eq(err, 0, "mallctlnametomib failure");
compare_funcs(10*1000*1000, 10*1000*1000, "mallctl_short",
mallctl_short, "mallctlbymib_short", mallctlbymib_short);
}
TEST_END
static void
mallctl_long(void) {
uint64_t nmalloc;
size_t sz = sizeof(nmalloc);
int err = mallctl("stats.arenas.0.bins.0.nmalloc", &nmalloc, &sz, NULL,
0);
assert_d_eq(err, 0, "mallctl failure");
}
size_t mib_long[6];
static void
mallctlbymib_long(void) {
size_t miblen = sizeof(mib_long)/sizeof(mib_long[0]);
const char *version;
size_t sz = sizeof(version);
int err = mallctlbymib(mib_long, miblen, &version, &sz, NULL, 0);
assert_d_eq(err, 0, "mallctlbymib failure");
}
TEST_BEGIN(test_mallctl_vs_mallctlbymib_long) {
/*
* We want to use the longest mallctl we have; that needs stats support
* to be allowed.
*/
test_skip_if(!config_stats);
size_t miblen = sizeof(mib_long)/sizeof(mib_long[0]);
int err = mallctlnametomib("stats.arenas.0.bins.0.nmalloc", mib_long,
&miblen);
assert_d_eq(err, 0, "mallctlnametomib failure");
compare_funcs(10*1000*1000, 10*1000*1000, "mallctl_long",
mallctl_long, "mallctlbymib_long", mallctlbymib_long);
}
TEST_END
int
main(void) {
return test_no_reentrancy(
test_mallctl_vs_mallctlbymib_short,
test_mallctl_vs_mallctlbymib_long);
}