directory listing hangs in "ufs" state
Andrey Zonov
andrey at zonov.org
Wed Dec 14 19:00:13 UTC 2011
On 14.12.2011 22:53, Alan Cox wrote:
> On Wed, Dec 14, 2011 at 12:22 PM, Jeremy Chadwick
> <freebsd at jdc.parodius.com <mailto:freebsd at jdc.parodius.com>> wrote:
>
> On Wed, Dec 14, 2011 at 10:11:47PM +0400, Andrey Zonov wrote:
> > Hi Jeremy,
> >
> > This is not hardware problem, I've already checked that. I also ran
> > fsck today and got no errors.
> >
> > After some more exploration of how mongodb works, I found that then
> > listing hangs, one of mongodb thread is in "biowr" state for a long
> > time. It periodically calls msync(MS_SYNC) accordingly to ktrace
> > out.
> >
> > If I'll remove msync() calls from mongodb, how often data will be
> > sync by OS?
> >
> > --
> > Andrey Zonov
> >
> > On 14.12.2011 2:15, Jeremy Chadwick wrote:
> > >On Wed, Dec 14, 2011 at 01:11:19AM +0400, Andrey Zonov wrote:
> > >>
> > >>Have you any ideas what is going on? or how to catch the problem?
> > >
> > >Assuming this isn't a file on the root filesystem, try booting the
> > >machine in single-user mode and using "fsck -f" on the filesystem in
> > >question.
> > >
> > >Can you verify there's no problems with the disk this file lives
> on as
> > >well (smartctl -a /dev/disk)? I'm doubting this is the problem, but
> > >thought I'd mention it.
>
> I have no real answer, I'm sorry. msync(2) indicates it's effectively
> deprecated (see BUGS). It looks like this is effectively a mmap-version
> of fsync(2).
>
>
> Yikes, I just looked at this man page. I'm afraid that the text in the
> BUGS section is highly misleading. The MS_INVALIDATE option should be
> obsolete for the reason given there. Under a strict reading of the
> applicable standard, FreeBSD could implement this option as a NOP.
> However, we treat it something like madvise(MADV_DONTNEED|FREE). In
> contrast, MS_SYNC is definitely not obsolete.
>
> Alan
>
> P.S. If someone wants to take a crack at fixing this man page, contact
> me off list.
>
Please don't remove support for MS_INVALIDATE, this is only one way to
purge disk cache. MADV_DONTNEED does nothing here in my experience.
--
Andrey Zonov
More information about the freebsd-stable
mailing list