Skip to content

Commit 057e784

Browse files
committed
[llvm-profgen] Clean up unnecessary memory reservations between phases.
Cleaning up data structures that are not used after a certain point. This further brings down peak memory usage by 15% for a large benchmark. Before: note: Before parsePerfTraces note: VM: 40.73 GB RSS: 39.18 GB note: Before parseAndAggregateTrace note: VM: 40.73 GB RSS: 39.18 GB note: After parseAndAggregateTrace note: VM: 88.93 GB RSS: 87.97 GB note: Before generateUnsymbolizedProfile note: VM: 88.95 GB RSS: 87.99 GB note: After generateUnsymbolizedProfile note: VM: 93.50 GB RSS: 92.53 GB note: After computeSizeForProfiledFunctions note: VM: 101.13 GB RSS: 99.36 GB note: After generateProbeBasedProfile note: VM: 215.61 GB RSS: 210.88 GB note: After postProcessProfiles note: VM: 237.48 GB RSS: 212.50 GB After: note: Before parsePerfTraces note: VM: 40.73 GB RSS: 39.18 GB note: Before parseAndAggregateTrace note: VM: 40.73 GB RSS: 39.18 GB note: After parseAndAggregateTrace note: VM: 88.93 GB RSS: 87.96 GB note: Before generateUnsymbolizedProfile note: VM: 88.95 GB RSS: 87.97 GB note: After generateUnsymbolizedProfile note: VM: 93.50 GB RSS: 92.51 GB note: After computeSizeForProfiledFunctions note: VM: 93.50 GB RSS: 92.53 GB note: After generateProbeBasedProfile note: VM: 164.87 GB RSS: 163.55 GB note: After postProcessProfiles note: VM: 182.28 GB RSS: 179.43 GB Reviewed By: wenlei, wlei Differential Revision: https://reviews.llvm.org/D118677
1 parent 267400c commit 057e784

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

llvm/tools/llvm-profgen/PerfReader.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1212,6 +1212,7 @@ void PerfScriptReader::parsePerfTraces() {
12121212
warnTruncatedStack();
12131213
warnInvalidRange();
12141214
generateUnsymbolizedProfile();
1215+
AggregatedSamples.clear();
12151216

12161217
if (SkipSymbolization)
12171218
writeUnsymbolizedProfile(OutputFilename);

llvm/tools/llvm-profgen/llvm-profgen.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,9 @@ int main(int argc, const char *argv[]) {
158158
ProfileGeneratorBase::create(Binary.get(), Reader->getSampleCounters(),
159159
Reader->profileIsCSFlat());
160160
Generator->generateProfile();
161+
// The Reader object, espcially its SampleCounters field, is not needed at
162+
// this point, so releasing it to reduce peak memory usage.
163+
Reader.release();
161164
Generator->write();
162165

163166
return EXIT_SUCCESS;

0 commit comments

Comments
 (0)