All of lore.kernel.org
 help / color / mirror / Atom feed
From: DanglingPointer <danglingpointerexception@gmail.com>
To: linux-btrfs@vger.kernel.org
Cc: danglingpointerexception@gmail.com
Subject: Enhancement Idea - Optional PGO+LTO build for btrfs-progs
Date: Wed, 14 Jul 2021 12:51:07 +1000	[thread overview]
Message-ID: <d0f8f74f-edd3-6591-c6e5-138daf6b25f5@gmail.com> (raw)

Recently we have been impacted by some performance issues with the 
workstations in my lab with large multi-terabyte arrays in btrfs.  I 
have detailed this on a separate thread.  It got me thinking however, 
why not have an optional configure option for btrfs-progs to use PGO 
against the entire suite of regression tests?

Idea is:

 1. configure with optional "-pgo" or "-fdo" option which will configure
    a relative path from source root where instrumentation files will go
    (let's start with gcc only for now, so *.gcda files into a folder). 
    We then add the instrumentation compiler option
 2. build btrfs-progs
 3. run every single tests available ( make test &&  make test-fsck &&
    make test-convert)
 4. clean-up except for instrumentation files
 5. re-build without the instrumentation flag from point 1; and use the
    instrumentation files for feedback directed optimisation (FDO) (for
    gcc add additional partial-training flag); add LTO.

I know btrfs is primarily IO bound and not cpu.  But just thinking of 
squeezing every last efficiency out of whatever is running in the cpu, 
cache and memory.

I suppose people can do the above on their own, but was thinking if it 
was provided as a configuration optional option then it would make it 
easier for people to do without more hacking.  Just need to add warnings 
that it will take a long time, have a coffee.

The python3 configure process has the process above as an optional 
option but caters for gcc and clang (might even cater for icc).

Anyways, that's my idea for an enhancement above.

Would like to know your thoughts.  cheers...


             reply	other threads:[~2021-07-14  2:51 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-14  2:51 DanglingPointer [this message]
2021-07-14  5:00 ` Enhancement Idea - Optional PGO+LTO build for btrfs-progs Qu Wenruo
2021-07-14  7:34   ` DanglingPointer
2021-07-14  7:57     ` Qu Wenruo
2021-07-14  9:19       ` DanglingPointer
2021-07-14 12:35         ` Neal Gompa
2021-07-14 13:01           ` Qu Wenruo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d0f8f74f-edd3-6591-c6e5-138daf6b25f5@gmail.com \
    --to=danglingpointerexception@gmail.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.