Re: [PATCH 0/6] kernfs: proposed locking and concurrency improvement

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Ian,

On Tue, Dec 22, 2020 at 3:47 PM Ian Kent <raven@xxxxxxxxxx> wrote:
>
> Here is what I currently have for the patch series we were discussing
> recently.
>
> I'm interested to see how this goes with the problem you are seeing.
>
> The last patch in the series (the attributes update patch) has seen
> no more than compile testing, I hope I haven't messed up on that.

OK, I just ignored the last patch (kernfs: add a spinlock to kernfs
iattrs for inode updates)
because I can not boot the kernel after applying it.

Applying the first five patches, my benchmark shows no improvement this time,
one open+read+close cycle spends 500us. :(

perf suggests that down_write in kernfs_iop_permission drags the most
performance
(full report see attachment) which makes sense to me, since down_write
has no difference
here compared to the mutex, they all allow only one thread running
simultaneously.

sigh... It's really hard to fix.

   |
   |--51.81%--inode_permission
   |          |
   |           --51.36%--kernfs_iop_permission
   |                     |
   |                     |--50.41%--down_write
   |                     |          |
   |                     |           --50.32%--rwsem_down_write_slowpath
   |                     |                     |
   |                     |                      --49.67%--rwsem_optimistic_spin
   |                     |                                |
   |                     |                                 --49.31%--osq_lock
   |                     |
   |                      --0.74%--up_write
   |                                rwsem_wake.isra.0
   |                                |
   |                                 --0.69%--wake_up_q
   |                                           |
   |                                            --0.62%--try_to_wake_up
   |                                                      |
   |
--0.54%--_raw_spin_lock_irqsave
   |                                                                 |
   |
--0.52%--native_queued
   |
    --29.90%--walk_component
              |
               --29.72%--lookup_fast
                         |
                          --29.51%--kernfs_dop_revalidate
                                    |
                                    |--28.88%--down_read
                                    |          |
                                    |
--28.75%--rwsem_down_read_slowpath
                                    |                     |
                                    |
--28.50%--rwsem_optimistic_spin
                                    |                                |
                                    |
--28.38%--osq_lock
                                    |
                                     --0.59%--up_read
                                               rwsem_wake.isra.0
                                               |
                                                --0.54%--wake_up_q
                                                          |

--0.53%--try_to_wake_up

> Please keep in mind that Greg's continued silence on the question
> of whether the series might be re-considered indicates to me that
> he has not changed his position on this.

Since the problem doesn't break the system, it doesn't need immediate attention.
So I bet it must be labeled with a low priority in Greg's to-do list.
And it's merging
window & holiday season. Let's just give him more time. :)


> ---
>
> Ian Kent (6):
>       kernfs: move revalidate to be near lookup
>       kernfs: use VFS negative dentry caching
>       kernfs: use revision to identify directory node changes
>       kernfs: switch kernfs to use an rwsem
>       kernfs: stay in rcu-walk mode if possible
>       kernfs: add a spinlock to kernfs iattrs for inode updates
>
>
>  fs/kernfs/dir.c             |  285 ++++++++++++++++++++++++++++---------------
>  fs/kernfs/file.c            |    4 -
>  fs/kernfs/inode.c           |   19 ++-
>  fs/kernfs/kernfs-internal.h |   30 ++++-
>  fs/kernfs/mount.c           |   12 +-
>  fs/kernfs/symlink.c         |    4 -
>  include/linux/kernfs.h      |    5 +
>  7 files changed, 238 insertions(+), 121 deletions(-)
>
> --
> Ian
>


thanks,
fox

Attachment: output
Description: Binary data


[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux