Source-Changes archive

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

Re: CVS commit: src/sys/ufs/lfs



On Tue, 17 Apr 2007 03:51:58 +0200
Juan RP <juan%xtrarom.org@localhost> wrote:

> On Tue, 17 Apr 2007 01:16:47 +0000 (UTC)
> Konrad Schroder <perseant%netbsd.org@localhost> wrote:
> 
> > 
> > Module Name:        src
> > Committed By:       perseant
> > Date:               Tue Apr 17 01:16:47 UTC 2007
> > 
> > Modified Files:
> >     src/sys/ufs/lfs: lfs.h lfs_bio.c lfs_extern.h lfs_segment.c
> >         lfs_vfsops.c lfs_vnops.c
> > 
> > Log Message:
> > Install a new sysctl, vfs.lfs.ignore_lazy_sync, which causes LFS to ignore
> > the "smooth" syncer, as if vfs.sync.*delay = 0, but only for LFS.  The
> > default is "on", i.e., ignore lazy sync.
> > 
> > Reduce the amount of polling/busy-waiting done by lfs_putpages().  To
> > accomplish this, copied genfs_putpages() and modified it to indicate which
> > page it was that caused it to return with EDEADLK.  fsync()/fdatasync()
> > should no longer ever fail with EAGAIN, and should not consume huge
> > quantities of cpu.
> > 
> > Also, try to make dirops less likely to be written as the result of a
> > VOP_PUTPAGES(), while ensuring that they are written regularly.
> 
> I tried this change with amd64/SMP and the result is not satisfactory.
> 
> I did the following:
> 
> $ cd /storage/misc <- /storage was created with newfs_lfs -A
> $ tar cvfz pkgsrc.tgz pkgsrc <- I had pkgsrc stored here
> $ mkdir foo
> $ tar xvfz pkgsrc.tgz -C foo
> 
> Untarring pkgsrc made the system unusable, 100% cpu all the time.

Another problem that I'm hitting right now, building a pkg from
pkgsrc just makes it wait for something forever. The only thing
I can do is go to ddb, I got the current backtrace for cpu0 and cpu1:

cpu0:

x86_pause()
lfs_putpages()
VOP_PUTPAGES()
lfs_writefile()
lfs_writevnodes()
lfs_segwrite()
lfs_sync()
sync_fsync()
VOP_FSYNC()
sched_sync()

cpu1:

_kernel_lock()
sleepq_unblock()
ltsleep()
lfs_writerd()

I have pkgsrc in /storage/misc/pkgsrc, storage is LFS.
I have /storage/misc/pkgsrc null mounted in /usr/pkgsrc,
/usr is FFS.
The work directory for pkgsrc is in /storage/pkgsrc-obj.

-- 
http://plog.xtrarom.org/
Juan RP's blog - NetBSD/pkgsrc news in Spanish



Home | Main Index | Thread Index | Old Index