-
Notifications
You must be signed in to change notification settings - Fork 15.4k
[MemProf] Add option to print function GUIDs during matching #170946
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
@llvm/pr-subscribers-pgo Author: Teresa Johnson (teresajohnson) ChangesFor debugging, add -memprof-function-guids option that will cause Full diff: https://github.com/llvm/llvm-project/pull/170946.diff 2 Files Affected:
diff --git a/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp b/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp
index b72d41a748857..5592f190a7e55 100644
--- a/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp
@@ -62,6 +62,11 @@ static cl::opt<bool>
"context in this module's profiles"),
cl::Hidden, cl::init(false));
+static cl::opt<bool>
+ PrintFunctionGuids("memprof-function-guids",
+ cl::desc("Print function GUIDs computed for matching"),
+ cl::Hidden, cl::init(false));
+
static cl::opt<bool>
SalvageStaleProfile("memprof-salvage-stale-profile",
cl::desc("Salvage stale MemProf profile"),
@@ -562,6 +567,9 @@ static void readMemprof(Module &M, Function &F,
// linkage function.
auto FuncName = F.getName();
auto FuncGUID = Function::getGUIDAssumingExternalLinkage(FuncName);
+ if (PrintFunctionGuids)
+ errs() << "MemProf: Function GUID " << FuncGUID << " is " << FuncName
+ << "\n";
std::optional<memprof::MemProfRecord> MemProfRec;
auto Err = MemProfReader->getMemProfRecord(FuncGUID).moveInto(MemProfRec);
if (Err) {
diff --git a/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll b/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll
index 2dcaa9d492869..b6afcf6de922e 100644
--- a/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll
+++ b/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll
@@ -26,7 +26,7 @@
; REQUIRES: x86_64-linux
; RUN: split-file %s %t
; RUN: llvm-profdata merge %t/memprof-dump-matched-alloc-site.yaml -o %t/memprof-dump-matched-alloc-site.memprofdata
-; RUN: opt < %t/memprof-dump-matched-alloc-site.ll -passes='memprof-use<profile-filename=%t/memprof-dump-matched-alloc-site.memprofdata>' -memprof-print-match-info -S 2>&1 | FileCheck %s
+; RUN: opt < %t/memprof-dump-matched-alloc-site.ll -passes='memprof-use<profile-filename=%t/memprof-dump-matched-alloc-site.memprofdata>' -memprof-print-match-info -memprof-function-guids -S 2>&1 | FileCheck %s
;--- memprof-dump-matched-alloc-site.yaml
---
@@ -77,6 +77,13 @@ HeapProfileRecords:
# Kept empty here because this section is irrelevant for this test.
...
;--- memprof-dump-matched-alloc-site.ll
+
+;; From -memprof-function-guids
+; CHECK: MemProf: Function GUID 4708092051066754107 is _Z2f1v
+; CHECK: MemProf: Function GUID 14255129117669598641 is _Z2f2v
+; CHECK: MemProf: Function GUID 2771528421763978342 is _Z2f3v
+
+;; From -memprof-print-match-info
; CHECK: MemProf notcold context with id 5736731103568718490 has total profiled size 3 is matched with 1 frames
; CHECK: MemProf notcold context with id 5736731103568718490 has total profiled size 3 is matched with 2 frames
; CHECK: MemProf notcold context with id 5736731103568718490 has total profiled size 3 is matched with 3 frames
|
|
@llvm/pr-subscribers-llvm-transforms Author: Teresa Johnson (teresajohnson) ChangesFor debugging, add -memprof-function-guids option that will cause Full diff: https://github.com/llvm/llvm-project/pull/170946.diff 2 Files Affected:
diff --git a/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp b/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp
index b72d41a748857..5592f190a7e55 100644
--- a/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp
+++ b/llvm/lib/Transforms/Instrumentation/MemProfUse.cpp
@@ -62,6 +62,11 @@ static cl::opt<bool>
"context in this module's profiles"),
cl::Hidden, cl::init(false));
+static cl::opt<bool>
+ PrintFunctionGuids("memprof-function-guids",
+ cl::desc("Print function GUIDs computed for matching"),
+ cl::Hidden, cl::init(false));
+
static cl::opt<bool>
SalvageStaleProfile("memprof-salvage-stale-profile",
cl::desc("Salvage stale MemProf profile"),
@@ -562,6 +567,9 @@ static void readMemprof(Module &M, Function &F,
// linkage function.
auto FuncName = F.getName();
auto FuncGUID = Function::getGUIDAssumingExternalLinkage(FuncName);
+ if (PrintFunctionGuids)
+ errs() << "MemProf: Function GUID " << FuncGUID << " is " << FuncName
+ << "\n";
std::optional<memprof::MemProfRecord> MemProfRec;
auto Err = MemProfReader->getMemProfRecord(FuncGUID).moveInto(MemProfRec);
if (Err) {
diff --git a/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll b/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll
index 2dcaa9d492869..b6afcf6de922e 100644
--- a/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll
+++ b/llvm/test/Transforms/PGOProfile/memprof-dump-matched-alloc-site.ll
@@ -26,7 +26,7 @@
; REQUIRES: x86_64-linux
; RUN: split-file %s %t
; RUN: llvm-profdata merge %t/memprof-dump-matched-alloc-site.yaml -o %t/memprof-dump-matched-alloc-site.memprofdata
-; RUN: opt < %t/memprof-dump-matched-alloc-site.ll -passes='memprof-use<profile-filename=%t/memprof-dump-matched-alloc-site.memprofdata>' -memprof-print-match-info -S 2>&1 | FileCheck %s
+; RUN: opt < %t/memprof-dump-matched-alloc-site.ll -passes='memprof-use<profile-filename=%t/memprof-dump-matched-alloc-site.memprofdata>' -memprof-print-match-info -memprof-function-guids -S 2>&1 | FileCheck %s
;--- memprof-dump-matched-alloc-site.yaml
---
@@ -77,6 +77,13 @@ HeapProfileRecords:
# Kept empty here because this section is irrelevant for this test.
...
;--- memprof-dump-matched-alloc-site.ll
+
+;; From -memprof-function-guids
+; CHECK: MemProf: Function GUID 4708092051066754107 is _Z2f1v
+; CHECK: MemProf: Function GUID 14255129117669598641 is _Z2f2v
+; CHECK: MemProf: Function GUID 2771528421763978342 is _Z2f3v
+
+;; From -memprof-print-match-info
; CHECK: MemProf notcold context with id 5736731103568718490 has total profiled size 3 is matched with 1 frames
; CHECK: MemProf notcold context with id 5736731103568718490 has total profiled size 3 is matched with 2 frames
; CHECK: MemProf notcold context with id 5736731103568718490 has total profiled size 3 is matched with 3 frames
|
| @@ -62,6 +62,11 @@ static cl::opt<bool> | |||
| "context in this module's profiles"), | |||
| cl::Hidden, cl::init(false)); | |||
|
|
|||
| static cl::opt<bool> | |||
| PrintFunctionGuids("memprof-function-guids", | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is the useful only by itself or typically when memprof-print-match-info is enabled? I'm wondering if we can just condition on the print match info instead of adding a new flag.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wanted to be able to control them separately, just to control the volume of data that is emitted. -memprof-print-match-info alone already can emit a huge number of messages.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, lets change the flag name to memprof-print-function-guids.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
snehasish
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
| @@ -62,6 +62,11 @@ static cl::opt<bool> | |||
| "context in this module's profiles"), | |||
| cl::Hidden, cl::init(false)); | |||
|
|
|||
| static cl::opt<bool> | |||
| PrintFunctionGuids("memprof-function-guids", | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, lets change the flag name to memprof-print-function-guids.
| @@ -77,6 +77,13 @@ HeapProfileRecords: | |||
| # Kept empty here because this section is irrelevant for this test. | |||
| ... | |||
| ;--- memprof-dump-matched-alloc-site.ll | |||
|
|
|||
| ;; From -memprof-function-guids | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't forget to update the comment if you make the option name change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done
For debugging, add -memprof-print-function-guids option that will cause memprof matching to emit the computed function GUID for every function definition in the module to stderr. This is helpful because the profile only contains the function GUID and not the names.
76a5ff1 to
bb129b5
Compare
…0946) For debugging, add -memprof-print-function-guids option that will cause memprof matching to emit the computed function GUID for every function definition in the module to stderr. This is helpful because the profile only contains the function GUID and not the names.
For debugging, add -memprof-print-function-guids option that will cause
memprof matching to emit the computed function GUID for every function
definition in the module to stderr. This is helpful because the profile
only contains the function GUID and not the names.