lkml.org 
[lkml]   [2003]   [Apr]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
SubjectRe: 2.4.18: lru_list_lock contention in write_unlocked_buffers()
From
Hi,

> > I found there are hard contention on lru_list_lock, which is mostly held
> > by write_unlocked_buffers().
> > It happens only on large memory machine because lru_list can grow very long
> > and write_some_buffers() scans the long list from head on each call.
<snip>
> I don't think there's a sane fix for this in the 2.4 context.
>
> What you can do is to convert fsync_dev() to sync _all_ devices and not just
> the one which is being closed.
>
> It will take longer, but it converts the O(n*n) search into O(n).

thank you.
Putting the same modification in __block_fsync reduce the contention
very much.

The other solution might be adapting nfract value to match the memory size
to avoid lru_list growing too long.

Best regards.
--
NOMURA, Jun'ichi <j-nomura@ce.jp.nec.com, nomura@hpc.bs1.fc.nec.co.jp>
Enterprise Linux Group, 1st Computers Software Division,
Computers Software Operations Unit, NEC Solutions.


--- linux/fs/block_dev.c
+++ linux/fs/block_dev.c
@@ -174,7 +174,7 @@ static int __block_fsync(struct inode *
int ret, err;

ret = filemap_fdatasync(inode->i_mapping);
- err = sync_buffers(inode->i_rdev, 1);
+ err = sync_buffers(NODEV, 1);
if (err && !ret)
ret = err;
err = filemap_fdatawait(inode->i_mapping);
--- linux/fs/buffer.c
+++ linux/fs/buffer.c
@@ -384,7 +384,7 @@ int fsync_no_super(kdev_t dev)

int fsync_dev(kdev_t dev)
{
- sync_buffers(dev, 0);
+ sync_buffers(NODEV, 0);

lock_kernel();
sync_inodes(dev);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-03-22 13:34    [W:0.057 / U:3.544 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site