SMP, ACPI and interrupt storm
Tech Lab Manager
tech at liveoaksf.org
Thu Jan 31 11:35:58 PST 2008
On Jan 31, 2008, at 10:48 AM, Nate Lawson wrote:
> Tech Lab Manager wrote:
>> Sorry for the cross-post from freebsd-smb.
>> Building 6.3-RELEASE and 7.0-RC1 on dual Xeon (4 CPU) boxes:
>> options SMP
>> device apic
>> SMP kernel builds fine, all 4 CPUs launch on reboot.
>> But I get a TON of interrupts from acpi0 -- about 67,000 per second
>> according to vmstat -i. With system at idle and almost no services
>> running, here is output of top -S:
>> last pid: 877; load averages: 1.18, 0.48, 0.19
>> 75 processes: 6 running, 54 sleeping, 15 waiting
>> CPU states: 0.0% user, 0.0% nice, 0.2% system, 22.4%
>> interrupt, 77.4% idle
>> Mem: 31M Active, 12M Inact, 28M Wired, 16K Cache, 15M Buf, 3822M Free
>> Swap: 4096M Total, 4096M Free
>> PID USERNAME THR PRI NICE SIZE RES STATE C TIME WCPU
>> COMMAND
>> 10 root 1 171 52 0K 8K RUN 3 1:11 99.18%
>> idle: cpu3
>> 13 root 1 171 52 0K 8K CPU0 0 1:10 98.88%
>> idle: cpu0
>> 12 root 1 171 52 0K 8K CPU1 1 1:09 98.78%
>> idle: cpu1
>> 21 root 1 -52 -171 0K 8K CPU2 2 0:54 87.24%
>> irq9: acpi0
>> 11 root 1 171 52 0K 8K RUN 2 0:17 11.19%
>> idle: cpu2
>> Notice high load and interrupt % of CPU.
>> If turn off ACPI (e.g. set hint.apic.0.disabled=1 in /boot/
>> loader.conf),
>> the interrupt storm ceases, but then I'm only running on one CPU.
>
> That doesn't turn off acpi, that turns of the APIC (interrupt
> controller). Try:
> hint.acpi.0.disabled=1
Sorry, my mistake in writing ACPI above -- I *was* trying to turn off
apic, based on a note in the FreeBSD handbook.
Disabling ACPI as you suggest above has the same effect as turning
off APIC: the interrupt storm is disabled but only one CPU is launched.
>
>> The BIOS ACPI settings are all Enabled. Hyperthreading is Enabled.
>> These machines have been running RedHat Enterprise 5.0 with full
>> multiprocessor support.
>
> This looks like a failure to sleep in C1 (hlt). Someone else
> reported this probably earlier, but all debugging showed the
> inexplicable -- the HLT instruction was being executed but just did
> not work (returned immediately).
>
> There will be a new 7.0 build that fixes one interrupt storm
> related to level-triggered GPEs. If you can cvsup your 7.0 branch
> (RELENG_7_0) and retry, that might be helpful to see if it also
> fixes your problem.
okay, I'm on RC1, will switch to RELENG and report back.
I'm not sure if this is a red herring, but acpidump -t reports:
Type=INT Override
BUS=0
IRQ=0
INTR=2
Flags={Polarity=conforming, Trigger=conforming}
which looks wrong on several counts (IRQ, INTR should be 9,
Trigger=level). dmesg even says:
"MADT: Forcing active-low polarity and level trigger for SCI"
Thanks for your help.
John
>
> --
> Nate
--
John Berliner
Live Oak School
More information about the freebsd-acpi
mailing list