Re: [PATCH v7 1/4] spinlock: A new lockref structure for lockless update of refcount

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

 



On 08/30/2013 03:40 PM, Al Viro wrote:
On Fri, Aug 30, 2013 at 03:20:48PM -0400, Waiman Long wrote:

There are more contention in the lglock than I remember for the run
in 3.10. This is an area that I need to look at. In fact, lglock is
becoming a problem for really large machine with a lot of cores. We
have a prototype 16-socket machine with 240 cores under development.
The cost of doing a lg_global_lock will be very high in that type of
machine given that it is already high in this 80-core machine. I
have been thinking about instead of per-cpu spinlocks, we could
change the locking to per-node level. While there will be more
contention for lg_local_lock, the cost of doing a lg_global_lock
will be much lower and contention within the local die should not be
too bad. That will require either a per-node variable infrastructure
or simulated with the existing per-cpu subsystem.
Speaking of lglock, there's a low-hanging fruit in that area: we have
no reason whatsoever to put anything but regular files with FMODE_WRITE
on the damn per-superblock list - the *only* thing it's used for is
mark_files_ro(), which will skip everything except those.  And since
read opens normally outnumber the writes quite a bit...  Could you
try the diff below and see if it changes the picture?  files_lglock
situation ought to get better...



Sure. I will try that out, but it probably won't help too much in this test case. The perf profile that I sent out in my previous mail is only partial. The actual one for lg_global_lock was:

     1.01%            reaim  [kernel.kallsyms]        [k] lg_global_lock
                      |
                      --- lg_global_lock
                          mntput_no_expire
                          mntput
                          __fput
                          ____fput
                          task_work_run
                          do_notify_resume
                          int_signal
                         |
                         |--51.62%-- __shmdt
                         |
                          --48.38%-- __shmctl

So it is the mnput_no_expire() function that is doing all the lg_global_lock() calls.

Regards,
Longman
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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