Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

43107
469
422675


[리눅스커널] 워크큐: 워크큐를 다른 인터럽트 후반부 기법과 비교해보기 7. 워크큐(Workqueue)

그동안 배웠던 IRQ 스레드와 Soft IRQ 와 같은 다른 인터럽트 후반부 처리 기법과 워크큐를 비교하면서 워크큐의 특징을 알아보겠습니다.

IRQ 스레드 방식과 비교

IRQ 스레드는 인터럽트 후반부 처리 전용 스레드며 threaded IRQ 방식으로 인터럽트 후반부 처리를 합니다. 마찬가지로 워크큐를 인터럽트 후반부 용도로 쓸 수 있습니다. 그런데 인터럽트 발생 빈도가 높거나 더 안정적인 코드 유지 보수를 위해서 IRQ 스레드 기법을 선호합니다. 그 이유는 IRQ 스레드 기법은 인터럽트 처리를 위한 전용 스레드를 쓰므로 소프트웨어적인 복잡도가 워크큐에 비해 낮기 때문입니다. 또한 IRQ 스레드는 RT 프로세스로 구동합니다.  자신보다 우선 순위가 높은 RT 프로세스가 스케줄러 런큐에 큐잉하지 않으면 계속 실행할 수 있습니다. 하지만 워커 스레드는 RT 프로세스가 아닌 일반 프로세스로 동작합니다. 

Soft IRQ 방식과 비교

이번에는 워크큐를 Soft IRQ 기법과 비교해 보겠습니다. Soft IRQ는 인터럽트 발생 빈도가 아주 높은 인터럽트 후반부를 처리할 때 씁니다. 하지만 워크큐는 커널 스레드 레벨에서 워크를 처리하기 때문에 Soft IRQ에 비해 처리 속도가 느립니다. 그 이유는 Soft IRQ는 인터럽트가 발생할때 마다 Soft IRQ 서비스 실행 여부를 점검하기 때문입니다. 

Soft IRQ 처리 방식은 전화(인터럽트)를 받고 통화를 한 다음 전화를 끊고(인터럽트 처리 완료) 전화 통화에서 전달 받은 내용을 바로 실행하는 동작과 같습니다.

Soft IRQ 서비스 실행 빈도는 인터럽트 발생 횟수라 할 수 있습니다. 이에 비해 워크큐는 스케줄링 정책에 따라 워커 스레드가 실행할 차례가 돼야 실행합니다. 

인터럽트 후반부 처리를 정해진 시간 내 빨리 처리해야 하는 경우 워크큐 방식은 바람직하지 않습니다. 어떤 후반부 기법을 쓸지는 시스템 설계와 인터럽트 후반부 처리 시나리오에 따라 결정해야 합니다. 

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




#Reference 워크큐
워크큐 소개
워크큐 종류 알아보기
워크란  
워크를 워크큐에 어떻게 큐잉할까?
   워크를 큐잉할 때 호출하는 워크큐 커널 함수 분석   
워커 쓰레드란
워크큐 실습 및 디버깅
   ftrace로 워크큐 동작 확인   
   인터럽트 후반부로 워크큐 추가 실습 및 로그 분석 
   Trace32로 워크큐 자료 구조 디버깅하기 
딜레이 워크 소개  
   딜레이 워크는 누가 언제 호출할까?
라즈베리파이 딜레이 워크 실습 및 로그 확인  

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

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

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





핑백

덧글

댓글 입력 영역