추가 SSD를 얻은 후 kworker가 CPU를 많이 사용함 - gpe11 인터럽트에서 높은 acpi가 마스크되거나 비활성화되어 시스템이 정지됨

추가 SSD를 얻은 후 kworker가 CPU를 많이 사용함 - gpe11 인터럽트에서 높은 acpi가 마스크되거나 비활성화되어 시스템이 정지됨

내 것은 약 5년 동안 Linux를 실행해 온 7년 된 Dell Inspiron 3542(Intel i5)입니다.

최근에는 HDD 슬롯에 추가 SSD를 장착하고 트레이를 이용해 HDD를 DVD 드라이브 위치로 옮겼습니다. 그런 다음 SSD에 Xubuntu 20.04를 새로 설치했습니다. PC에서 아무것도 실행되지 않는데도 CPU 0의 CPU 사용량이 높은(~75%) 것으로 나타났습니다. top 명령은 kworker 프로세스가 차지하는 CPU를 표시합니다.

   184 root      20   0       0      0      0 I  75.7   0.0  17:31.07 kworker/0:2-kacpid

여기에 게시된 다른 유사한 문제와 마찬가지로 일반적인 해결책은 어떤 GPE가 너무 많은 인터럽트를 유발하는지 찾아 비활성화하는 것입니다. 의 출력에는 grep . -r /sys/firmware/acpi/interrupts값이 높은 다음 행이 표시됩니다.

/sys/firmware/acpi/interrupts/gpe11:11640215  EN STS enabled      unmasked
/sys/firmware/acpi/interrupts/sci:11640301

gpe11을 비활성화하거나 차단하면 echo mask > /sys/firmware/acpi/interrupts/gpe11시스템이 정지됩니다(모니터, 키보드 및 마우스가 응답하지 않게 되고, 소리가 재생 중이면 DJ가 뭔가를 하는 것처럼 소리가 반복되기 시작합니다).

sci를 비활성화하거나 차단하면 gpe11 및 sci 인터럽트가 0으로 재설정되지만 다시 증가하기 시작합니다. CPU 사용량에 영향을 주지 않으며 CPU 사용량이 높게 유지됩니다.

