From: Mateusz Guzik <mjguzik@gmail.com>
To: kernel test robot <oliver.sang@intel.com>
Cc: Christian Brauner <brauner@kernel.org>,
oe-lkp@lists.linux.dev, lkp@intel.com,
linux-kernel@vger.kernel.org, Jann Horn <jannh@google.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
linux-doc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
intel-gfx@lists.freedesktop.org, linux-fsdevel@vger.kernel.org,
gfs2@lists.linux.dev, bpf@vger.kernel.org, ying.huang@intel.com,
feng.tang@intel.com, fengwei.yin@intel.com
Subject: Re: [linus:master] [file] 0ede61d858: will-it-scale.per_thread_ops -2.9% regression
Date: Mon, 20 Nov 2023 08:41:06 +0100 [thread overview]
Message-ID: <ZVsNklEgxi5GkIZ/@f> (raw)
In-Reply-To: <202311201406.2022ca3f-oliver.sang@intel.com>
On Mon, Nov 20, 2023 at 03:11:31PM +0800, kernel test robot wrote:
>
>
> Hello,
>
> kernel test robot noticed a -2.9% regression of will-it-scale.per_thread_ops on:
>
>
> commit: 0ede61d8589cc2d93aa78230d74ac58b5b8d0244 ("file: convert to SLAB_TYPESAFE_BY_RCU")
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
>
> 93faf426e3cc000c 0ede61d8589cc2d93aa78230d74
> ---------------- ---------------------------
> %stddev %change %stddev
> \ | \
[snip]
> 30.90 ± 4% -20.6 10.35 ± 2% perf-profile.self.cycles-pp.__fget_light
> 0.00 +26.5 26.48 perf-profile.self.cycles-pp.__get_file_rcu
[snip]
So __fget_light now got a func call.
I don't know if this is worth patching (and benchmarking after), but I
if sorting this out is of interest, triviality below is probably the
easiest way out:
diff --git a/fs/file.c b/fs/file.c
index 5fb0b146e79e..d8d3e18800c4 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -856,14 +856,14 @@ void do_close_on_exec(struct files_struct *files)
spin_unlock(&files->file_lock);
}
-static struct file *__get_file_rcu(struct file __rcu **f)
+static __always_inline struct file *__get_file_rcu(struct file __rcu **f)
{
struct file __rcu *file;
struct file __rcu *file_reloaded;
struct file __rcu *file_reloaded_cmp;
file = rcu_dereference_raw(*f);
- if (!file)
+ if (unlikely(!file))
return NULL;
if (unlikely(!atomic_long_inc_not_zero(&file->f_count)))
@@ -891,7 +891,7 @@ static struct file *__get_file_rcu(struct file __rcu **f)
* If the pointers don't match the file has been reallocated by
* SLAB_TYPESAFE_BY_RCU.
*/
- if (file == file_reloaded_cmp)
+ if (likely(file == file_reloaded_cmp))
return file_reloaded;
fput(file);
WARNING: multiple messages have this Message-ID (diff)
From: Mateusz Guzik <mjguzik@gmail.com>
To: kernel test robot <oliver.sang@intel.com>
Cc: Christian Brauner <brauner@kernel.org>,
Jann Horn <jannh@google.com>,
linuxppc-dev@lists.ozlabs.org, intel-gfx@lists.freedesktop.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
fengwei.yin@intel.com, gfs2@lists.linux.dev,
linux-fsdevel@vger.kernel.org, feng.tang@intel.com,
ying.huang@intel.com, oe-lkp@lists.linux.dev,
bpf@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [Intel-gfx] [linus:master] [file] 0ede61d858: will-it-scale.per_thread_ops -2.9% regression
Date: Mon, 20 Nov 2023 08:41:06 +0100 [thread overview]
Message-ID: <ZVsNklEgxi5GkIZ/@f> (raw)
In-Reply-To: <202311201406.2022ca3f-oliver.sang@intel.com>
On Mon, Nov 20, 2023 at 03:11:31PM +0800, kernel test robot wrote:
>
>
> Hello,
>
> kernel test robot noticed a -2.9% regression of will-it-scale.per_thread_ops on:
>
>
> commit: 0ede61d8589cc2d93aa78230d74ac58b5b8d0244 ("file: convert to SLAB_TYPESAFE_BY_RCU")
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
>
> 93faf426e3cc000c 0ede61d8589cc2d93aa78230d74
> ---------------- ---------------------------
> %stddev %change %stddev
> \ | \
[snip]
> 30.90 ± 4% -20.6 10.35 ± 2% perf-profile.self.cycles-pp.__fget_light
> 0.00 +26.5 26.48 perf-profile.self.cycles-pp.__get_file_rcu
[snip]
So __fget_light now got a func call.
I don't know if this is worth patching (and benchmarking after), but I
if sorting this out is of interest, triviality below is probably the
easiest way out:
diff --git a/fs/file.c b/fs/file.c
index 5fb0b146e79e..d8d3e18800c4 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -856,14 +856,14 @@ void do_close_on_exec(struct files_struct *files)
spin_unlock(&files->file_lock);
}
-static struct file *__get_file_rcu(struct file __rcu **f)
+static __always_inline struct file *__get_file_rcu(struct file __rcu **f)
{
struct file __rcu *file;
struct file __rcu *file_reloaded;
struct file __rcu *file_reloaded_cmp;
file = rcu_dereference_raw(*f);
- if (!file)
+ if (unlikely(!file))
return NULL;
if (unlikely(!atomic_long_inc_not_zero(&file->f_count)))
@@ -891,7 +891,7 @@ static struct file *__get_file_rcu(struct file __rcu **f)
* If the pointers don't match the file has been reallocated by
* SLAB_TYPESAFE_BY_RCU.
*/
- if (file == file_reloaded_cmp)
+ if (likely(file == file_reloaded_cmp))
return file_reloaded;
fput(file);
WARNING: multiple messages have this Message-ID (diff)
From: Mateusz Guzik <mjguzik@gmail.com>
To: kernel test robot <oliver.sang@intel.com>
Cc: Christian Brauner <brauner@kernel.org>,
lkp@intel.com, Jann Horn <jannh@google.com>,
linuxppc-dev@lists.ozlabs.org, intel-gfx@lists.freedesktop.org,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
fengwei.yin@intel.com, gfs2@lists.linux.dev,
linux-fsdevel@vger.kernel.org, feng.tang@intel.com,
ying.huang@intel.com, oe-lkp@lists.linux.dev,
bpf@vger.kernel.org,
Linus Torvalds <torvalds@linux-foundation.org>
Subject: Re: [linus:master] [file] 0ede61d858: will-it-scale.per_thread_ops -2.9% regression
Date: Mon, 20 Nov 2023 08:41:06 +0100 [thread overview]
Message-ID: <ZVsNklEgxi5GkIZ/@f> (raw)
In-Reply-To: <202311201406.2022ca3f-oliver.sang@intel.com>
On Mon, Nov 20, 2023 at 03:11:31PM +0800, kernel test robot wrote:
>
>
> Hello,
>
> kernel test robot noticed a -2.9% regression of will-it-scale.per_thread_ops on:
>
>
> commit: 0ede61d8589cc2d93aa78230d74ac58b5b8d0244 ("file: convert to SLAB_TYPESAFE_BY_RCU")
> https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git master
>
> 93faf426e3cc000c 0ede61d8589cc2d93aa78230d74
> ---------------- ---------------------------
> %stddev %change %stddev
> \ | \
[snip]
> 30.90 ± 4% -20.6 10.35 ± 2% perf-profile.self.cycles-pp.__fget_light
> 0.00 +26.5 26.48 perf-profile.self.cycles-pp.__get_file_rcu
[snip]
So __fget_light now got a func call.
I don't know if this is worth patching (and benchmarking after), but I
if sorting this out is of interest, triviality below is probably the
easiest way out:
diff --git a/fs/file.c b/fs/file.c
index 5fb0b146e79e..d8d3e18800c4 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -856,14 +856,14 @@ void do_close_on_exec(struct files_struct *files)
spin_unlock(&files->file_lock);
}
-static struct file *__get_file_rcu(struct file __rcu **f)
+static __always_inline struct file *__get_file_rcu(struct file __rcu **f)
{
struct file __rcu *file;
struct file __rcu *file_reloaded;
struct file __rcu *file_reloaded_cmp;
file = rcu_dereference_raw(*f);
- if (!file)
+ if (unlikely(!file))
return NULL;
if (unlikely(!atomic_long_inc_not_zero(&file->f_count)))
@@ -891,7 +891,7 @@ static struct file *__get_file_rcu(struct file __rcu **f)
* If the pointers don't match the file has been reallocated by
* SLAB_TYPESAFE_BY_RCU.
*/
- if (file == file_reloaded_cmp)
+ if (likely(file == file_reloaded_cmp))
return file_reloaded;
fput(file);
next prev parent reply other threads:[~2023-11-20 7:41 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-20 7:11 [linus:master] [file] 0ede61d858: will-it-scale.per_thread_ops -2.9% regression kernel test robot
2023-11-20 7:11 ` kernel test robot
2023-11-20 7:11 ` [Intel-gfx] " kernel test robot
2023-11-20 7:41 ` Mateusz Guzik [this message]
2023-11-20 7:41 ` Mateusz Guzik
2023-11-20 7:41 ` [Intel-gfx] " Mateusz Guzik
2023-11-26 20:23 ` Linus Torvalds
2023-11-26 20:23 ` Linus Torvalds
2023-11-26 20:23 ` [Intel-gfx] " Linus Torvalds
2023-11-26 23:20 ` Linus Torvalds
2023-11-26 23:20 ` Linus Torvalds
2023-11-26 23:20 ` [Intel-gfx] " Linus Torvalds
2023-11-27 6:58 ` Oliver Sang
2023-11-27 6:58 ` Oliver Sang
2023-11-27 6:58 ` [Intel-gfx] " Oliver Sang
2023-11-27 10:27 ` Christian Brauner
2023-11-27 10:27 ` Christian Brauner
2023-11-27 10:27 ` [Intel-gfx] " Christian Brauner
2023-11-27 17:10 ` Linus Torvalds
2023-11-27 17:10 ` Linus Torvalds
2023-11-27 17:10 ` [Intel-gfx] " Linus Torvalds
2023-11-28 15:52 ` Christian Brauner
2023-11-28 15:52 ` Christian Brauner
2023-11-28 15:52 ` [Intel-gfx] " Christian Brauner
2023-11-27 10:13 ` Christian Brauner
2023-11-27 10:13 ` Christian Brauner
2023-11-27 10:13 ` [Intel-gfx] " Christian Brauner
2023-11-26 20:50 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for " Patchwork
2023-11-26 20:50 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2023-11-26 23:26 ` [Intel-gfx] ✗ Fi.CI.BUILD: failure for 0ede61d858: will-it-scale.per_thread_ops -2.9% regression (rev2) Patchwork
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=ZVsNklEgxi5GkIZ/@f \
--to=mjguzik@gmail.com \
--cc=bpf@vger.kernel.org \
--cc=brauner@kernel.org \
--cc=feng.tang@intel.com \
--cc=fengwei.yin@intel.com \
--cc=gfs2@lists.linux.dev \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jannh@google.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=lkp@intel.com \
--cc=oe-lkp@lists.linux.dev \
--cc=oliver.sang@intel.com \
--cc=torvalds@linux-foundation.org \
--cc=ying.huang@intel.com \
/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.