diff mbox series

pgo: rename the raw profile file to vmlinux.profraw

Message ID 20210531202044.426578-1-morbo@google.com (mailing list archive)
State New, archived
Headers show
Series pgo: rename the raw profile file to vmlinux.profraw | expand

Commit Message

Bill Wendling May 31, 2021, 8:20 p.m. UTC
Future PGO features may create other files in /sys/kernel/debug/pgo. So
rename the kernel's raw profile data file to "vmlinux.profraw" to make
which part of the kernel the file is for more explicit.

Note that future files in /sys/kernel/debug/pgo should follow a similar
naming convention.

Signed-off-by: Bill Wendling <morbo@google.com>
---
 Documentation/dev-tools/pgo.rst | 6 +++---
 kernel/pgo/Kconfig              | 7 ++++---
 kernel/pgo/fs.c                 | 2 +-
 3 files changed, 8 insertions(+), 7 deletions(-)

Comments

Nathan Chancellor May 31, 2021, 8:29 p.m. UTC | #1
On 5/31/2021 1:20 PM, Bill Wendling wrote:
> Future PGO features may create other files in /sys/kernel/debug/pgo. So
> rename the kernel's raw profile data file to "vmlinux.profraw" to make
> which part of the kernel the file is for more explicit.
> 
> Note that future files in /sys/kernel/debug/pgo should follow a similar
> naming convention.
> 
> Signed-off-by: Bill Wendling <morbo@google.com>

Guess this clears up my confusion around the module patches :)

Reviewed-by: Nathan Chancellor <nathan@kernel.org>

> ---
>   Documentation/dev-tools/pgo.rst | 6 +++---
>   kernel/pgo/Kconfig              | 7 ++++---
>   kernel/pgo/fs.c                 | 2 +-
>   3 files changed, 8 insertions(+), 7 deletions(-)
> 
> diff --git a/Documentation/dev-tools/pgo.rst b/Documentation/dev-tools/pgo.rst
> index b7f11d8405b7..0200449c4843 100644
> --- a/Documentation/dev-tools/pgo.rst
> +++ b/Documentation/dev-tools/pgo.rst
> @@ -76,7 +76,7 @@ The PGO kernel support creates the following files in debugfs:
>   ``/sys/kernel/debug/pgo/reset``
>   	Global reset file: resets all coverage data to zero when written to.
>   
> -``/sys/kernel/debug/profraw``
> +``/sys/kernel/debug/pgo/vmlinux.profraw``
>   	The raw PGO data that must be processed with ``llvm_profdata``.
>   
>   
> @@ -108,7 +108,7 @@ using the result to optimize the kernel:
>   
>      .. code-block:: sh
>   
> -      $ cp -a /sys/kernel/debug/pgo/profraw /tmp/vmlinux.profraw
> +      $ cp -a /sys/kernel/debug/pgo/vmlinux.profraw /tmp/vmlinux.profraw
>   
>   5) (Optional) Download the raw profile data to the HOST machine.
>   
> @@ -120,7 +120,7 @@ using the result to optimize the kernel:
>   
>      Note that multiple raw profile data files can be merged during this step.
>   
> -7) Rebuild the kernel using the profile data (PGO disabled)
> +7) Rebuild the kernel using the processed profile data (PGO disabled)
>   
>      .. code-block:: sh
>   
> diff --git a/kernel/pgo/Kconfig b/kernel/pgo/Kconfig
> index 76a640b6cf6e..d2053df1111c 100644
> --- a/kernel/pgo/Kconfig
> +++ b/kernel/pgo/Kconfig
> @@ -17,10 +17,11 @@ config PGO_CLANG
>   
>   	  Run a representative workload for your application on a kernel
>   	  compiled with this option and download the raw profile file from
> -	  /sys/kernel/debug/pgo/profraw. This file needs to be processed with
> -	  llvm-profdata. It may be merged with other collected raw profiles.
> +	  /sys/kernel/debug/pgo/vmlinux.profraw. This file needs to be
> +	  processed with llvm-profdata. It may be merged with other collected
> +	  raw profiles.
>   
> -	  Copy the resulting profile file into vmlinux.profdata, and enable
> +	  Copy the processed profile file into vmlinux.profdata, and enable
>   	  KCFLAGS=-fprofile-use=vmlinux.profdata to produce an optimized
>   	  kernel.
>   
> diff --git a/kernel/pgo/fs.c b/kernel/pgo/fs.c
> index 449f16beb2cf..ef985159dad3 100644
> --- a/kernel/pgo/fs.c
> +++ b/kernel/pgo/fs.c
> @@ -365,7 +365,7 @@ static int __init pgo_init(void)
>   	if (!directory)
>   		goto err_remove;
>   
> -	if (!debugfs_create_file("profraw", 0600, directory, NULL,
> +	if (!debugfs_create_file("vmlinux.profraw", 0600, directory, NULL,
>   				 &prf_fops))
>   		goto err_remove;
>   
>
Bill Wendling June 1, 2021, 8:24 a.m. UTC | #2
On Mon, May 31, 2021 at 1:29 PM Nathan Chancellor <nathan@kernel.org> wrote:
>
> On 5/31/2021 1:20 PM, Bill Wendling wrote:
> > Future PGO features may create other files in /sys/kernel/debug/pgo. So
> > rename the kernel's raw profile data file to "vmlinux.profraw" to make
> > which part of the kernel the file is for more explicit.
> >
> > Note that future files in /sys/kernel/debug/pgo should follow a similar
> > naming convention.
> >
> > Signed-off-by: Bill Wendling <morbo@google.com>
>
> Guess this clears up my confusion around the module patches :)
>
To clarify, Jarmo did those patches on his own. I just wanted to
clarify the naming convention. :-)

