I've got a problem. When I suspend my laptop (Lenovo X100e, dmesg below), it suspends just fine, and resumes well too (thanks for that!). But after resume I see high interrupt rates (like 77%) in top and vmstat, it feels slower and fan never stops. Any ideas?
% top: CPU0 states: 0.8% user, 0.0% nice, 0.6% system, 83.6% interrupt, 15.0% idle CPU1 states: 3.6% user, 0.0% nice, 3.4% system, 0.0% interrupt, 93.0% idle % vmstat -iv interrupt total rate irq0/clock 185246 199 irq0/ipi 225445 242 irq0/ipi_nop 216556 232 irq0/ipi_flushfp 32 0 irq0/ipi_synchfp 8746 9 irq0/ipi_mtrr 1 0 irq0/ipi_setperf 110 0 irq144/acpi0 1160 1 irq99/re0 6380 6 irq97/ahci0 11188 12 irq98/ohci0 1 0 irq98/ohci1 1 0 irq100/ohci2 1 0 irq101/ehci1 260 0 irq98/azalia0 25407 27 irq145/pckbc0 3023 3 irq146/pckbc0 3826 4 Total 687383 739 (I hacked ipi.c a bit to get this output, patch below). Index: amd64/amd64/ipi.c =================================================================== RCS file: /cvs/src/sys/arch/amd64/amd64/ipi.c,v retrieving revision 1.10 diff -u -p -r1.10 ipi.c --- amd64/amd64/ipi.c 27 Dec 2010 20:22:23 -0000 1.10 +++ amd64/amd64/ipi.c 16 Oct 2011 21:55:18 -0000 @@ -101,6 +101,7 @@ void x86_ipi_handler(void) { extern struct evcount ipi_count; + extern struct evcount ipi_perfunc[X86_NIPI]; struct cpu_info *ci = curcpu(); u_int32_t pending; int bit; @@ -111,6 +112,7 @@ x86_ipi_handler(void) if (pending & (1<<bit)) { pending &= ~(1<<bit); (*ipifunc[bit])(ci); + ipi_perfunc[bit].ec_count++; ipi_count.ec_count++; } } Index: amd64/amd64/lapic.c =================================================================== RCS file: /cvs/src/sys/arch/amd64/amd64/lapic.c,v retrieving revision 1.27 diff -u -p -r1.27 lapic.c --- amd64/amd64/lapic.c 20 Sep 2010 06:33:46 -0000 1.27 +++ amd64/amd64/lapic.c 16 Oct 2011 21:55:18 -0000 @@ -64,6 +64,7 @@ struct evcount clk_count; #ifdef MULTIPROCESSOR struct evcount ipi_count; +struct evcount ipi_perfunc[X86_NIPI]; #endif void lapic_delay(int); @@ -247,6 +248,15 @@ lapic_boot_init(paddr_t lapic_base) evcount_attach(&clk_count, "clock", &clk_irq); #ifdef MULTIPROCESSOR evcount_attach(&ipi_count, "ipi", &ipi_irq); + /* per function counters */ + evcount_attach(&ipi_perfunc[0], "ipi_halt", &ipi_irq); + evcount_attach(&ipi_perfunc[1], "ipi_nop", &ipi_irq); + evcount_attach(&ipi_perfunc[2], "ipi_flushfpu", &ipi_irq); + evcount_attach(&ipi_perfunc[3], "ipi_synchfpu", &ipi_irq); + evcount_attach(&ipi_perfunc[4], "ipi_NULL", &ipi_irq); + evcount_attach(&ipi_perfunc[5], "ipi_mtrr", &ipi_irq); + evcount_attach(&ipi_perfunc[6], "ipi_setperf", &ipi_irq); + evcount_attach(&ipi_perfunc[7], "ipi_ddb", &ipi_irq); #endif } % dmesg OpenBSD 5.0-current (kernel) #31: Mon Oct 17 01:35:15 MSK 2011 r...@watashi.plhk.ru:/usr/obj/kernel real mem = 1876754432 (1789MB) avail mem = 1812717568 (1728MB) mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.5 @ 0xf0920 (43 entries) bios0: vendor LENOVO version "6XET47WW (1.30 )" date 12/30/2010 bios0: LENOVO 3508RL6 acpi0 at bios0: rev 2 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP TCPA SSDT APIC MCFG HPET SLIC acpi0: wakeup devices PB5_(S5) OHC0(S3) OHC1(S3) OHC2(S3) OHC3(S3) OHC4(S3) P2P_(S5) LID_(S3) acpitimer0 at acpi0: 3579545 Hz, 32 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: AMD Athlon(tm) Neo X2 Dual Core Processor L335, 1596.97 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW cpu0: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 256KB 64b/line 16-way L2 cache cpu0: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative cpu0: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative cpu0: apic clock running at 199MHz cpu1 at mainbus0: apid 1 (application processor) cpu1: AMD Athlon(tm) Neo X2 Dual Core Processor L335, 1596.00 MHz cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,HTT,SSE3,CX16,NXE,MMXX,FFXSR,LONG,3DNOW2,3DNOW cpu1: 64KB 64b/line 2-way I-cache, 64KB 64b/line 2-way D-cache, 256KB 64b/line 16-way L2 cache cpu1: ITLB 32 4KB entries fully associative, 8 4MB entries fully associative cpu1: DTLB 32 4KB entries fully associative, 8 4MB entries fully associative ioapic0 at mainbus0: apid 2 pa 0xfec00000, version 21, 24 pins acpimcfg0 at acpi0 addr 0xe0000000, bus 0-3 acpihpet0 at acpi0: 14318180 Hz acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus 2 (PB5_) acpiprt2 at acpi0: bus 4 (P2P_) acpiprt3 at acpi0: bus 1 (AGP_) acpiec0 at acpi0 acpicpu0 at acpi0: C3, C2, PSS acpicpu1 at acpi0: PSS acpitz0 at acpi0: critical temperature is 92 degC acpibtn0 at acpi0: PWRB acpibtn1 at acpi0: SLPB acpithinkpad0 at acpi0 acpiac0 at acpi0: AC unit online acpibat0 at acpi0: BAT1 model "42T4785" serial 958 type LION oem "SANYO" acpibtn2 at acpi0: LID_ cpu0: PowerNow! K8 1596 MHz: speeds: 1600 800 MHz pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "AMD RS780 Host" rev 0x00 ppb0 at pci0 dev 1 function 0 "AMD RS780 PCIE" rev 0x00 pci1 at ppb0 bus 1 vga1 at pci1 dev 5 function 0 "ATI Radeon HD 3200" rev 0x00 wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) radeondrm0 at vga1: apic 2 int 18 drm0 at radeondrm0 ppb1 at pci0 dev 5 function 0 "AMD RS780 PCIE" rev 0x00: msi pci2 at ppb1 bus 2 re0 at pci2 dev 0 function 0 "Realtek 8168" rev 0x03: RTL8168D/8111D (0x2800), apic 2 int 17, address c8:0a:a9:cc:b0:01 rgephy0 at re0 phy 7: RTL8169S/8110S PHY, rev. 2 ahci0 at pci0 dev 17 function 0 "ATI SBx00 SATA" rev 0x00: apic 2 int 22, AHCI 1.1 scsibus0 at ahci0: 32 targets sd0 at scsibus0 targ 0 lun 0: <ATA, WDC WD2500BEVT-0, 02.0> SCSI3 0/direct fixed naa.50014ee204a69fb1 sd0: 238475MB, 512 bytes/sector, 488397168 sectors ohci0 at pci0 dev 18 function 0 "ATI SB700 USB" rev 0x00: apic 2 int 16, version 1.0, legacy support ohci1 at pci0 dev 18 function 1 "ATI SB700 USB" rev 0x00: apic 2 int 16, version 1.0, legacy support ehci0 at pci0 dev 18 function 2 "ATI SB700 USB2" rev 0x00: apic 2 int 17 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 "ATI EHCI root hub" rev 2.00/1.00 addr 1 ohci2 at pci0 dev 19 function 0 "ATI SB700 USB" rev 0x00: apic 2 int 18, version 1.0, legacy support ehci1 at pci0 dev 19 function 2 "ATI SB700 USB2" rev 0x00: apic 2 int 19 usb1 at ehci1: USB revision 2.0 uhub1 at usb1 "ATI EHCI root hub" rev 2.00/1.00 addr 1 piixpm0 at pci0 dev 20 function 0 "ATI SBx00 SMBus" rev 0x3c: SMI iic0 at piixpm0 spdmem0 at iic0 addr 0x51: 2GB DDR2 SDRAM non-parity PC2-5300CL5 SO-DIMM azalia0 at pci0 dev 20 function 2 "ATI SBx00 HD Audio" rev 0x00: apic 2 int 16 azalia0: codecs: Conexant/0x5066 audio0 at azalia0 pcib0 at pci0 dev 20 function 3 "ATI SB700 ISA" rev 0x00 ppb2 at pci0 dev 20 function 4 "ATI SB600 PCI" rev 0x00 pci3 at ppb2 bus 4 pchb1 at pci0 dev 24 function 0 "AMD AMD64 0Fh HyperTransport" rev 0x00 pchb2 at pci0 dev 24 function 1 "AMD AMD64 0Fh Address Map" rev 0x00 pchb3 at pci0 dev 24 function 2 "AMD AMD64 0Fh DRAM Cfg" rev 0x00 kate0 at pci0 dev 24 function 3 "AMD AMD64 0Fh Misc Cfg" rev 0x00: core rev BH-G2 usb2 at ohci0: USB revision 1.0 uhub2 at usb2 "ATI OHCI root hub" rev 1.00/1.00 addr 1 usb3 at ohci1: USB revision 1.0 uhub3 at usb3 "ATI OHCI root hub" rev 1.00/1.00 addr 1 usb4 at ohci2: USB revision 1.0 uhub4 at usb4 "ATI OHCI root hub" rev 1.00/1.00 addr 1 isa0 at pcib0 isadma0 at isa0 pckbc0 at isa0 port 0x60/5 pckbd0 at pckbc0 (kbd slot) pckbc0: using irq 1 for kbd slot wskbd0 at pckbd0: console keyboard, using wsdisplay0 pms0 at pckbc0 (aux slot) pckbc0: using irq 12 for aux slot wsmouse0 at pms0 mux 0 wsmouse1 at pms0 mux 0 pms0: Synaptics touchpad, firmware 7.4 pcppi0 at isa0 port 0x61 spkr0 at pcppi0 mtrr: Pentium Pro MTRR support umass0 at uhub1 port 1 configuration 1 interface 0 "Generic USB2.0-CRW" rev 2.00/58.88 addr 2 umass0: using SCSI over Bulk-Only scsibus1 at umass0: 2 targets, initiator 0 sd1 at scsibus1 targ 1 lun 0: <Generic-, Multi-Card, 1.00> SCSI0 0/direct removable serial.0bda0158114173400000 uvideo0 at uhub1 port 2 configuration 1 interface 0 "Image Processor Integrated Camera" rev 2.00/30.08 addr 3 video0 at uvideo0 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets root on sd0a (ef779c8e627ac39e.a) swap on sd0b dump on sd0b sd2 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed sd2: 206221MB, 512 bytes/sector, 422340976 sectors sd1 detached scsibus1 detached umass0 detached umass0 at uhub1 port 1 configuration 1 interface 0 "Generic USB2.0-CRW" rev 2.00/58.88 addr 2 umass0: using SCSI over Bulk-Only scsibus1 at umass0: 2 targets, initiator 0 sd1 at scsibus1 targ 1 lun 0: <Generic-, Multi-Card, 1.00> SCSI0 0/direct removable serial.0bda0158114173400000 video0 detached uvideo0 detached uvideo0 at uhub1 port 2 configuration 1 interface 0 "Image Processor Integrated Camera" rev 2.00/30.08 addr 3 video0 at uvideo0 -- Alexander Polakov | plhk.ru