[PATCH] D155290: [PGO] Use Unique Profile Files when New Processes are Forked
Qiongsi Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Aug 14 09:49:29 PDT 2023
qiongsiwu1 added a comment.
In D155290#4582825 <https://reviews.llvm.org/D155290#4582825>, @MaskRay wrote:
> Using `%p` should not magically change the behavior and I am unsure the result is better for PGO.
> If we decide to provide such a mode, it needs to be opt-in by adding a new format specifier or API.
> Can you elaborate separate profile files are going to be useful?
Thanks again for taking a look at this patch!
Sure! We are generating separate profiles through `%p` for two reasons. First, we think that `%p` implies a profile per process, even if `exec` is not called after `fork`. It is unexpected that with `%p`, a program that forks child processes only create one profile file from the parent. This is why we did not create a new API or create a new pattern. Second, we are trying to catch non-gracefully terminated processes during profile generate. We observed a scenario where a hot function having all 0 counters. The reasons was the child process was created by a fork (but no `exec` followed), and then was terminated probably by a signal, instead of going through `exit()`. Such a process did not have a chance to write back the profile for merging. The parent process took a different call path and never called the hot function. We would like to detect such a situation for a particular process. Hence this patch creates an empty profile file if a process is not terminated gracefully. Using `%p` was probably the most natural choice when debugging such issues.
One can argue that we may look into the continuous mode to manage abnormal terminations during profile generate. I have not looked too closely at that, but we think it is still useful for a user to tell that some processes did not write any profile back, for debugging, or for diagnostics.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D155290/new/
https://reviews.llvm.org/D155290
More information about the cfe-commits
mailing list