-bw

> Reviewed-by: Nathan Chancellor <nathan@kernel.org>
>
> > ---
> >   Documentation/dev-tools/pgo.rst | 6 +++---
> >   kernel/pgo/Kconfig              | 7 ++++---
> >   kernel/pgo/fs.c                 | 2 +-
> >   3 files changed, 8 insertions(+), 7 deletions(-)
> >
> > diff --git a/Documentation/dev-tools/pgo.rst b/Documentation/dev-tools/pgo.rst
> > index b7f11d8405b7..0200449c4843 100644
> > --- a/Documentation/dev-tools/pgo.rst
> > +++ b/Documentation/dev-tools/pgo.rst
> > @@ -76,7 +76,7 @@ The PGO kernel support creates the following files in debugfs:
> >   ``/sys/kernel/debug/pgo/reset``
> >       Global reset file: resets all coverage data to zero when written to.
> >
> > -``/sys/kernel/debug/profraw``
> > +``/sys/kernel/debug/pgo/vmlinux.profraw``
> >       The raw PGO data that must be processed with ``llvm_profdata``.
> >
> >
> > @@ -108,7 +108,7 @@ using the result to optimize the kernel:
> >
> >      .. code-block:: sh
> >
> > -      $ cp -a /sys/kernel/debug/pgo/profraw /tmp/vmlinux.profraw
> > +      $ cp -a /sys/kernel/debug/pgo/vmlinux.profraw /tmp/vmlinux.profraw
> >
> >   5) (Optional) Download the raw profile data to the HOST machine.
> >
> > @@ -120,7 +120,7 @@ using the result to optimize the kernel:
> >
> >      Note that multiple raw profile data files can be merged during this step.
> >
> > -7) Rebuild the kernel using the profile data (PGO disabled)
> > +7) Rebuild the kernel using the processed profile data (PGO disabled)
> >
> >      .. code-block:: sh
> >
> > diff --git a/kernel/pgo/Kconfig b/kernel/pgo/Kconfig
> > index 76a640b6cf6e..d2053df1111c 100644
> > --- a/kernel/pgo/Kconfig
> > +++ b/kernel/pgo/Kconfig
> > @@ -17,10 +17,11 @@ config PGO_CLANG
> >
> >         Run a representative workload for your application on a kernel
> >         compiled with this option and download the raw profile file from
> > -       /sys/kernel/debug/pgo/profraw. This file needs to be processed with
> > -       llvm-profdata. It may be merged with other collected raw profiles.
> > +       /sys/kernel/debug/pgo/vmlinux.profraw. This file needs to be
> > +       processed with llvm-profdata. It may be merged with other collected
> > +       raw profiles.
> >
> > -       Copy the resulting profile file into vmlinux.profdata, and enable
> > +       Copy the processed profile file into vmlinux.profdata, and enable
> >         KCFLAGS=-fprofile-use=vmlinux.profdata to produce an optimized
> >         kernel.
> >
> > diff --git a/kernel/pgo/fs.c b/kernel/pgo/fs.c
> > index 449f16beb2cf..ef985159dad3 100644
> > --- a/kernel/pgo/fs.c
> > +++ b/kernel/pgo/fs.c
> > @@ -365,7 +365,7 @@ static int __init pgo_init(void)
> >       if (!directory)
> >               goto err_remove;
> >
> > -     if (!debugfs_create_file("profraw", 0600, directory, NULL,
> > +     if (!debugfs_create_file("vmlinux.profraw", 0600, directory, NULL,
> >                                &prf_fops))
> >               goto err_remove;
> >
> >
Kees Cook June 1, 2021, 7:13 p.m. UTC | #3
On Tue, Jun 01, 2021 at 01:24:39AM -0700, 'Bill Wendling' via Clang Built Linux wrote:
> On Mon, May 31, 2021 at 1:29 PM Nathan Chancellor <nathan@kernel.org> wrote:
> >
> > On 5/31/2021 1:20 PM, Bill Wendling wrote:
> > > Future PGO features may create other files in /sys/kernel/debug/pgo. So
> > > rename the kernel's raw profile data file to "vmlinux.profraw" to make
> > > which part of the kernel the file is for more explicit.
> > >
> > > Note that future files in /sys/kernel/debug/pgo should follow a similar
> > > naming convention.
> > >
> > > Signed-off-by: Bill Wendling <morbo@google.com>
> >
> > Guess this clears up my confusion around the module patches :)
> >
> To clarify, Jarmo did those patches on his own. I just wanted to
> clarify the naming convention. :-)

