Kworker, 그게 무엇이며 왜 그렇게 많은 CPU를 사용합니까?


136

최근 Kubuntu Natty Beta 1로 업그레이드했으며 프로세스 kworker에 많은 문제가 있습니다. 현재 CPU의 거의 절반을 사용합니다. 또한 이상하게도 USB 포트에 영향을 미치는 것 같습니다. USB 드라이브를 꽂을 때마다 프로세스 kworker 가 하이퍼 드라이브로 들어가서 작동하지 않습니다.

나는 버그 신고에 대해 생각했지만 kworker 가 무엇인지에 대한 합리적인 설명조차 찾지 못했기 때문에 내가 먼저 알아야한다고 생각했습니다.


이상하게도 kworker가 실행되고 10 % 깨우기에는 Kubuntu 프로그램이 설치되어 있지 않습니다. Alos Nepomuk가 설치되지 않았습니다.
dago

1
afrazier의 응답으로 커널과 관련이 있다고 생각합니다 (그래서 kworker의 k는 커널입니다). 그래서 우분투 컴퓨터에서 kworker를 실행 해야하는 이유입니다.
davorao

1
이 답변은 kworker의 활동을 파악하는 데 도움이 될 수 있습니다. unix.stackexchange.com/questions/22851/…
anarcat

1
마지막 OS 업데이트를 수행해서는 안됩니다. 운이 좋으면 다음 사람이 고칠 것입니다.
nobar

답변:


109

"kworker"는 커널 작업자 스레드에 대한 플레이스 홀더 프로세스이며, 특히 인터럽트, 타이머, I / O 등이있는 경우 커널에 대한 실제 처리의 대부분을 수행합니다. 이는 일반적으로 할당 된 대부분의 " 시스템 "프로세스 실행 시간. 어떤 식 으로든 시스템에서 안전하게 제거 할 수있는 것은 아니며 nepomuk 또는 KDE와는 전혀 관련이 없습니다 (이러한 프로그램이 시스템 호출을 수행하여 커널이 수행해야 할 수도 있음을 제외하고).

2.6.36 개발 ( 예 : 토론 ) 동안 시작되는 비교적 유휴 상태 인 시스템에 대한 과도한 kworker 활동에 대한 보고와 2.6.38에 대한 혼동 및 문제에 대한보고가 많았습니다 (많은 보고서에는 "Natty"라는 단어가 포함되어 있음). 이 사람들은 2.6.35 (Ubuntu 10.10에서 배포)와 2.6.38 (Ubuntu 11.04에서 배포) 사이의 커널을 사용하지 않았습니다.

한 사용자 또는 다른 사용자를 위해 이것을 "고정한"많은 보고서를 발견했습니다. 대부분의 "수정"은 다양한 종류의 커널 업데이트와 관련이있는 것 같습니다. 특정 문제에 대한 업데이트를 추적 할 수있는 경우, 잘못 작동하지 않도록 패치 된 일부 드라이버 또는 커널 서비스 인 것 같습니다. 과도한 kworker 사용으로 관찰됩니다.

과도한 kworker 활동으로 인해 시스템을 사용할 수없는 경우 더 적은 수의 작업을 수행하는 것이 좋습니다. 아무것도하지 않는다고 생각되면 장기 실행 서비스 또는 타이머 (RSS 리더, 메일 리더, 파일 인덱서, 활동 추적기 등)를 종료하십시오. 그래도 문제가 해결되지 않으면 다시 시작해보십시오. 시스템이 사전 부팅 환경에서 하드웨어를 활성화 또는 비활성화 할 수 있으면 사용하지 않는 하드웨어를 끄십시오. 작업을 수행하기 전에 다시 시작할 때마다 문제가 발생하면 설치 제거를 시도 할 수 있지만이 시점에서이 과부하를 일으키는 것으로 보이는 특정 응용 프로그램을 추적하기 위해 syscall 프로파일 링 도구를 실행하고 싶을 것입니다.

특정 시스템이 향후 커널 업그레이드를 통해이 동작을 표현하지 못하게되기를 바랍니다 (그리고 가장 일반적인 원인은 많이 해결되었습니다).


1
로그인 문제가 느리다고 생각합니다. askubuntu.com/a/484856/46437
Aquarius Power

1
아마도 이것은 불필요하지만 매우 명확하게 표현 된 답변에 대한 의견입니다. 잘 표현 된 영어입니다.
Jon Carter

81

kworker 란 무엇입니까? kworker"작업"(시스템 호출 처리)을 수행하는 Linux 커널 프로세스를 의미합니다. 프로세스 목록에 몇 가지를 가질 수 있습니다. kworker/0:1첫 번째 CPU 코어에 kworker/1:1있는 것과 두 번째 CPU 코어에 있는 것입니다.

kworker가 왜 CPU를 사용합니까? kworker가 CPU를 낭비하는 이유를 찾으려면 CPU 역 추적을 생성 할 수 있습니다. 프로세서로드 ( top또는 그 와 함께 )를보고로드가 많은 순간에 kworker실행 echo l > /proc/sysrq-trigger하여 역 추적을 생성하십시오. (우분투에서는으로 로그인해야합니다 sudo -s). 이 작업을 여러 번 수행 한 다음 dmesg출력 끝에서 역 추적을보십시오 . CPU 백 트레이스에서 자주 발생하는 것을 확인하면 문제의 원인을 알 수 있습니다.

예 : e1000e. 필자의 경우 거의 매번 이와 같은 역 추적을 발견했습니다.

