Date: Sat, 31 Oct 1998 15:46:39 +0800 From: Peter Wemm <peter@netplex.com.au> To: Mike Smith <mike@smith.net.au> Cc: Peter Jeremy <peter.jeremy@auss2.alcatel.com.au>, hackers@FreeBSD.ORG Subject: Re: sync writes with softupdates enabled Message-ID: <199810310746.PAA18872@spinner.netplex.com.au> In-Reply-To: Your message of "Thu, 29 Oct 1998 21:29:10 PST." <199810300529.VAA00927@dingo.cdrom.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Mike Smith wrote: > > I've just installed 3.0-RELEASE on the machine destined to be our new > > news server. Whilst testing it with soft updates enabled, I'm seeing > > a lot of sync writes onto /usr: > > > > /dev/wd0s1f on /usr (local, soft-updates, writes: sync 32910 async 4955) > > > > With /usr mounted asynchronously rather than soft updates enabled, > > I also saw lots of synchronous writes. > > > > The writes are definitely a result of innd - nothing else much is > > running and pausing innd makes the I/O stop. I've looked at a > > ktrace of innd and can't see anything that would obviously cause it > > to do sync writes (no fsync() or open(O_SYNC) calls). > > > > It's inn-1.7.2 as per the ports with the exception that MMAP is > > enabled for dbz. > > > > All I can think of is that the MMAP'd history file is causing the > > kernel to unnecessarily perform sync writes to try and keep the > > MMAP and VFS images in sync. > > That's almost certainly correct. Try running without mmap. It used to > be faster that way; maybe it is again? Hmm, from vm_object.c: void vm_object_page_clean(object, start, end, flags) pagerflags = (flags & (OBJPC_SYNC | OBJPC_INVAL)) ? VM_PAGER_PUT_SYNC : 0; pagerflags |= (flags & OBJPC_INVAL) ? VM_PAGER_PUT_INVAL : 0; VOP_FSYNC(vp, NULL, (pagerflags & VM_PAGER_PUT_SYNC)?MNT_WAIT:0, curproc); vm_object.h: #define OBJPC_SYNC 0x1 /* sync I/O */ #define OBJPC_INVAL 0x2 /* invalidate */ Yet, we have: vfs_subr.c: vm_object_page_clean(vp->v_object, 0, 0, TRUE); vfs_syscalls.c: vm_object_page_clean(vp->v_object, 0, 0, FALSE); param.h:#define TRUE 1 param.h:#define FALSE 0 The sync_fsync() writes are calling vfs_msync() with MNT_NOWAIT, but vfs_msync() is turning dirty mmap pages into sync writes. This behavior is needed prior to unmount (obviously) but doesn't seem useful for the periodic sync. Cheers, -Peter To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199810310746.PAA18872>