Is the expectation that there would be 1 file per module in
/sys/kernel/debug/pgo/ after the modules patch?

> 
> -bw
> 
> > Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> >
> > > ---
> > >   Documentation/dev-tools/pgo.rst | 6 +++---
> > >   kernel/pgo/Kconfig              | 7 ++++---
> > >   kernel/pgo/fs.c                 | 2 +-
> > >   3 files changed, 8 insertions(+), 7 deletions(-)
> > >
> > > diff --git a/Documentation/dev-tools/pgo.rst b/Documentation/dev-tools/pgo.rst
> > > index b7f11d8405b7..0200449c4843 100644
> > > --- a/Documentation/dev-tools/pgo.rst
> > > +++ b/Documentation/dev-tools/pgo.rst
> > > @@ -76,7 +76,7 @@ The PGO kernel support creates the following files in debugfs:
> > >   ``/sys/kernel/debug/pgo/reset``
> > >       Global reset file: resets all coverage data to zero when written to.
> > >
> > > -``/sys/kernel/debug/profraw``
> > > +``/sys/kernel/debug/pgo/vmlinux.profraw``
> > >       The raw PGO data that must be processed with ``llvm_profdata``.
> > >
> > >
> > > @@ -108,7 +108,7 @@ using the result to optimize the kernel:
> > >
> > >      .. code-block:: sh
> > >
> > > -      $ cp -a /sys/kernel/debug/pgo/profraw /tmp/vmlinux.profraw
> > > +      $ cp -a /sys/kernel/debug/pgo/vmlinux.profraw /tmp/vmlinux.profraw