Call Trace:
 delay_tsc+0x4a/0x80
 __const_udelay+0x2c/0x30
 e1000_acquire_swflag_ich8lan+0xa2/0x240 [e1000e]
 e1000e_read_phy_reg_igp+0x29/0x80 [e1000e]
 e1000e_phy_has_link_generic+0x85/0x120 [e1000e]
 e1000_check_for_copper_link_ich8lan+0x48/0x930 [e1000e]
 e1000e_has_link+0x55/0xd0 [e1000e]
 e1000_watchdog_task+0x5e/0x960 [e1000e]

e1000e이더넷 카드 모듈에 문제가 있음을 암시 하고 실제로 sudo rmmod e1000e높은 CPU로드가 즉시 사라지게 합니다 [ e1000e bug # 26 ].


4
echo l > /proc/sysrq-triggersysrq: SysRq : This sysrq operation is disabled.슬프게도 proxmox에서 작동하지 않는 것 같습니다 .
hak8or

1
sysrq는 sysctl -w kernel.sysrq = 1로 다시 활성화해야합니다. askubuntu.com/questions/911522/…
Sebastien

e1000이 문제를 일으킨다는 것을 어떻게 이해 했습니까? 반복해서 유지 되었기 때문에?
onurcanbektas

@onurcanbektas 예 – 가장 자주 반복되는 결과가 가장 가능성이 높은 원인입니다. 역 추적이 스폿이기 때문에 CPU가 혼잡 한 동안 사용중인 CPU를 확인합니다.
tanius

70

kworker가 왜 CPU를 계속 사용합니까 (계속)? 내 다른 대답에 대한 대안으로 Perf는 커널 작업이 CPU에 어떤 영향을 미치는지 분석하는보다 전문적인 방법입니다.

  1. 설치 perf:

    sudo apt-get install linux-tools-common linux-tools-3.11.0-15-generic
    

    (두 번째 패키지는 커널 버전과 일치해야합니다. 먼저 설치 하고 필요한 패키지를 알려주기 위해 linux-tools-common호출 perf할 수 있습니다.)

  2. 모든 CPU에서 약 10 초의 역 추적을 기록하십시오.

    sudo perf record -g -a sleep 10
    
  3. 녹음을 분석하십시오.

    sudo perf report
    

    (함께 콜 그래프 탐색 , , , Enter).


2
내 시스템에서 VMware 가상 머신 내부에서 실행 perf하면서 sd_mod커널 모듈 까지 문제를 추적했습니다 . vmx파일 에서 SCSI를 비활성화 하면 모듈이로드되지 않고 시스템이 정상 속도로 돌아 왔습니다.scsi0.present = "FALSE"
feklee

E : linux-tools-3.11.0-15-generic 패키지를 찾을 수 없습니다. E : 'linux-tools-3.11.0-15-generic'글로브로 패키지를 찾을 수 없습니다. E : 정규식으로 패키지를 찾을 수 없습니다. '리눅스 도구 - 3.11.0-15 제네릭'
패디

@Paddy : 답을 다시 확인하십시오 :-) "[linux-tools-*-generic] 패키지는 커널 버전과 일치해야합니다. 먼저 linux-tools-common을 설치하고 perf를 호출하여 어떤 패키지인지 알려주십시오. 필요합니다. "
tanius

8

모두에게 알리기 위해. 나는이 문제에 부딪 쳤고 perf (좋은 도구)를 설치했으며 잠금 및 XFS를 회전시키는 것을 지적했습니다. NFS를 가리 켰습니다. 그런 다음 마운트 중 하나에 공간이 없다는 것을 깨달았습니다. 공간을 확보하면 kworker CPU가 0으로 떨어졌습니다.

따라서 이것은 바쁜 NFS 서버에서 드라이브 공간이 부족한 증상 일 수 있습니다!


1
특정 virtualbox가 실행 중일 때 kworker 붕괴가 발생했습니다. 파일 공유를 위해 호스트에서 NFS를 실행 중이었습니다. 그러나 거의 다 찼습니다. NFS 마운트를 해제하면 문제가 "해결되었습니다". sshfs 마운트와 공유 할 것 같습니다.
Programster

4

최근에 Ubuntu Natty를 외장 드라이브 usb wd 여권에 설치했습니다. 2 살 정도 인 데스크탑에서 시작하면 모든 것이 매력처럼 작동합니다. 새 랩톱 (MSI gt680r 시스템)에서 시작할 때 컴퓨터를 절전 모드에서 해제하거나 다른 USB 디스크를 연결하면 속도가 느려집니다.

Kworker 프로세스는 점점 더 많은 CPU를 사용하며 마우스는 때때로 정지합니다.

작동하지 않는 다양한 포럼에서 여러 가지 솔루션을 읽었습니다.

나는 랩톱의 바이오스로 갔다.

Hand XCHI OFF: Enabled
EHCI Hand OFF: disabled

나는 다음과 같이 바꿨다.

Hand XCHI OFF: disabled
EHCI Hand OFF: disabled

그 이후로 더 이상 내 랩톱의 natty에서 멈추지 않습니다.

문제가 해결되면 언제든 손을 돌려 줄 것입니다.


1
왜 이런 일이 발생하는지 설명 할 수 있습니까? XCHI는 어떻게 연결되어 있습니까?
GuySoft

0

고마워하지만 쿠분투 11.04의 새로운 사본을 설치 한 후 이전에 언급 한 문제가 사라졌습니다.
davorao

1
이것이 이론적으로 질문에 대답 할 수 있지만 여기에 답의 핵심 부분을 포함시키고 참조 할 수있는 링크를 제공하는 것이 바람직 합니다.
fossfreedom
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.