[PATCH] D116783: [memprof] Print out the summary in YAML format.

Snehasish Kumar via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jan 6 17:43:46 PST 2022


snehasish created this revision.
snehasish added reviewers: tejohnson, davidxl.
Herald added a subscriber: hiraditya.
snehasish requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Print out the profile summary in YAML format to make it easier to for
tools and tests to read in the contents of the raw profile.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D116783

Files:
  llvm/lib/ProfileData/RawMemProfReader.cpp
  llvm/test/tools/llvm-profdata/memprof-basic.test
  llvm/test/tools/llvm-profdata/memprof-multi.test
  llvm/tools/llvm-profdata/llvm-profdata.cpp


Index: llvm/tools/llvm-profdata/llvm-profdata.cpp
===================================================================
--- llvm/tools/llvm-profdata/llvm-profdata.cpp
+++ llvm/tools/llvm-profdata/llvm-profdata.cpp
@@ -2480,6 +2480,8 @@
 
   std::unique_ptr<llvm::memprof::RawMemProfReader> Reader(
       ReaderOr.get().release());
+
+  OS << "memprof_profile:\n";
   Reader->printSummaries(OS);
   return 0;
 }
Index: llvm/test/tools/llvm-profdata/memprof-multi.test
===================================================================
--- llvm/test/tools/llvm-profdata/memprof-multi.test
+++ llvm/test/tools/llvm-profdata/memprof-multi.test
@@ -36,15 +36,18 @@
 We expect 2 MIB entries, 1 each for the malloc calls in the program. Unlike the
 memprof-basic.test we do not see any allocation from glibc.
 
-CHECK: MemProf Profile 1
-CHECK:   Version: 1
-CHECK:   TotalSizeBytes: 864
-CHECK:   NumSegments: 9
-CHECK:   NumMIBInfo: 2
-CHECK:   NumStackOffsets: 2
-CHECK: MemProf Profile 2
-CHECK:   Version: 1
-CHECK:   TotalSizeBytes: 864
-CHECK:   NumSegments: 9
-CHECK:   NumMIBInfo: 2
-CHECK:   NumStackOffsets: 2
+CHECK: memprof_profile:
+CHECK-NEXT:   -
+CHECK-NEXT:   header:
+CHECK-NEXT:     version: 1
+CHECK-NEXT:     total_size_bytes: 864
+CHECK-NEXT:     num_segments: 9
+CHECK-NEXT:     num_mib_info: 2
+CHECK-NEXT:     num_stack_offsets: 2
+CHECK-NEXT:   -
+CHECK-NEXT:   header:
+CHECK-NEXT:     version: 1
+CHECK-NEXT:     total_size_bytes: 864
+CHECK-NEXT:     num_segments: 9
+CHECK-NEXT:     num_mib_info: 2
+CHECK-NEXT:     num_stack_offsets: 2
Index: llvm/test/tools/llvm-profdata/memprof-basic.test
===================================================================
--- llvm/test/tools/llvm-profdata/memprof-basic.test
+++ llvm/test/tools/llvm-profdata/memprof-basic.test
@@ -34,9 +34,11 @@
 We expect 3 MIB entries, 1 each for the malloc calls in the program and one
 additional entry from a realloc in glibc/libio/vasprintf.c.
 
-CHECK: MemProf Profile 1
-CHECK:   Version: 1
-CHECK:   TotalSizeBytes: 1016
-CHECK:   NumSegments: 9
-CHECK:   NumMIBInfo: 3
-CHECK:   NumStackOffsets: 3
+CHECK: memprof_profile:
+CHECK-NEXT:   -
+CHECK-NEXT:   header:
+CHECK-NEXT:     version: 1
+CHECK-NEXT:     total_size_bytes: 1016
+CHECK-NEXT:     num_segments: 9
+CHECK-NEXT:     num_mib_info: 3
+CHECK-NEXT:     num_stack_offsets: 3
Index: llvm/lib/ProfileData/RawMemProfReader.cpp
===================================================================
--- llvm/lib/ProfileData/RawMemProfReader.cpp
+++ llvm/lib/ProfileData/RawMemProfReader.cpp
@@ -99,16 +99,16 @@
 }
 
 void RawMemProfReader::printSummaries(raw_ostream &OS) const {
-  int Count = 0;
   const char *Next = DataBuffer->getBufferStart();
   while (Next < DataBuffer->getBufferEnd()) {
     auto Summary = computeSummary(Next);
-    OS << "MemProf Profile " << ++Count << "\n";
-    OS << "  Version: " << Summary.Version << "\n";
-    OS << "  TotalSizeBytes: " << Summary.TotalSizeBytes << "\n";
-    OS << "  NumSegments: " << Summary.NumSegments << "\n";
-    OS << "  NumMIBInfo: " << Summary.NumMIBInfo << "\n";
-    OS << "  NumStackOffsets: " << Summary.NumStackOffsets << "\n";
+    OS << "  -\n";
+    OS << "  header:\n";
+    OS << "    version: " << Summary.Version << "\n";
+    OS << "    total_size_bytes: " << Summary.TotalSizeBytes << "\n";
+    OS << "    num_segments: " << Summary.NumSegments << "\n";
+    OS << "    num_mib_info: " << Summary.NumMIBInfo << "\n";
+    OS << "    num_stack_offsets: " << Summary.NumStackOffsets << "\n";
     // TODO: Print the build ids once we can record them using the
     // sanitizer_procmaps library for linux.
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D116783.398022.patch
Type: text/x-patch
Size: 3647 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220107/53fbddc0/attachment-0001.bin>


More information about the llvm-commits mailing list