And if so, these instructions would change (in the future) to something
like:

     $ cp -a /sys/kernel/debug/pgo/*.profraw /tmp/prof/

?

-Kees
Kees Cook June 1, 2021, 7:17 p.m. UTC | #4
On Mon, 31 May 2021 13:20:44 -0700, Bill Wendling wrote:
> Future PGO features may create other files in /sys/kernel/debug/pgo. So
> rename the kernel's raw profile data file to "vmlinux.profraw" to make
> which part of the kernel the file is for more explicit.
> 
> Note that future files in /sys/kernel/debug/pgo should follow a similar
> naming convention.

Applied to for-next/clang/features, thanks!

[1/1] pgo: rename the raw profile file to vmlinux.profraw
      https://git.kernel.org/kees/c/001eaf3fd0e3
Jarmo Tiitto June 1, 2021, 9:40 p.m. UTC | #5
Kees Cook wrote tiistaina 1. kesäkuuta 2021 22.13.21 EEST:
> On Tue, Jun 01, 2021 at 01:24:39AM -0700, 'Bill Wendling' via Clang Built 
Linux wrote:
> > On Mon, May 31, 2021 at 1:29 PM Nathan Chancellor <nathan@kernel.org> 
wrote:
> > > On 5/31/2021 1:20 PM, Bill Wendling wrote:
> > > > Future PGO features may create other files in /sys/kernel/debug/pgo.
> > > > So
> > > > rename the kernel's raw profile data file to "vmlinux.profraw" to make
> > > > which part of the kernel the file is for more explicit.
> > > > 
> > > > Note that future files in /sys/kernel/debug/pgo should follow a
> > > > similar
> > > > naming convention.
> > > > 
> > > > Signed-off-by: Bill Wendling <morbo@google.com>
> > > 
> > > Guess this clears up my confusion around the module patches :)
> > 
> > To clarify, Jarmo did those patches on his own. I just wanted to
> > clarify the naming convention. :-)
> 
> Is the expectation that there would be 1 file per module in
> /sys/kernel/debug/pgo/ after the modules patch?
> 
> > -bw
> > 
> > > Reviewed-by: Nathan Chancellor <nathan@kernel.org>
> > > 
> > > > ---
> > > > 
> > > >   Documentation/dev-tools/pgo.rst | 6 +++---
> > > >   kernel/pgo/Kconfig              | 7 ++++---
> > > >   kernel/pgo/fs.c                 | 2 +-
> > > >   3 files changed, 8 insertions(+), 7 deletions(-)
> > > > 
> > > > diff --git a/Documentation/dev-tools/pgo.rst
> > > > b/Documentation/dev-tools/pgo.rst index b7f11d8405b7..0200449c4843
> > > > 100644
> > > > --- a/Documentation/dev-tools/pgo.rst
> > > > +++ b/Documentation/dev-tools/pgo.rst
> > > > 
> > > > @@ -76,7 +76,7 @@ The PGO kernel support creates the following files in 
debugfs:
> > > >   ``/sys/kernel/debug/pgo/reset``
> > > >   
> > > >       Global reset file: resets all coverage data to zero when written
> > > >       to.
> > > > 
> > > > -``/sys/kernel/debug/profraw``
> > > > +``/sys/kernel/debug/pgo/vmlinux.profraw``
> > > > 
> > > >       The raw PGO data that must be processed with ``llvm_profdata``.
> > > > 
> > > > @@ -108,7 +108,7 @@ using the result to optimize the kernel:
> > > >      .. code-block:: sh
> > > > 
> > > > -      $ cp -a /sys/kernel/debug/pgo/profraw /tmp/vmlinux.profraw
> > > > +      $ cp -a /sys/kernel/debug/pgo/vmlinux.profraw
> > > > /tmp/vmlinux.profraw
> 
> And if so, these instructions would change (in the future) to something
> like:
> 
>      $ cp -a /sys/kernel/debug/pgo/*.profraw /tmp/prof/
> 
> ?
> 
> -Kees

Hi,

To be clear the mucked up patches I sent are more like of RFC to get in 
contact with the development.
Back to the code:

Yes, my future intention is that there will be one *.profraw file per module.
And curiously I would also have renamed the current profile data file to 
"vmlinux.profraw" to disambiguate it from what part of kernel generated it.

I already wrote an small fix up that I think should be part of the upstream 
code so that profiling the vmlinux works better.
It filters out any module originated content from vmlinux.profraw.

Above will be probably a good exercise for me.

Next, my future v2 module profiling machinery
would probably follow on top of your work.

-Jarmo
Kees Cook June 1, 2021, 10:55 p.m. UTC | #6
On Wed, Jun 02, 2021 at 12:40:25AM +0300, jarmo.tiitto@gmail.com wrote:
> Yes, my future intention is that there will be one *.profraw file per module.
> And curiously I would also have renamed the current profile data file to 
> "vmlinux.profraw" to disambiguate it from what part of kernel generated it.
> 
> I already wrote an small fix up that I think should be part of the upstream 
> code so that profiling the vmlinux works better.
> It filters out any module originated content from vmlinux.profraw.
> 
> Above will be probably a good exercise for me.
> 
> Next, my future v2 module profiling machinery
> would probably follow on top of your work.

Okay, great; thanks for digging into it! :)
diff mbox series

Patch

diff --git a/Documentation/dev-tools/pgo.rst b/Documentation/dev-tools/pgo.rst
index b7f11d8405b7..0200449c4843 100644
--- a/Documentation/dev-tools/pgo.rst
+++ b/Documentation/dev-tools/pgo.rst
@@ -76,7 +76,7 @@  The PGO kernel support creates the following files in debugfs:
 ``/sys/kernel/debug/pgo/reset``
 	Global reset file: resets all coverage data to zero when written to.
 
-``/sys/kernel/debug/profraw``
+``/sys/kernel/debug/pgo/vmlinux.profraw``
 	The raw PGO data that must be processed with ``llvm_profdata``.
 
 
@@ -108,7 +108,7 @@  using the result to optimize the kernel:
 
    .. code-block:: sh
 
-      $ cp -a /sys/kernel/debug/pgo/profraw /tmp/vmlinux.profraw
+      $ cp -a /sys/kernel/debug/pgo/vmlinux.profraw /tmp/vmlinux.profraw
 
 5) (Optional) Download the raw profile data to the HOST machine.
 
@@ -120,7 +120,7 @@  using the result to optimize the kernel:
 
    Note that multiple raw profile data files can be merged during this step.
 
-7) Rebuild the kernel using the profile data (PGO disabled)
+7) Rebuild the kernel using the processed profile data (PGO disabled)
 
    .. code-block:: sh
 
diff --git a/kernel/pgo/Kconfig b/kernel/pgo/Kconfig
index 76a640b6cf6e..d2053df1111c 100644
--- a/kernel/pgo/Kconfig
+++ b/kernel/pgo/Kconfig
@@ -17,10 +17,11 @@  config PGO_CLANG
 
 	  Run a representative workload for your application on a kernel
 	  compiled with this option and download the raw profile file from
-	  /sys/kernel/debug/pgo/profraw. This file needs to be processed with
-	  llvm-profdata. It may be merged with other collected raw profiles.
+	  /sys/kernel/debug/pgo/vmlinux.profraw. This file needs to be
+	  processed with llvm-profdata. It may be merged with other collected
+	  raw profiles.
 
-	  Copy the resulting profile file into vmlinux.profdata, and enable
+	  Copy the processed profile file into vmlinux.profdata, and enable
 	  KCFLAGS=-fprofile-use=vmlinux.profdata to produce an optimized
 	  kernel.
 
diff --git a/kernel/pgo/fs.c b/kernel/pgo/fs.c
index 449f16beb2cf..ef985159dad3 100644
--- a/kernel/pgo/fs.c
+++ b/kernel/pgo/fs.c
@@ -365,7 +365,7 @@  static int __init pgo_init(void)
 	if (!directory)
 		goto err_remove;
 
-	if (!debugfs_create_file("profraw", 0600, directory, NULL,
+	if (!debugfs_create_file("vmlinux.profraw", 0600, directory, NULL,
 				 &prf_fops))
 		goto err_remove;