2006년 11월 8일 수요일

softirq

리눅스 2.4.x에서 등장한 것으로 인터럽트 핸들러가 처리하는 시간이 길어지는 동안 동일 비중의 인터럽트 처리가 늦어지거나 인터럽트 이벤트를 놓치는 것을 최대한 막고자 해당 인터럽트를 소프트웨어적으로 나누어 처리하는 것이다. ksoftirqd이라는 커널 스레드가 관리하는데 보통 엄청난 양의 인터럽트가 한꺼번에 발생할 때 나타나서 cpu 점유율을 상승한다. ksoftirqd의 cpu 점유율이 상승하는  때는 보통 디스크 오류로 인해 디스크 I/O가 원할하지 않거나 네트워크 부하가 심할 때 발생한다.

알아야할 사항:
  • Top-half: 인터럽트 핸들을 빠르게 처리한다.
  • Bottom-half: 핸들처리를 빨리 하지 않아도 되는 경우. 인터럽트 이벤트를 미리 받아놓고 softirq가 나중에 가끔씩 처리하게 하는 방식.