Add peak_t, for tracking allocator net max.

This commit is contained in:
David Goldblatt
2020-05-27 14:30:28 -07:00
committed by David Goldblatt
parent 17a64fe91c
commit fe7108305a
3 changed files with 85 additions and 0 deletions

47
test/unit/peak.c Normal file
View File

@@ -0,0 +1,47 @@
#include "test/jemalloc_test.h"
#include "jemalloc/internal/peak.h"
TEST_BEGIN(test_peak) {
peak_t peak = PEAK_INITIALIZER;
expect_u64_eq(0, peak_max(&peak),
"Peak should be zero at initialization");
peak_update(&peak, 100, 50);
expect_u64_eq(50, peak_max(&peak),
"Missed update");
peak_update(&peak, 100, 100);
expect_u64_eq(50, peak_max(&peak), "Dallocs shouldn't change peak");
peak_update(&peak, 100, 200);
expect_u64_eq(50, peak_max(&peak), "Dallocs shouldn't change peak");
peak_update(&peak, 200, 200);
expect_u64_eq(50, peak_max(&peak), "Haven't reached peak again");
peak_update(&peak, 300, 200);
expect_u64_eq(100, peak_max(&peak), "Missed an update.");
peak_set_zero(&peak, 300, 200);
expect_u64_eq(0, peak_max(&peak), "No effect from zeroing");
peak_update(&peak, 300, 300);
expect_u64_eq(0, peak_max(&peak), "Dalloc shouldn't change peak");
peak_update(&peak, 400, 300);
expect_u64_eq(0, peak_max(&peak), "Should still be net negative");
peak_update(&peak, 500, 300);
expect_u64_eq(100, peak_max(&peak), "Missed an update.");
/*
* Above, we set to zero while a net allocator; let's try as a
* net-deallocator.
*/
peak_set_zero(&peak, 600, 700);
expect_u64_eq(0, peak_max(&peak), "No effect from zeroing.");
peak_update(&peak, 600, 800);
expect_u64_eq(0, peak_max(&peak), "Dalloc shouldn't change peak.");
peak_update(&peak, 700, 800);
expect_u64_eq(0, peak_max(&peak), "Should still be net negative.");
peak_update(&peak, 800, 800);
expect_u64_eq(100, peak_max(&peak), "Missed an update.");
}
TEST_END
int
main(void) {
return test_no_reentrancy(
test_peak);
}