2009/02/03

인텔 Core 2 Duo CPU 결함

vaio sz56ln을 구입한지 꼭 1년 넘었습니다.

vendor_id    : GenuineIntel
cpu family    : 6
model        : 15
stepping    : 11
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm nx lm lahf_lm
cpu MHz        : 2194.365
model name    : Intel(R) Core(TM)2 Duo CPU     T7500  @ 2.20GHz

그런데, 갑자기 mpstat에서 cpu가 하나 안나오더군요.
참고로 오픈 솔라리스를 사용하고 있습니다.

$ mpstat 1
CPU minf mjf xcal  intr ithr  csw icsw migr smtx  srw syscl  usr sys  wt idl
  0  297   0    3   461  256 1091  195   11   17    0 19433   15   9   0  76
  0   24   0    0   383  183  312    9    0    0    0 11447    5   4   0  91
  0    0   0    1   424  224  549   98    0    0    0 17563   12   5   0  83
  0    0   0    1   400  198  408   26    0    0    0 14405    7   4   0  89
  0    0   0    1   399  199  390   63    0    0    0  8293    7   5   0  88
 
cpu 컬럼에 0,1이 번갈아 찍혀야 하는데 어찌된 일인지 0번만 계속 찍히는 군요...
psrinfo 로 cpu 상태를 확인해보고 싶어졌습니다.

$ psrinfo -v
Status of virtual processor 0 as of: 02/03/2009 11:38:00
  on-line since 02/03/2009 11:18:59.
  The i386 processor operates at 2200 MHz,
    and has an i387 compatible floating point processor.
Status of virtual processor 1 as of: 02/03/2009 11:38:00
  faulted since 02/03/2009 11:19:43.
  The i386 processor operates at 2200 MHz,
    and has an i387 compatible floating point processor.


헉 ! cpu의 두번째 코어(1번코어)에 장애가 났다고 되어 있습니다.
아니 우예 이런 일이....
솔라리스에 들어있는 장애 관리 툴이 생각이 났습니다.
장애 발생시 자세한 정보를 기록해놓는 툴입니다.

$ fmdump
TIME                 UUID                                 SUNW-MSG-ID
Jan 10 15:12:12.7637 29741a56-c24d-4279-d1ca-a27f0b5244d0 ZFS-8000-D3
Feb 03 11:19:43.3373 178eb5f4-32b5-c164-950e-d89ecd92725a INTEL-8000-1J
Feb 03 11:19:43.5471 2c436e7a-a2ff-e2ca-f0d0-c64b2ed5dc39 INTEL-8000-1J

동일한 INTEL cpu 장애가 있었습니다. 구체적인 내용을 알고 싶었습니다.

$ fmdump -Ve -u 178eb5f4-32b5-c164-950e-d89ecd92725a
TIME                           CLASS
Feb 03 2009 11:15:41.729047265 ereport.cpu.intel.internal_timer
nvlist version: 0
    class = ereport.cpu.intel.internal_timer
    ena = 0x11b7022c15402001
    detector = (embedded nvlist)
    nvlist version: 0
        version = 0x0
        scheme = hc
        hc-list = (array of embedded nvlists)
        (start hc-list[0])
        nvlist version: 0
            hc-name = motherboard
            hc-id = 0
        (end hc-list[0])
        (start hc-list[1])
        nvlist version: 0
            hc-name = chip
            hc-id = 0
        (end hc-list[1])
        (start hc-list[2])
        nvlist version: 0
            hc-name = core
            hc-id = 1
        (end hc-list[2])
        (start hc-list[3])
        nvlist version: 0
            hc-name = strand
            hc-id = 0
        (end hc-list[3])

    (end detector)

    disp = processor_context_corrupt,return_ip_invalid,unconstrained
    IA32_MCG_STATUS = 0x4
    machine_check_in_progress = 1
    privileged = 0
    bank_number = 0x5
    bank_msr_offset = 0x414
    IA32_MCi_STATUS = 0xb200221010040400
    overflow = 0
    error_uncorrected = 1
    error_enabled = 1
    processor_context_corrupt = 1
    error_code = 0x400
    model_specific_error_code = 0x1004
    threshold_based_error_status = No tracking
    __ttl = 0x1
    __tod = 0x4987a8cd 0x2b7460e1

코어 내부 타이머 문제라고 하는 것 같군요. 어쨌든 수정할 수 없는 에러가 하나있다고 나오는 군요.
에러 코드 0x400, 모델 관련 에러 코드 0x1004랍니다
음... http://www.sun.com/msg 에 가서 메세지 id를 넣어봤습니다. http://www.sun.com/msg/INTEL-8000-1J


Major fault 급이군요.. 솔라리스가 오프라인을 시도할 거라고 되어 있군요. 성능이 줄거라고도
되어 있습니다.

해당 CPU를 교체하라고 되어 있네요.. ㅡ.ㅡ;

랩탑이 죽은 건 안타깝지만, 말로만 듣던 솔라리스의 '자가 예측 진단 기능과 장애 관리 기능'을  제눈으로
보고야 말았네요. 기능은 환상이기잠 자주 보고 싶은 기능은 아니군요.ㅡ.ㅡ;

서비스 센터를 가기로 결정했습니다. 문득, 장애난 cpu를 수리했다고 치고 바꿨을 경우 처럼 장애(faulty)로  처리되어 있는 코어를 수리된 것으로 변경하면 어떨까 생각이 들었습니다.

다음과 같이 실행을 해봤습니다.

#fmadm faulty
--------------- ------------------------------------  -------------- ---------
TIME            EVENT-ID                              MSG-ID         SEVERITY
--------------- ------------------------------------  -------------- ---------
Feb 03 11:19:43 178eb5f4-32b5-c164-950e-d89ecd92725a  INTEL-8000-1J  Major   

