Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Jun 1998 14:50:02 -0700 (PDT)
From:      Matthew Dillon <dillon@backplane.com>
To:        freebsd-bugs@FreeBSD.ORG
Subject:   Re: i386/6944: bug in i386/isa/icu_ipl.s - AST gets lost, causes extreme network slowdown when cpu-bound processes present, possibly other problems
Message-ID:  <199806142150.OAA12657@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/6944; it has been noted by GNATS.

From: Matthew Dillon <dillon@backplane.com>
To: Bruce Evans <bde@zeta.org.au>
Cc: bde@zeta.org.au, FreeBSD-gnats-submit@FreeBSD.ORG
Subject: Re: i386/6944: bug in i386/isa/icu_ipl.s - AST gets lost, causes extreme network slowdown when cpu-bound processes present, possibly other problems
Date: Sun, 14 Jun 1998 14:41:35 -0700 (PDT)

 :>    Well, I spent 6 hours from 9p.m. to 3a.m. just find this :-)  I'm going
 :>    to leave the finding of the broken spl to someone else, but there ARE
 :>    several places where $0 is loaded into the cpl in the assembly, and 
 :
 :Mainly SMP places in swtch.s and VM86 places in ipl.s.  I can't see any
 :relevant problems there (except it's hard to see anything because of the
 :ifdefs).
 
     Yah, I checked that out... but the problem was still there after turning
     off VM86, and I've got SMP turned off.  I also have APIC_IO turned off.
 
 :>    The problem is extremely reproducable... just NFS mount / and /usr from
 :>    a server to a workstation, run a for (;;); process on the server, and
 :>    try to run xterm on the workstation and, poof. 
 :
 :Not reproducible here.  I'll try using VM86.
 
     Damn.  I was hoping it would be easily reproduceable.  I see the same
     effect on our 2.2.x production machines.
 
     The diskless workstation is a -current kernel talking to a -current 
     server.  nfsd -n 4 on the server, nfsiod -n 2 on the client.  In one
     of my iterations I was dumping debugging printf()'s in the kernel,
     which showed that while the forever process ./x was running, the nfs 
     socket wakeup WAS setting the AST in ipending along with want_resched,
     but that nfsd wasn't getting woken up until the next timer tick.  If
     the machine was idle (no forever process), nfsd would get the cpu 
     immediately.
 
     Also, another point of reference:  If the forever process is running but
     with system call in a tight loop, like this:
 
 	for (;;)
 	    write(1, buf, 0);
 
     Then the nfsd would get woken up instantly for each request.  But if the
     forever process was running like this:
 
 	for (;;)
 	    ;
 
     The nfsd would not get woken up until the next timer tick.
 
 						-Matt
 
 :
 :Bruce
 
     Matthew Dillon   Engineering, BEST Internet Communications, Inc.
 		     <dillon@backplane.com>
     [always include a portion of the original email in any response!]

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199806142150.OAA12657>