Re: Packet loss every 30.999 seconds
- From: Mark Fullmer <maf@xxxxxxxxxxxxxx>
- Date: Sat, 22 Dec 2007 01:28:31 -0500
On Dec 22, 2007, at 12:36 AM, Kostik Belousov wrote:
On Fri, Dec 21, 2007 at 10:30:51PM -0500, Mark Fullmer wrote:The uio_yield() idea did not work. Still have the same 31 secondWhat patch you have used ?
interval packet loss.
This is hand applied from the diff you sent December 19, 2007 1:24:48 PM EST
sr1400-ar0.eng:/usr/src/sys/ufs/ffs# diff -c ffs_vfsops.c ffs_vfsops.c.orig
*** ffs_vfsops.c Fri Dec 21 21:08:39 2007
--- ffs_vfsops.c.orig Sat Dec 22 00:51:22 2007
***************
*** 1107,1113 ****
struct ufsmount *ump = VFSTOUFS(mp);
struct fs *fs;
int error, count, wait, lockreq, allerror = 0;
- int yield_count;
int suspend;
int suspended;
int secondary_writes;
--- 1107,1112 ----
***************
*** 1148,1154 ****
softdep_get_depcounts(mp, &softdep_deps, &softdep_accdeps);
MNT_ILOCK(mp);
- yield_count = 0;
MNT_VNODE_FOREACH(vp, mp, mvp) {
/*
* Depend on the mntvnode_slock to keep things stable enough
--- 1147,1152 ----
***************
*** 1166,1177 ****
(IN_ACCESS | IN_CHANGE | IN_MODIFIED | IN_UPDATE)) == 0 &&
vp->v_bufobj.bo_dirty.bv_cnt == 0)) {
VI_UNLOCK(vp);
- if (yield_count++ == 100) {
- MNT_IUNLOCK(mp);
- yield_count = 0;
- uio_yield();
- goto relock_mp;
- }
continue;
}
MNT_IUNLOCK(mp);
--- 1164,1169 ----
***************
*** 1186,1192 ****
if ((error = ffs_syncvnode(vp, waitfor)) != 0)
allerror = error;
vput(vp);
- relock_mp:
MNT_ILOCK(mp);
}
MNT_IUNLOCK(mp);
--- 1178,1183 ----
Lets check whether the syncer is the culprit for you.
Please, change the value of the syncdelay at the sys/kern/vfs_subr.c
around the line 238 from 30 to some other value, e.g., 45. After that,
check the interval of the effect you have observed.
Changed it to 13. Not sure if SYNCER_MAXDELAY also needed to be
increased if syncdelay was increased.
static int syncdelay = 13; /* max time to delay syncing data */
Test:
; use vnodes
% find / -type f -print > /dev/null
; verify
% sysctl vfs.numvnodes
vfs.numvnodes: 32128
; run packet loss test
now have periodic loss every 13994633us (13.99 seconds).
; reduce # of vnodes with sysctl kern.maxvnodes=1000
test now runs clean.
It would be interesting to check whether completely disabling the syncer
eliminates the packet loss, but such system have to be operated with
extreme caution.
_______________________________________________
freebsd-net@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: Packet loss every 30.999 seconds
- From: Kostik Belousov
- Re: Packet loss every 30.999 seconds
- From: David G Lawrence
- Re: Packet loss every 30.999 seconds
- References:
- Packet loss every 30.999 seconds
- From: Mark Fullmer
- Re: Packet loss every 30.999 seconds
- From: David G Lawrence
- Re: Packet loss every 30.999 seconds
- From: Mark Fullmer
- Re: Packet loss every 30.999 seconds
- From: Bruce Evans
- Re: Packet loss every 30.999 seconds
- From: Mark Fullmer
- Re: Packet loss every 30.999 seconds
- From: David G Lawrence
- Re: Packet loss every 30.999 seconds
- From: Alfred Perlstein
- Re: Packet loss every 30.999 seconds
- From: David G Lawrence
- Re: Packet loss every 30.999 seconds
- From: Mark Fullmer
- Re: Packet loss every 30.999 seconds
- From: Kostik Belousov
- Packet loss every 30.999 seconds
- Prev by Date: Re: Packet loss every 30.999 seconds
- Next by Date: Re: Packet loss every 30.999 seconds
- Previous by thread: Re: Packet loss every 30.999 seconds
- Next by thread: Re: Packet loss every 30.999 seconds
- Index(es):
Relevant Pages
|
|