Fault class : fault.cpu.intel.internal
Affects     : cpu:///cpuid=1
                  faulted but still in service
FRU         : hc://:product-id=VGN-SZ56LN_B:chassis-id=28205682-7001541:server-id=vaio-bhkim/motherboard=0/chip=0
                  faulty

Description : An internal error has been encountered on this cpu.  Refer to
              http://sun.com/msg/INTEL-8000-1J for more information.

Response    : The system will attempt to offline this cpu to remove it from
              service.

Impact      : Performance of this system may be affected.

Action      : Schedule a repair procedure to replace the affected CPU.  Use
              'fmadm faulty' to identify the module.

--------------- ------------------------------------  -------------- ---------
TIME            EVENT-ID                              MSG-ID         SEVERITY
--------------- ------------------------------------  -------------- ---------
Jan 10 15:12:12 29741a56-c24d-4279-d1ca-a27f0b5244d0  ZFS-8000-D3    Major   

Fault class : fault.fs.zfs.device

Description : A ZFS device failed.  Refer to http://sun.com/msg/ZFS-8000-D3 for
              more information.

Response    : No automated response will occur.

Impact      : Fault tolerance of the pool may be compromised.

Action      : Run 'zpool status -x' and replace the bad device.

--------------- ------------------------------------  -------------- ---------
TIME            EVENT-ID                              MSG-ID         SEVERITY
--------------- ------------------------------------  -------------- ---------
Feb 03 11:19:43 2c436e7a-a2ff-e2ca-f0d0-c64b2ed5dc39  INTEL-8000-1J  Major   

Fault class : fault.cpu.intel.internal
Affects     : cpu:///cpuid=0
                  faulted and taken out of service
FRU         : hc://:product-id=VGN-SZ56LN_B:chassis-id=28205682-7001541:server-id=vaio-bhkim/motherboard=0/chip=0
                  faulty

Description : An internal error has been encountered on this cpu.  Refer to
              http://sun.com/msg/INTEL-8000-1J for more information.

Response    : The system will attempt to offline this cpu to remove it from
              service.

Impact      : Performance of this system may be affected.

Action      : Schedule a repair procedure to replace the affected CPU.  Use
              'fmadm faulty' to identify the module.

'장애' 기록 자체를 없앨 수 있나 확인을 해봤습니다.

#fmadm reset hc://:product-id=VGN-SZ56LN_B:chassis-id=28205682-7001541:server-id=vaio-bhkim/motherboard=0/chip=0
fmadm: failed to reset module chip=0: specified module is not loaded in fault manager

안되는 군요. ㅡ.ㅡ;

#fmadm repaired hc://:product-id=VGN-SZ56LN_B:chassis-id=28205682-7001541:server-id=vaio-bhkim/motherboard=0/chip=0
fmadm: recorded repair to of hc://:product-id=VGN-SZ56LN_B:chassis-id=28205682-7001541:server-id=vaio-bhkim/motherboard=0/chip=0

'수리됨'으로 마킹을 시도해봤습니다. 그랬더니, 다음처럼 나오는 군요... ㅡ.ㅡ;

$ psrinfo -v
Status of virtual processor 0 as of: 02/03/2009 16:17:36
  on-line since 02/03/2009 16:17:32.
  The i386 processor operates at 2200 MHz,
    and has an i387 compatible floating point processor.
Status of virtual processor 1 as of: 02/03/2009 16:17:36
  on-line since 02/03/2009 16:14:03.
  The i386 processor operates at 2200 MHz,
    and has an i387 compatible floating point processor.


둘 다 온라인으로 나오는 군요.....  이런....

맘이 불안해집니다. 장애난 CPU를 다시 재마킹해서 사용하면
문제가 없을까...

#fmstat 1

로 실시간 상황을 상당히 지켜보고 있습니다만, 아직은 문제가 없군요.

음... 매우 고민되는 군요. 서비스 센터를 가야하나 말아야 하나...



인텔 네할렘에 가장 최적화된 운영체제... - 오픈 솔라리스




인텔에서 발표할 예정인 '네할렘' 기반의 프로세서는 흥미롭게도 3~4년 전에 AMD가 사용했던 아키텍쳐를 다시 들고 나타났습니다. 당시의 AMD의 아키텍쳐는 두개의 소켓 박스를 구성하면서 NUMA 구조를 채택했었는데, 증가하는 버스 대역폭의 압력에 시달리던 인텔이 마침내 AMD의 구조의 우수성에 인정을 한 셈이라고 할 수 있습니다.

재미있는 것은 당시 AMD가 이런 NUMA 구조의 x86 박스를 발표하면서 가장 적합한 운영체제로 솔라리스를 추천했고, 썬과 함께 공동 프로모션을 많이 했었습니다. 그 이유는 아주 오래전부터 NUMA에 적합하도록 최적화 개발을 유지한 운영체제인 솔라리스가 가장 잘 동작했기 때문이었습니다. 리눅스는 아직도 NUMA operation에 문제가 있는 것으로 얘기가 되는 듯 합니다.

그런데, 이 AMD 아키텍쳐를 가져온 네할렘(Nehalem) 역시 솔라리스의 NUMA 기능들의 덕을 톡톡히 볼 것으로 예상됩니다. 위 비디오에서 인텔의 엔지니어가 언급하듯이, 오픈 솔라리스의 Thread management, MPO, Power 최적화 프로젝트(Tesla)등... 솔라리스가 네할렘에 가장 적합한 운영체제임을 언급하고 있군요...

아주 멋진 일이 아닌가 싶습니다. 이런 장비를 들고, 윈도우즈만 쓰겠다고 버둥대는 일부 사용자들이 다소 안습이군요.

OpenSolaris & Intel: Nehalem