From owner-freebsd-current Tue Mar 28 22:10:39 2000 Delivered-To: freebsd-current@freebsd.org Received: from apollo.backplane.com (apollo.backplane.com [216.240.41.2]) by hub.freebsd.org (Postfix) with ESMTP id 8C6B237BB53 for ; Tue, 28 Mar 2000 22:10:36 -0800 (PST) (envelope-from dillon@apollo.backplane.com) Received: (from dillon@localhost) by apollo.backplane.com (8.9.3/8.9.1) id WAA57338; Tue, 28 Mar 2000 22:10:26 -0800 (PST) (envelope-from dillon) Date: Tue, 28 Mar 2000 22:10:26 -0800 (PST) From: Matthew Dillon Message-Id: <200003290610.WAA57338@apollo.backplane.com> To: Kenneth Wayne Culver Cc: Geoff Rehmet , Gary Jennejohn , freebsd-current@FreeBSD.ORG Subject: Re: UP kernel performance and Matt Dillon's patches References: Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG : :Yeah, I was wrong before.. I just had to really hit the system hard before :I noticed this behavior... it get's pretty bad... the mouse get's jumpy, :and the keyboard input is really slow... : :================================================================= :| Kenneth Culver | FreeBSD: The best OS around. | I definitely blew the need_resched stuff. I found it. I was clearing the 'astpending' variable in doreti, which used to be just fine, but now that we have two flags in it instead of one it was clearing the need-resched flag bit as well as the astpending flag bit. If you don't want to wait, here it is (it's really the last bit that fixes the problem. The first two bits are incidental). I've committed the fix. I would appreciate others testing it as well. It seems to solve the problem I was able to reproduce on my systems. Index: isa/ipl.s =================================================================== RCS file: /home/ncvs/src/sys/i386/isa/ipl.s,v retrieving revision 1.33 diff -u -r1.33 ipl.s --- isa/ipl.s 2000/03/28 07:16:23 1.33 +++ isa/ipl.s 2000/03/29 06:00:29 @@ -123,10 +123,10 @@ andl _ipending,%ecx /* set bit = unmasked pending INT */ jne doreti_unpend movl %eax,_cpl - MPLOCKED decb _intr_nesting_level + decb _intr_nesting_level /* Check for ASTs that can be handled now. */ - cmpb $0,_astpending + cmpl $0,_astpending je doreti_exit testb $SEL_RPL_MASK,TF_CS(%esp) jne doreti_ast @@ -271,7 +271,7 @@ ALIGN_TEXT doreti_ast: - movl $0,_astpending + andl $~AST_PENDING,_astpending sti movl $T_ASTFLT,TF_TRAPNO(%esp) call _trap To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-current" in the body of the message