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