Re: Panic of 8-CURRENT in VMWare

Previous thread: [head tinderbox] failure on sparc64/sun4v by FreeBSD Tinderbox on Sunday, March 16, 2008 - 9:37 am. (1 message)

Next thread: HEADSUP: DTrace support in current by John Birrell on Sunday, March 16, 2008 - 6:24 pm. (6 messages)
To: <freebsd-current@...>
Date: Sunday, March 16, 2008 - 3:35 pm

Hi,
I cannot boot a very recent build (minutes ago) of 8-CURRENT on VMWare=20
Server. Panic ("integer divide fault" - is this division by zero?) is in =

sched_rr_interval().

More info here:
http://ivoras.sharanet.org/stuff/panic/

It might be because I'm trying to run without WITNESS+INVARIANTS.

To: <freebsd-current@...>
Date: Monday, March 17, 2008 - 7:10 pm

No, building a GENERIC kernel doesn't change anything. It's also not a=20
cvsup glitch - todays sources panic in exactly the same way.

To: Ivan Voras <ivoras@...>
Cc: <freebsd-current@...>
Date: Tuesday, March 18, 2008 - 6:40 pm

Can you tell me what the values of:

sysctl kern.sched.slice

and

sysctl kern.clockrate

are?

Thanks,
Jeff
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

To: <freebsd-current@...>
Date: Tuesday, March 18, 2008 - 7:07 pm

The machine doesn't finish booting the kernel (i.e. init isn't executed) =

and fetching sysctls apparently isn't supported by the kernel debugger=20
(though it would be nice if it did work, at least for simple variables).

The only old kernel I have is 7.0RC1, and in it I can only access=20
kern.clockrate, which is { hz=3D50, tick=3D20000, profhz=3D33, stathz=3D6=
}.

Since you brought up the issue of clocks, I removed the tuning of=20
kern.hz (it was present there practically forever) and the panic's gone. =

I use low values for kern.hz in VMWare to (noticably) reduce problems=20
with clock drift and context switches, so it would be nice to not have=20
the kernel panic with it :)

Apparently lowering kern.hz works upto about 75 - anything lower=20
triggers the integer divide fault.

To: Ivan Voras <ivoras@...>
Cc: <freebsd-current@...>
Date: Monday, July 28, 2008 - 9:49 am

I ran into this problem recently. It appears that sched_slice is set
to zero when realstathz drops below 10 in sched_ule.c:

sched_slice = (realstathz/10); /* ~100ms */

I was able to work around the problem with the following patch. The
image no longer panics, but I have not done any stress or performance
testing. Is there a better solution to this problem?

For reference:

> uname -a
FreeBSD vm7.vadev.org 7.0-STABLE FreeBSD 7.0-STABLE #3 r50:55M: Mon
Jul 28 09:27:04 EDT 2008 root@vm7.vadev.org:/usr/obj/usr/src/sys/
VMWARE i386
> sysctl -a | grep kern.clock
kern.clockrate: { hz = 50, tick = 20000, profhz = 33, stathz = 6 }

The patch is against 7-STABLE from 7/24/2008.

Thanks.

- Ben

Index: src/sys/kern/sched_ule.c
===================================================================
--- src/sys/kern/sched_ule.c (revision 53)
+++ src/sys/kern/sched_ule.c (working copy)
@@ -1325,6 +1325,7 @@
*/
realstathz = hz;
sched_slice = (realstathz/10); /* ~100ms */
+ sched_slice = sched_slice ? sched_slice : 1;
tickincr = 1 << SCHED_TICK_SHIFT;

/* Add thread0's load since it's running. */
@@ -1345,6 +1346,7 @@

realstathz = stathz ? stathz : hz;
sched_slice = (realstathz/10); /* ~100ms */
+ sched_slice = sched_slice ? sched_slice : 1;

/*
* tickincr is shifted out by 10 to avoid rounding errors due to

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscribe@freebsd.org"

Previous thread: [head tinderbox] failure on sparc64/sun4v by FreeBSD Tinderbox on Sunday, March 16, 2008 - 9:37 am. (1 message)

Next thread: HEADSUP: DTrace support in current by John Birrell on Sunday, March 16, 2008 - 6:24 pm. (6 messages)