일반적으로 리눅스에서 NMI 신호를 받게 되는 경우에는 크가 두가지 경우로 나타낼수 
있습니다. 

첫번째 : 커널에서 NMI_WATCHDOG을 활성화 했을 경우.. 
두번째 : 자체 하드웨어에서 NMI_WATCHDOG 신호를 사용하게 되는 경우 

일반적으로 하드웨어에서 발생시킨 NMI 신호의 경우 불특정 부하가 발생하거나, 하드웨어
자체적인 이상이 발생했을 경우 NMI Interrupt 신호를 발생시키게 되는데, 간혹 펌웨어나 
BIOS상에서 버그로 인해서 강제적으로 시스템을 재부팅 시키는 경우가, 발생하는 경우가 
있는데, know-issue 이기는 하지만 일반적으로 운영할때 발생할수 있는 상황이여서 정리해 봅니다. 


1. 커널 패닉 원인 (Root Cause)

HP DL380 G8 장비에서 자동으로 Rebooting 되는 원인으로는 HP DL380 G8 장비에서
발생된 NMI 신호를 커널 수신하여 NMI watchdog 메세지와 함께 커널 Panic을 발생.

NMI의 신호의 경우 커널에서 NMI_WATCHDOG=0 처리를 하지 않아도 HP 서버는  NMI Handler 기능을 가지고 있기 때문에 하드웨어 자체적으로 인터럽트 신호를 주기적으로
보내 시스템의 이상 여부를 확인하게 됨


2. vmcore Kernel Panic trace

Red Hat으로 Escallation 된 vmcore를 trace 한결과 아래아 같이 HP IML로 인한 NMI로 인해 커널 패닉이 발생되었음을 확인가능. 

crash> sys 

 KERNEL: /usr/lib/debug/lib/modules/2.6.32-358.el6.x86_64/vmlinux

    DUMPFILE: /var/crash/vmcore  [PARTIAL DUMP]
        CPUS: 12
        DATE: Tue Mar 11 11:26:52 2014
      UPTIME: 14 days, 21:28:40
LOAD AVERAGE: 0.20, 0.21, 0.18
       TASKS: 585
    NODENAME: mzeus02
     RELEASE: 2.6.32-358.6.2.el6.x86_64
     VERSION: #1 SMP Tue May 14 15:48:21 EDT 2013
     MACHINE: x86_64  (2892 Mhz)
      MEMORY: 24 GB
       PANIC: "Kernel panic - not syncing: An NMI occurred, please see the Integrated Management Log for details


또한 커널에서 FIFO 스택에 대한 Back trace 에서도  아래와 같이 hpwdt_pretimeout에
대한 Status를 확인

즉 NMI 신호에 대해서 선점하지 못하고 대기하고 있다가 일정 시점에서 NMI Interrupt 신호를 받지 못하면 시스템을 Hangup으로 간주하여 강제로 재부팅을 하게 되고 현재 설정된 kdump 구성으로 인해서 vmcore를 발생. 

crash> bt -t

PID: 0      TASK: ffffffff81a8d020  CPU: 0   COMMAND: "swapper"
              START: crash_kexec at ffffffff810c0dd2
  [ffff880036607d30] crash_kexec at ffffffff810c0dd2
  [ffff880036607db0] show_trace at ffffffff8100f275
  [ffff880036607db8] do_kimage_alloc at ffffffff810c0e5f
  [ffff880036607e00] schedule at ffffffff8150d47f
  [ffff880036607e30] arch_prepare_kprobe at ffffffff81513056
  [ffff880036607e80] hpwdt_pretimeout at ffffffffa01054cd [hpwdt]
  [ffff880036607e90] trampoline_handler at ffffffff81511b99
  [ffff880036607ea0] opt_pre_handler at ffffffff81513685
  [ffff880036607ee0] opt_pre_handler at ffffffff815136ea
  [ffff880036607ef0] srcu_init_notifier_head at ffffffff8109cc1e
  [ffff880036607f20] oops_begin at ffffffff815112c1
  [ffff880036607f50] do_general_protection at ffffffff81510c10
    [exception RIP: format_decode+837]
    RIP: ffffffff8127f585  RSP: ffff880036603c98  RFLAGS: 00000046
    RAX: ffffffff817e8e72  RBX: ffffffff81eacf29  RCX: 0000000000000000
    RDX: 0000000000000078  RSI: ffff880036603ce8  RDI: ffffffff817e8e71
    RBP: ffff880036603c98   R8: 0000000000000078   R9: ffffffff81a01e58
    R10: 0000000000000000  R11: 0000000000000001  R12: ffffffff817e8e71
    R13: ffffffff817e8e71  R14: ffff880036603e08  R15: ffffffff81ead300
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
--- <NMI exception stack> ---
  [ffff880036607000] format_decode at ffffffff8127f585
  [ffff880036603ca0] vsnprintf at ffffffff81280e34
  [ffff880036603d08] default_wake_function at ffffffff81063322
  [ffff880036603d40] simple_strtoll at ffffffff81281451
  [ffff880036603d60] vprintk at ffffffff8106f0b6
  [ffff880036603d88] __wake_up at ffffffff81055ab3
  [ffff880036603db8] delayed_work_timer_fn at ffffffff810912e0
  [ffff880036603dc8] insert_work at ffffffff81090d8d
  [ffff880036603e00] schedule at ffffffff8150d581
  [ffff880036603e60] dmar_set_interrupt at ffffffff812ad9d0
  [ffff880036603e78] __rcu_process_callbacks at ffffffff810e6f94
  [ffff880036603ed0] handle_IRQ_event at ffffffff810e1720
  [ffff880036603ed8] __do_softirq at ffffffff8107700f
  [ffff880036603f20] handle_fasteoi_irq at ffffffff810e3e6e
  [ffff880036603f60] handle_irq at ffffffff8100de89


- 조치 사항 - 

금번 발생된 HP DL380 G8에서 시스템에 강제로 재부팅 되는 이슈는 Know-issue  
아래의 링크는 RHEL6.4 기반에서 운영되는 HP 장비에서 발생된  "PANIC: "Kernel panic - not syncing: An NMI occurred, please see the Integrated Management Log for details"

이슈와 관련해서  HP 장비에 대한 FIrmware 및 BIOS 업그레이드를 권장하고 있음
아래의 문서에 댓글로 달려 있는 코멘트를  참조했을 때 HP DL580 G7과 HP DL380 G8이 동일한 문제를 나타내고 있음.  

< 관려 이슈 문서>

https://access.redhat.com/site/solutions/442193


신고

+ Recent posts