kworker가 CPU를 차지하지만 이유를 모르겠습니다.

kworker가 CPU를 차지하지만 이유를 모르겠습니다.

저는 ARM 프로세서에서 debian Buster를 실행하는 맞춤형 헤드리스 Linux 시스템을 개발 중입니다.

리눅스 커널 5.10.72

하지만 최근에 CPU 사용량을 살펴보면 다음과 같습니다.

이미지에서는 kworker/u8:0+brcmf_wq/mmc1:0001:1이 CPU의 75%를 소비하고 있음을 보여줍니다.

나는 brcmf가 사용 중인 Wi-Fi 드라이버/칩과 관련이 있다고 생각합니다(확장 모듈은 Embedded Artist의 1DX M.2 모듈입니다.

시스템에서 작동하도록 시도했지만 할 수 없습니다.

활용도가 높은 다른 2개의 kworker는 가끔 표시되기 때문에 서로 관련이 없는 것 같지만 문제의 kworker의 CPU를 일부 제한하고 있는 것 같습니다.

이미지의 세 번째 부분은 대부분의 경우 보이는 모습입니다.

어떤 제안이 있으십니까?

Artem의 요청에 따라 편집됨

dmesg 출력: 많은 경고

편집하다:

달리고 난 후

echo l > /proc/sysrq-trigger
dmesg

새로운 출력은 다음과 같습니다:

[  875.933977] sysrq: Show backtrace of all active CPUs
[  875.939010] sysrq: CPU0:
[  875.939017] Call trace:
[  875.939031]  dump_backtrace+0x0/0x1d0
[  875.939038]  show_stack+0x18/0x24
[  875.939047]  showacpu+0x64/0x80
[  875.939056]  flush_smp_call_function_queue+0xd8/0x250
[  875.939063]  generic_smp_call_function_single_interrupt+0x14/0x20
[  875.939070]  ipi_handler+0xa0/0xd0
[  875.939078]  handle_percpu_devid_fasteoi_ipi+0x98/0xb0
[  875.939084]  __handle_domain_irq+0xb0/0x130
[  875.939092]  gic_handle_irq+0xc0/0x140
[  875.939098]  el1_irq+0xcc/0x180
[  875.939105]  _raw_spin_unlock_irqrestore+0x18/0x50
[  875.939113]  sdhci_request+0xac/0xcc
[  875.939121]  __mmc_start_request+0x68/0x140
[  875.939127]  mmc_start_request+0x94/0xc0
[  875.939133]  mmc_wait_for_req+0x70/0x100
[  875.939140]  mmc_io_rw_extended+0x1d4/0x2d0
[  875.939147]  sdio_io_rw_ext_helper+0x194/0x240
[  875.939153]  sdio_readl+0x30/0x60
[  875.939191]  brcmf_sdiod_readl+0x8c/0x9c [brcmfmac]
[  875.939217]  brcmf_sdio_intr_rstatus+0x44/0xec [brcmfmac]
[  875.939243]  brcmf_sdio_dataworker+0x114/0x2430 [brcmfmac]
[  875.939252]  process_one_work+0x1bc/0x340
[  875.939258]  worker_thread+0x70/0x434
[  875.939265]  kthread+0x13c/0x150
[  875.939271]  ret_from_fork+0x10/0x30

답변1

나는 이 질문에 대답하기 위해 유닉스 스택에 합류했습니다!

이 문제 때문에 Linux를 떠났기 때문에 이것은 나에게 정말 악몽입니다. 새 Linux(모든 배포판)를 설치할 때마다 첫 번째 부팅은 괜찮지만 10번 이상 재부팅한 후에는 동일한 문제가 발생합니다. Waker는 CPU 리소스를 100% 소모합니다. 예, 노트북이 너무 느려지고 느려지기 때문에 스트레스를 받습니다. 쓸 수 없는. 항상 그런 것은 아니고 5분마다 무작위로 발생합니다.

GPU나 CPU 문제 때문인 것 같습니다.

이 악몽을 없애기 위한 오랜 시간과 노력 끝에 마침내 이 문제가 발생한 이유를 알아냈습니다.

내 노트북의 WIFI/WLAN이 고장났습니다!

WIFI/WLAN 장치를 끄려면 이 명령을 실행한 후:

네트워크를 완전히 활성화/비활성화

nmcli networking off

무선 네트워크에만 해당

nmcli radio wifi off

두 경우 모두 다시 활성화해야 합니다.

모든 것이 정상으로 돌아왔습니다. 더 이상 WORKER의 CPU 사용량이 높지 않습니다!

WIFI뿐만 아니라 HDD, USB, Pendrive, Bluetooth도 고장 났을 것입니다.

죄송합니다. 제 영어 실력이 좋지 않습니다.:(

답변2

dts에서 cap-sdio-irq를 제거하고 CPU 사용량을 20%에서 0.5%로 고정했습니다.

답변3

드디어 수정사항을 찾았습니다. mengxp의 수정사항과 동일하지만 더 잘 설명하겠습니다.

Broadcom 드라이버가 제대로 작동하지 않았으며 주요 문제는 호스트 깨우기 인터럽트였습니다. 수백만 개의 인터럽트를 생성하지만 이 dts 매개변수는 선택 사항입니다.

그래서 제거함으로써

        // interrupt-parent = <&gpio1>;
        // interrupts = <13 IRQ_TYPE_LEVEL_LOW>; /* WL HOST WAKE COM pin 36*/
        // interrupt-names = "host-wake";

이러한 필드는 CPU 로드 시 장치 트리에서 사라집니다. 그 이후에는 Wi-Fi가 제대로 작동하는 것 같았습니다.

관련 정보