diff options
author | Matthew Weingarten <matt@weingarten.org> | 2024-06-26 08:37:22 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-26 08:37:22 -0700 |
commit | 30b93db5476e3ae2efdaba25fb53fcc3c081da77 (patch) | |
tree | 470b3fdc2acefeb16d837ac0f9e18fa191621b82 /llvm/unittests/ProfileData/MemProfTest.cpp | |
parent | 3e1ebd77e4e9a772e4f06f12d19c64860fb1f070 (diff) | |
download | llvm-30b93db5476e3ae2efdaba25fb53fcc3c081da77.zip llvm-30b93db5476e3ae2efdaba25fb53fcc3c081da77.tar.gz llvm-30b93db5476e3ae2efdaba25fb53fcc3c081da77.tar.bz2 |
[Memprof] Adds the option to collect AccessCountHistograms for memprof. (#94264)
Adds compile time flag -mllvm -memprof-histogram and runtime flag
histogram=true|false to turn Histogram collection on and off. The
-memprof-histogram flag relies on -memprof-use-callbacks=true to work.
Updates shadow mapping logic in histogram mode from having one 8 byte
counter for 64 bytes, to 1 byte for 8 bytes, capped at 255. Only
supports this granularity as of now.
Updates the RawMemprofReader and serializing MemoryInfoBlocks to binary
format, including changing to a new version of the raw binary format
from version 3 to version 4.
Updates creating MemoryInfoBlocks with and without Histograms. When two
MemoryInfoBlocks are merged, AccessCounts are summed up and the shorter
Histogram is removed.
Adds a memprof_histogram test case.
Initial commit for adding AccessCountHistograms up until RawProfile for
memprof
Diffstat (limited to 'llvm/unittests/ProfileData/MemProfTest.cpp')
-rw-r--r-- | llvm/unittests/ProfileData/MemProfTest.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/llvm/unittests/ProfileData/MemProfTest.cpp b/llvm/unittests/ProfileData/MemProfTest.cpp index 15eb59e..14623e18 100644 --- a/llvm/unittests/ProfileData/MemProfTest.cpp +++ b/llvm/unittests/ProfileData/MemProfTest.cpp @@ -247,7 +247,7 @@ TEST(MemProf, FillsValue) { TEST(MemProf, PortableWrapper) { MemInfoBlock Info(/*size=*/16, /*access_count=*/7, /*alloc_timestamp=*/1000, /*dealloc_timestamp=*/2000, /*alloc_cpu=*/3, - /*dealloc_cpu=*/4); + /*dealloc_cpu=*/4, /*Histogram=*/0, /*HistogramSize=*/0); const auto Schema = llvm::memprof::getFullSchema(); PortableMemInfoBlock WriteBlock(Info, Schema); @@ -276,7 +276,7 @@ TEST(MemProf, RecordSerializationRoundTripVersion0And1) { MemInfoBlock Info(/*size=*/16, /*access_count=*/7, /*alloc_timestamp=*/1000, /*dealloc_timestamp=*/2000, /*alloc_cpu=*/3, - /*dealloc_cpu=*/4); + /*dealloc_cpu=*/4, /*Histogram=*/0, /*HistogramSize=*/0); llvm::SmallVector<llvm::SmallVector<FrameId>> AllocCallStacks = { {0x123, 0x345}, {0x123, 0x567}}; @@ -310,7 +310,7 @@ TEST(MemProf, RecordSerializationRoundTripVerion2) { MemInfoBlock Info(/*size=*/16, /*access_count=*/7, /*alloc_timestamp=*/1000, /*dealloc_timestamp=*/2000, /*alloc_cpu=*/3, - /*dealloc_cpu=*/4); + /*dealloc_cpu=*/4, /*Histogram=*/0, /*HistogramSize=*/0); llvm::SmallVector<llvm::memprof::CallStackId> CallStackIds = {0x123, 0x456}; |