Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

42107
469
422674


[리눅스커널] SoftIRQ: ksoftirqd 스레드란 6. 인터럽트 후반부 처리


이번 절에서는 Soft IRQ 처리용으로 생성된 ksoftirqd 스레드에 대해 살펴봅니다. ksoftirqd 스레드 생성과정과 동작 원리를 배워봅시다.

ksoftirqd이란 per-cpu 타입 프로세스입니다. 즉 CPU 개수만큼 생성해서 정해진 CPU 내에서만 실행합니다. ksoftirqd 프로세스는 커널 쓰레드로 Soft IRQ 서비스를 쓰레드 레벨에서 처리합니다. 

리눅스 커널을 탑재한 어떤 시스템에서도 볼 수 있는 친근한 프로세스입니다. 먼저 ksoftirqd 쓰레드를 같이 확인하겠습니다.

다음 사이트를 방문하면 다른 리눅스 시스템에서 ksoftirqd 스레드를 확인할 수 있습니다.

[출처: https://zetawiki.com/wiki/Ksoftirqd]
[root@zetawiki ~]# ps -ef | grep ksoftirqd | grep -v grep
root         3     2  0 Jan08 ?        00:00:07 [ksoftirqd/0]
root        13     2  0 Jan08 ?        00:00:10 [ksoftirqd/1]
root        18     2  0 Jan08 ?        00:00:08 [ksoftirqd/2]
root        23     2  0 Jan08 ?        00:00:07 [ksoftirqd/3]
root        28     2  0 Jan08 ?        00:00:07 [ksoftirqd/4]
root        33     2  0 Jan08 ?        00:00:06 [ksoftirqd/5]
root        38     2  0 Jan08 ?        00:00:06 [ksoftirqd/6]
root        43     2  0 Jan08 ?        00:00:07 [ksoftirqd/7]

“ps –ef” 명령어와 grep 명령어를 조합해서 프로세스 목록 중 ksoftirqd 쓰레드만 출력했습니다. ksoftirqd란 쓰레드 이름 뒤에 숫자가 보입니다. 이는 각각 ksoftirqd 쓰레드가 실행 중인 CPU번호입니다.

이번에는 라즈베리파이에서 ksoftirqd 쓰레드를 확인해 보겠습니다.

root@raspberrypi:/home/pi# ps axl | grep ksoftirq
1     0     7     2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/0]
1     0    14     2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/1]
1     0    19     2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/2]
1     0    24     2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/3]

라즈비안은 CPU4개인 쿼드코어 시스템이므로 CPU는 0~3번까지 보입니다.

ksoftirqd 는 시스템 CPU 개수만큼 생성되는데 커널은 다음 규칙으로 ksoftirqd프로세스 이름을 짓습니다.

   "ksoftirqd/[CPU 번호]"

 
* 유튜브 강의 동영상도 있으니 같이 들으시면 좋습니다.




"이 포스팅이 유익하다고 생각되시면 댓글로 응원해주시면 감사하겠습니다.  
그리고 혹시 궁금점이 있으면 댓글로 질문 남겨주세요. 상세한 답글 올려드리겠습니다!"

인터럽트 후반부(IRQ 스레드/Soft IRQ) 처리

인터럽트 후반부 기법이란?  
IRQ 스레드(threaded IRQ)  
   * IRQ란?   
IRQ 스레드는 어떻게 생성할까?  
IRQ 스레드는 누가 언제 실행할까?  
IRQ 스레드 디버깅 실습  
Soft IRQ 소개  
Soft IRQ 서비스  
Soft IRQ 서비스는 언제 요청할까?  
Soft IRQ 서비스는 누가 언제 처리할까?  
ksoftirqd 스레드  
Soft IRQ 컨텍스트에 대해  
태스크릿  
Soft IRQ 디버깅  


# Reference: For more information on 'Linux Kernel';

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 1

디버깅을 통해 배우는 리눅스 커널의 구조와 원리. 2


Thanks,
Austin Kim
http://rousalome.egloos.com/10025217



핑백

덧글

  • 나만남자 2020/03/05 17:58 # 삭제 답글

    core가 4개 있는 임베디드 cpu를 사용하고 있습니다.

    cpu를 isolation시켜서 realtime core를 만들려고 합니다.
    특정 core에 ksoftirq를 생성하지 않게 하는 방법이 없을까요?

    수고하세요.
  • AustinKim 2020/03/05 18:27 #

    댓글이 길어 질 것 같아 새로운 글을 올렸으니 아래 링크를 참고하셨으면 좋겠습니다.
    http://rousalome.egloos.com/10012420

    즐거운 하루 되세요.

    Thanks,
    Austin Kim
  • 감사합니다 2020/04/07 16:08 # 삭제 답글

    글 작성해주셔서 정말 감사합니다.. ㅠㅠ
  • AustinKim 2020/04/07 16:25 #

    넵. 즐거운 하루 되세요. ^^
댓글 입력 영역