기타 실험 및 관찰:

  • 부팅 시 검은색 화면이 나타나는 acpi=off등 의 일반적인 커널 매개변수 변경acpi_mask_gpe=0x11

  • 이 문제는 Live USB에서 부팅된 운영 체제에도 존재합니다.

  • Xubuntu 18.04 및 최신 버전의 Arch Linux Live USB에 문제가 여전히 존재합니다.

  • 출력은 cat /proc/interrupts다음과 같습니다(acpi로 잘림).

             CPU0       CPU1       CPU2       CPU3       
    0:          6          0          0          0   IO-APIC   2-edge      timer
    1:       9379          0          0          0   IO-APIC   1-edge      i8042
    8:          0          1          0          0   IO-APIC   8-edge      rtc0
    9:          0   21362967          0          0   IO-APIC   9-fasteoi   acpi
    
  • dmesg 관련 출력 echo l > /proc/sysrq-trigger은 다음과 같습니다.

    [ 2174.058304] CPU: 0 PID: 184 Comm: kworker/0:2 Not tainted 5.11.0-27-generic #29~20.04.1-Ubuntu
    [ 2174.058305] Hardware name: Dell Inc. Inspiron 3542/0926J6, BIOS A03 05/27/2014
    [ 2174.058307] Workqueue: kacpid acpi_os_execute_deferred
    [ 2174.058309] RIP: 0010:acpi_ns_search_one_scope+0x16a/0x208
    [ 2174.058310] Code: 49 89 1f 45 31 c0 b9 10 00 00 00 bf 74 00 00 00 48 c7 c2 b0 e8 ca a0 48 c7 c6 90 e8 ca a0 e8 f3 d9 00 00 31 c0 e9 8f 00 00 00 <48> 8b 5b 20 e9 4c ff ff ff f6 05 7d dc 19 01 04 74 55 f6 05 c3 34
    [ 2174.058312] RSP: 0018:ffffb5850051fb80 EFLAGS: 00000212
    [ 2174.058313] RAX: 0000000037314547 RBX: ffff8947808f57b0 RCX: 0000000000000010
    [ 2174.058314] RDX: ffffffffa0cae8b0 RSI: ffffffffa0cae890 RDI: 0000000000000042
    [ 2174.058315] RBP: ffffb5850051fbb0 R08: 0000000000000005 R09: 0000000000000003
    [ 2174.058317] R10: 0000000000000000 R11: 0000000000000000 R12: ffffffffa1a7e880
    [ 2174.058318] R13: ffff8947801d1b40 R14: 0000000000000000 R15: ffffb5850051fc60
    [ 2174.058319] FS:  0000000000000000(0000) GS:ffff8947aba00000(0000) knlGS:0000000000000000
    [ 2174.058320] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
    [ 2174.058321] CR2: 00007f4c9b5e4d9c CR3: 0000000069074001 CR4: 00000000001706f0
    [ 2174.058322] Call Trace:
    [ 2174.058323]  acpi_ns_search_and_enter+0x347/0x4ca
    [ 2174.058325]  acpi_ns_lookup+0x63e/0x866
    [ 2174.058326]  acpi_ps_get_next_namepath+0xbc/0x35a
    [ 2174.058327]  acpi_ps_get_next_arg+0x69d/0x79a
    [ 2174.058328]  ? acpi_ut_trace_ptr+0x2b/0x71
    [ 2174.058329]  acpi_ps_parse_loop+0x4be/0x924
    [ 2174.058330]  acpi_ps_parse_aml+0x1af/0x550
    [ 2174.058331]  acpi_ps_execute_method+0x208/0x2ca
    [ 2174.058332]  acpi_ns_evaluate+0x34e/0x4f0
    [ 2174.058333]  acpi_ev_asynch_execute_gpe_method+0xc0/0x15e
    [ 2174.058334]  acpi_os_execute_deferred+0x1a/0x30
    [ 2174.058335]  process_one_work+0x220/0x3c0
    [ 2174.058336]  worker_thread+0x4d/0x3f0
    [ 2174.058337]  kthread+0x114/0x150
    [ 2174.058338]  ? process_one_work+0x3c0/0x3c0
    [ 2174.058339]  ? kthread_park+0x90/0x90
    [ 2174.058340]  ret_from_fork+0x22/0x30
    
  • sudo dmidecodefor의 출력은 0x0011다음과 같습니다. 0x0011해당하는지 확실하지 않습니다 gpe11. 이것이 GPE 번호 매기기 작동 방식이 아닌 경우 전체 출력을 제공할 수 있습니다.

    Handle 0x0011, DMI type 10, 6 bytes
    On Board Device Information
        Type: Video
        Status: Enabled
        Description: Mobile Intel HD Graphics
    
  • SSD 및 Live USB에서 HDD 캐디를 제거하려고 시도했지만 시스템이 전혀 부팅되지 않았습니다(커널 패닉 발생).

  • 캐디의 스위치를 켜봤지만 캐디를 제거한 것과 동일한 결과

  • BIOS 업데이트를 시도했지만 실패했습니다. Dell은 업데이트용 EXE 파일만 제공하므로 이는 별도의 문제입니다.

답변1

직접 해결했어요 :)

어떻게든 하드 드라이브를 제거한 상태에서 시스템을 부팅할 수 있습니다. 이것은 무작위로 시도할 때 발생합니다. 가장 최근에는 라이브 USB에서 Void Linux를 부팅했습니다. CPU 사용량이 거의 0으로 돌아갑니다.

그런 다음 캐디의 스위치를 켜려고 시도했는데 이제 시스템 부팅 시 CPU 사용량이 0에 가까워졌습니다.

관련 정보