프로그래머의 일상: IRQ 충돌

오늘 퇴근이 한 시간 가까이 늦어진 건 몇 주전의 일도 제대로 기억 못하는 내 기억력 탓 Orz.

퇴근시간 즈음해서 오늘 받은 머신의 MAC 주소가 등록되었나 확인하고 설정 시작.

  • BIOS에서 네트워크 부팅을 활성화하고
  • 어째서인지 secondary LAN card인 intel GBE도 네트워크 부팅하려 시도하길래 끄고
  • OS 설치한 후
  • 네트워크 설정 확인하고 필요한 팩키지들 설치 시작
  • ?!
  • Secondary LAN card로 통신 불가
  • tshark 으로 덤프 떠 봐도 뭐 보이는 거 없음
  • 재 부팅하고 재시도 (…)
  • 스위치에서 포트 바꾸고 재시도 (…)
  • (결국) syslog/dmesg 보기 시작
  • 수상쩍은 irq 충돌 메시지

흑흑, 대략 2주? 전에 있었던 비슷한 머신 설치 때 당한 게 떠오름. 그 때와 똑같은 방식으로 해결한 얘기를 하자면:

원인

nvidia graphic card (GTS240?) 와 intel gigabit ethernet card (pci interface) 가 IRQ 충돌 중. grub의 부팅 옵션에 irqpoll 주고 띄우니 잘 돈다. tshark 붙인 순간 떨어지는 cisco router의 이런저런 메시지들을 잔뜩 보고 퇴근했다 ㅠㅠ.

해결책 + 교훈

위에서 말한 것처럼 boot loader 옵션에 irqpoll을 주는 것.

근데 이거 약간의(?) performance penalty가 있…을 듯 하다. IRQ를 IRQ답게 처리 하는 게 아니니 Orz. 게다가 이거 gigabit ethernet에 물려서 특정 프로세스의 네트워크 성능 테스트하려고 한 건데 아무래도 망한 듯; 아니면 기왕 이렇게 된 거 서버에서 그래픽 카드들 다 떼버릴까. 내장 그래픽 카드가 있는지 확인하고 해봐야 ㅠㅠ.

Published by

rein

나는 ...

2 thoughts on “프로그래머의 일상: IRQ 충돌”

  1. 예전 기억으로는 irqpoll 옵션이 하는 일이 irq가 발생했을 때 해당 irq 번호에 해당하는 irq handler를 호출해서 처리 요청을 시도 후 만약에 irq handler가 자기거가 아니라고 리턴이 왔을 경우 시스템에 등록된 모든 irq handler를 하나씩 다 호출해보는 식으로 구현됬었습니다. 성능상 썩 좋지 않은 옵션으로 기억합니다.

    1. 리눅스 커널 메일링 리스트에도 비슷한 얘기가 있더군요. 성능 테스트하기 전에 그래픽 카드를 빼버리고 내장 카드 쓰게 하거나 새 머신 구해야 할 판이죠 ㅠㅠ

Leave a Reply