diff options
author | Kazu Hirata <kazu@google.com> | 2024-04-24 16:25:35 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-24 16:25:35 -0700 |
commit | 4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970 (patch) | |
tree | 3384d9cefc7483edb02684c76014451f3d37c76c /llvm/tools/llvm-profdata/llvm-profdata.cpp | |
parent | a10d67f9fb559d0c35a12b2d26974636bbf642c0 (diff) | |
download | llvm-4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970.zip llvm-4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970.tar.gz llvm-4c8ec8f8bc3fb4dda4fd36c3b2ad745bd3451970.tar.bz2 |
[memprof] Reduce schema for Version2 (#89876)
Curently, the compiler only uses several fields of MemoryInfoBlock.
Serializing all fields into the indexed MemProf file simply wastes
storage.
This patch limits the schema down to four fields for Version2 by
default. It retains the old behavior of serializing all fields via:
llvm-profdata merge --memprof-version=2 --memprof-full-schema
This patch reduces the size of the indexed MemProf profile I have by
40% (1.6GB down to 1.0GB).
Diffstat (limited to 'llvm/tools/llvm-profdata/llvm-profdata.cpp')
-rw-r--r-- | llvm/tools/llvm-profdata/llvm-profdata.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/tools/llvm-profdata/llvm-profdata.cpp b/llvm/tools/llvm-profdata/llvm-profdata.cpp index 78daf9f..ec046eb 100644 --- a/llvm/tools/llvm-profdata/llvm-profdata.cpp +++ b/llvm/tools/llvm-profdata/llvm-profdata.cpp @@ -308,6 +308,10 @@ cl::opt<memprof::IndexedVersion> MemProfVersionRequested( clEnumValN(memprof::Version1, "1", "version 1"), clEnumValN(memprof::Version2, "2", "version 2"))); +cl::opt<bool> MemProfFullSchema( + "memprof-full-schema", cl::Hidden, cl::sub(MergeSubcommand), + cl::desc("Use the full schema for serialization"), cl::init(false)); + // Options specific to overlap subcommand. cl::opt<std::string> BaseFilename(cl::Positional, cl::Required, cl::desc("<base profile file>"), @@ -600,7 +604,7 @@ struct WriterContext { SmallSet<instrprof_error, 4> &WriterErrorCodes, uint64_t ReservoirSize = 0, uint64_t MaxTraceLength = 0) : Writer(IsSparse, ReservoirSize, MaxTraceLength, DoWritePrevVersion, - MemProfVersionRequested), + MemProfVersionRequested, MemProfFullSchema), ErrLock(ErrLock), WriterErrorCodes(WriterErrorCodes) {} }; |