FREEDOM. FRIENDS. FEATURES. FIRST.
페도라 한국 사용자 모임

irqbalance 서비스 데몬

게시판 Tech/Tip irqbalance 서비스 데몬

  • This topic has 1개 답변, 2명 참여, and was last updated 11 years 전에 by ELem. This post has been viewed 26 times
  • 만든이
    게시글
  • #12079
    인베인
    참가자
    • 게시글141
    • 댓글379
    • 총합520
    • ★★
    @leemgs

    http://irqbalance.googlecode.com/svn/trunk/irqbalance.c
    http://www.redhat.com/archives/fedora-cvs-commits/2006-December/msg00504.html

    irqbalance 서비스 데몬은 멀티프로세서 (2개 이상의 cpu를 사용하는 시스)에서 cpu간의 인터럽트를 분리하기 위한 데몬이다.
    원래 태생 인텔이 2개 이상의 네트웍 카드를 사용시에 네트웍 인터럽트의 밸런싱을 위해 구현을 시작하였었다.
    이 서비스데몬을 구동하는 목적은 멀티 프로세스의 퍼포먼스 향상을 위해 하드웨어 인터럽트를 분배하는 것이다.
    irqbalance 서비스 데몬의 초기설정은 1회/10초 간격으로 Rebalance을 하도록 되어 있다.

    서비스를 Start하기 전에 아래의 2가지 옵션( --oneshot , --debug)을 이용할 수 있다.
    환경설정을 위해서 "/etc/sysconfig/irqbalance" 파일을 수정하면 된다.

    -            ONESHOT=yes : 시작 후  몇 분 동안 대기하였다가 인터럽트 로드를 지켜본 후에  한번 IRQ밸런싱을 한다. 그리고 나서, IRQ밸런싱은 종료가 되고, 다시는  IRQ 밸런싱을 수행하지 않는다.
    -            IRQ_AFFINITY_MASK: IRQ를 Rebalancing할 때 Skip하고자 하는 CPU를
    사용자가 설정할 수 있는 비트 마스크이다. 이 비트 마스크와 일치하는 값을 가지고 있는 CPU번호들은 Rebalancing할 때
     어떠한 새로운  IRQ 번호로도 재할당 되지 않는다.
    -            FOLLOW_ISOLCPUS=yes :  리눅스 커널 부팅시 “isolcpu= , . . . , ”옵션을 사용한다면, 이 옵션이 지정한 CPU이외에 대해서만 IRQ Rebalancing 하기위해  사용될 수 있다.  “isolcpu”라는 커널기능은 Vanilla Kernel에 없으므로, 이 기능이 필요시 http://git.kernel.org/?p=linux/kernel/git/maxk/cpuisol-2.6.git;a=summary (CPU isolation : Max Krasnyansky)주소에서 해당 패치를 다운로드하여 적용해야 한다.

    CentOS 및 Fedora에서 irqbalance을 설치하면 아래의 디렉토리에 각각의 파일들이 위치하게 된다.
    /etc/rc.d/init.d/irqbalance
    /etc/sysconfig/irqbalance
    /usr/sbin/irqbalance
    /usr/share/man/man1/irqbalance.1.gz

    /etc/init.d/irqbalance 서비스데몬을 구동하면 /proc/interrupts으로부터  정보를 Scanning하여 내용들을 Parsing한후에
    IRQ의 Load현황을 파악한후에 IRQ의 부하분산을 Rebalancing하도록 되어 있으며, 이때 서비스데몬은 커널에서 제공하는 아래의
    정보들을 이용한다.

    #> cat /proc/irq/default_smp_affinity
    ffffffff
    #> cat /proc/irq/1/smp_affinity
    00000003
    #> cat /proc/irq/2/smp_affinity
    ffffffff
    #> cat /proc/irq/3/smp_affinity
    0000000f
    #> cat /proc/irq/4/smp_affinity
    0000000f
    #> cat /proc/irq/5/smp_affinity
    0000000f

    실행중의 디버깅을  위해 세부 정보를 출력하고자 한다면 아래와 같이 실행하면 된다.
    #>  
    #> irqbalance --debug
    Package 0:  cpu mask is 0000000f (workload 0)
           Cache domain 0: cpu mask is 00000003  (workload 0)
                   CPU number 0  (workload 0)
                   CPU number 1  (workload 0)
           Cache domain 2: cpu mask is 0000000c  (workload 0)
                   CPU number 2  (workload 0)
                   CPU number 3  (workload 0)

    이상.

    * 오픈소스는 Open Innovationa & 윈윈전략을 도모할 지언정 절대 공짜(무료)임을 뜻하지 않는다.치

0 답변 글타래를 보이고 있습니다
  • 글쓴이
    답변
    • #12658
      ELem
      참가자
      • 게시글67
      • 댓글672
      • 총합739
      • ★★
      @Bardisch

      오 상당히 재밌어보이는..
      듀얼코어 그래픽도 분리되는거겠죠 ㅋㅋㅋ

0 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.