저는 ARM 프로세서에서 debian Buster를 실행하는 맞춤형 헤드리스 Linux 시스템을 개발 중입니다.
리눅스 커널 5.10.72
하지만 최근에 CPU 사용량을 살펴보면 다음과 같습니다.
나는 brcmf가 사용 중인 Wi-Fi 드라이버/칩과 관련이 있다고 생각합니다(확장 모듈은 Embedded Artist의 1DX M.2 모듈입니다.
시스템에서 작동하도록 시도했지만 할 수 없습니다.
활용도가 높은 다른 2개의 kworker는 가끔 표시되기 때문에 서로 관련이 없는 것 같지만 문제의 kworker의 CPU를 일부 제한하고 있는 것 같습니다.
이미지의 세 번째 부분은 대부분의 경우 보이는 모습입니다.
어떤 제안이 있으십니까?
Artem의 요청에 따라 편집됨
편집하다:
달리고 난 후
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가 제대로 작동하는 것 같았습니다.