device polling question
Ramūnas Lukoševičius
lukoramu at parok.lt
Tue Jul 25 08:07:48 UTC 2006
Hi. I think, this is a problem. There is kind of interrupt storm with
device polling turned on, and `sysctl kern.polling` shows some interesting
numbers:
[root at obgp ~]# uname -r
6.1-RELEASE-p3
[root at obgp ~]# sysctl kern.clockrate
kern.clockrate: { hz = 1000, tick = 1000, profhz = 1024, stathz = 128 }
[root at obgp ~]# vmstat 1 10
procs memory page disk faults cpu
r b w avm fre flt re pi po fr sr ad0 in sy cs us sy id
0 0 0 96488 152772 220 0 0 0 197 0 0 7864 1563 4943 3 30 67
0 0 0 96488 152772 1 0 0 0 1 0 0 6006 123 6806 0 43 57
0 0 0 96488 152772 0 0 0 0 0 0 0 6026 115 6845 0 37 63
0 0 0 96488 152772 0 0 0 0 0 0 0 6146 123 6818 0 41 59
0 0 0 96488 152772 0 0 0 0 0 0 7 6013 127 6766 0 41 59
0 0 0 96488 152772 0 0 0 0 0 0 0 5929 115 6565 0 34 66
0 0 0 96488 152772 0 0 0 0 3 0 2 6453 115 7193 0 38 62
0 0 0 96488 152776 0 0 0 0 1 0 1 5683 115 6389 1 39 60
0 0 0 96488 152776 0 0 0 0 0 0 0 6279 123 6907 0 42 58
0 0 0 96488 152776 0 0 0 0 0 0 0 5774 127 6426 0 37 63
[root at obgp ~]# ifconfig fxp0 polling
[root at obgp ~]# ifconfig fxp1 polling
[root at obgp ~]# vmstat 1 10
procs memory page disk faults cpu
r b w avm fre flt re pi po fr sr ad0 in sy cs us sy id
0 0 0 96488 152776 212 0 0 0 189 0 0 8004 1506 4980 3 31 66
0 0 0 96488 152776 1 0 0 0 1 0 0 34446 123 3066 0 39 61
0 0 0 96488 152776 0 0 0 0 0 0 0 34373 123 3059 0 37 63
0 0 0 96488 152776 0 0 0 0 0 0 0 34480 127 3060 0 43 57
0 0 0 96488 152776 0 0 0 0 3 0 2 34329 115 3059 0 45 55
0 0 0 96488 152776 2 0 0 0 0 0 0 34436 120 3061 0 40 60
0 0 0 96488 152776 0 0 0 0 0 0 1 34248 115 3069 0 35 65
0 0 0 96488 152776 0 0 0 0 0 0 0 34375 123 3063 0 41 59
0 0 0 96488 152776 0 0 0 0 0 0 0 34282 127 3052 0 45 55
0 0 0 96488 152776 0 0 0 0 0 0 0 34342 566 3061 1 40 60
[root at obgp ~]# sysctl kern.polling
kern.polling.burst: 150
kern.polling.burst_max: 150
kern.polling.each_burst: 5
kern.polling.idle_poll: 0
kern.polling.user_frac: 50
kern.polling.reg_frac: 20
kern.polling.short_ticks: 2115
kern.polling.lost_polls: 345
kern.polling.pending_polls: 0
kern.polling.residual_burst: 0
kern.polling.handlers: 2
kern.polling.enable: 0
kern.polling.phase: 0
kern.polling.suspect: 135
kern.polling.stalled: 0
kern.polling.idlepoll_sleeping: 1
[root at obgp ~]# vmstat -i; sleep 1; vmstat -i
interrupt total rate
irq0: clk 152025885 999
irq1: atkbd0 801 0
irq8: rtc 19453315 127
irq11: fxp1 uhci0 122419028 804
irq12: fxp0 157346527 1034
irq14: ata0 93765 0
Total 451339321 2966
interrupt total rate
irq0: clk 152026925 999
irq1: atkbd0 801 0
irq8: rtc 19453448 127
irq11: fxp1 uhci0 122419028 804
irq12: fxp0 157346527 1034
irq14: ata0 93766 0
Total 451340495 2966
I tried that on a different machine with no shared interrupts.
Allmost the same results.
[root at obgp ~]# cd /usr/src/sys/i386/conf/
[root at obgp /usr/src/sys/i386/conf]# diff -u GENERIC ZIRZILE
--- GENERIC Tue Jul 25 10:55:46 2006
+++ ZIRZILE Tue Jul 25 10:55:44 2006
@@ -19,10 +19,8 @@
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.429.2.7.2.2 2006/05/01 00:15:12 scottl Exp $
machine i386
-cpu I486_CPU
-cpu I586_CPU
cpu I686_CPU
-ident GENERIC
+ident ZIRZILE
# To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" # Default places to look for devices.
@@ -62,6 +60,16 @@
options AHD_REG_PRETTY_PRINT # Print register bitfields in debug
# output. Adds ~215k to driver.
options ADAPTIVE_GIANT # Giant mutex is adaptive.
+
+options DEVICE_POLLING
+
+options ALTQ
+options ALTQ_CBQ
+options ALTQ_RED
+options ALTQ_RIO
+options ALTQ_HFSC
+options ALTQ_CDNR
+options ALTQ_PRIQ
device apic # I/O APIC
Any ideas ?
More information about the freebsd-questions
mailing list