나는 최근에 내 CPU 중 하나가 약 85-90%의 유휴 상태이고 top
사용량에 따라 인터럽트로 인해 발생한다는 것을 알았습니다.이 질문처럼나는 이것을 dmesg
일반 cat
핑 과 함께 사용하여 /proc/interrupts
다음을 발견했습니다.
CPU0 CPU1 CPU2 CPU3
0: 17 0 0 0 IR-IO-APIC 2-edge timer
1: 11548 0 2429 0 IR-IO-APIC 1-edge i8042
8: 0 0 0 1 IR-IO-APIC 8-edge rtc0
9: 7 16 0 0 IR-IO-APIC 9-fasteoi acpi
12: 14530 108887 0 0 IR-IO-APIC 12-edge i8042
16: 78464100 0 0 11702812 IR-IO-APIC 16-fasteoi idma64.0, i2c_designware.0, i801_smbus
120: 0 0 0 0 DMAR-MSI 0-edge dmar0
121: 0 0 0 0 DMAR-MSI 1-edge dmar1
보시다시피, IRQ #16은 미친 듯이 인터럽트를 보내고 있습니다(CPU가 S3에서 깨어날 때마다 다른 CPU에 스팸을 보내기 시작하는 것 같습니다). 또한 내 터치패드가 동일한 IRQ를 사용하고 I2C 모드가 활성화된 경우(또는고급의내 BIOS에 따르면 모드) 무작위로 작동이 중지되고 다음 메시지가 표시됩니다(에서 dmesg
).
[ 167.851139] irq 16: nobody cared (try booting with the "irqpoll" option)
[ 167.851158] CPU: 2 PID: 3874 Comm: firefox Not tainted 4.15.3-300.fc27.x86_64 #1
[ 167.851160] Hardware name: Acer Aspire E5-575/Ironman_SK , BIOS V1.04 04/26/2016
[ 167.851162] Call Trace:
[ 167.851171] <IRQ>
[ 167.851185] dump_stack+0x5c/0x85
[ 167.851193] __report_bad_irq+0x30/0xc0
[ 167.851196] note_interrupt+0x235/0x280
[ 167.851198] handle_irq_event_percpu+0x51/0x70
[ 167.851201] handle_irq_event+0x27/0x50
[ 167.851204] handle_fasteoi_irq+0x6b/0x120
[ 167.851209] handle_irq+0xaf/0x120
[ 167.851214] do_IRQ+0x41/0xc0
[ 167.851219] common_interrupt+0xa2/0xa2
[ 167.851222] </IRQ>
[ 167.851224] RIP: 0010:_raw_spin_lock+0x10/0x20
[ 167.851226] RSP: 0000:ffffa85a857dfdd0 EFLAGS: 00000246 ORIG_RAX: ffffffffffffffdb
[ 167.851230] RAX: 0000000000000000 RBX: ffff8d0a268930c8 RCX: 00003ffffffff000
[ 167.851231] RDX: 0000000000000001 RSI: 8000000000000025 RDI: ffffd21648d7ca70
[ 167.851232] RBP: ffffd2164892e100 R08: 0000000000000000 R09: 0000000000171800
[ 167.851233] R10: 0000000000271800 R11: 0000000000001000 R12: 0000000000000000
[ 167.851234] R13: 8000000224b84867 R14: ffffd21648d7ca70 R15: ffff8d0a35f29810
[ 167.851244] __handle_mm_fault+0xa4c/0x1290
[ 167.851249] handle_mm_fault+0xaa/0x1f0
[ 167.851255] __do_page_fault+0x25d/0x4e0
[ 167.851262] ? SyS_mmap_pgoff+0xfb/0x250
[ 167.851264] do_page_fault+0x32/0x110
[ 167.851267] ? page_fault+0x36/0x60
[ 167.851269] page_fault+0x4c/0x60
[ 167.851272] RIP: 0033:0x7ff86dc0b205
[ 167.851273] RSP: 002b:00007ffe6493e888 EFLAGS: 00010206
[ 167.851276] handlers:
[ 167.851291] [<0000000061f0cd43>] idma64_irq [idma64]
[ 167.851296] [<000000006909bb35>] i2c_dw_isr
[ 167.851302] [<00000000ee17d26d>] i801_isr [i2c_i801]
[ 167.851304] Disabling IRQ #16
하드웨어 문제인가요? 어떡해?
마지막으로 문제를 자세히 조사할 기회가 있었고 lspci -nnkv
다음을 실행하여 2개의 장치가 IRQ 16을 사용하고 있음을 발견했습니다.
00:15.0 Signal processing controller [1180]: Intel Corporation Sunrise Point-LP Serial IO I2C Controller #0 [8086:9d60] (rev 21)
Subsystem: Acer Incorporated [ALI] Device [1025:1094]
Flags: fast devsel, IRQ 16
Memory at a132b000 (64-bit, non-prefetchable) [size=4K]
Capabilities: [80] Power Management version 3
Capabilities: [90] Vendor Specific Information: Len=14 <?>
Kernel driver in use: intel-lpss
Kernel modules: intel_lpss_pci
그리고:
00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-LP SMBus [8086:9d23] (rev 21)
Subsystem: Acer Incorporated [ALI] Device [1025:1094]
Flags: medium devsel, IRQ 16
Memory at a132e000 (64-bit, non-prefetchable) [size=256]
I/O ports at 4040 [size=32]
Kernel driver in use: i801_smbus
Kernel modules: i2c_i801
intel_lpss_pci
모듈을 제거하면 문제가 해결되는 것 같지만 rmmod intel_lpss_pci
당연히 터치패드가 작동하지 않습니다. 하지만 CPU를 항상 100%로 유지하는 것보다 이것이 더 낫다고 생각합니다.
답변1
일시 중지/해제 주기 후에 다시 로드하려면 PM 일시 중지 목록에 추가해야 할 수도 있습니다.
SUSPEND_MODULES="brcmfmac intel_lpss_pci intel_lpss_acpi"