· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
EDAC



1. Intro

  • 원문은 [http]여기 에서 볼 수 있다.
  • 이 위키는 위의 원문에 대한 번역본 이다.
  • 번역: 장현성 <hsjang@neowiz.com>


2. 이게 뭔데?

EDAC 는 "Error Detection And Correction"의 약자이다. Linux EDAC 프로젝트는 Linux Kernel Module 시리즈의 중 컴퓨터 하드웨어 에러검출 파트에 포함되어 있고, 현재 아래의 에러 검출이 지원된다.
  • 시스템 램 에러(이 프로젝트의 기본 목적이며, 가장 많이 구현되어 있다) - 많은 컴퓨터들이 RAM EDAC(고가용성 어플리케이션을 목표로하는 칩셋들) 을 지원한다. 그러나 이 기능이 동작하기 위해선 ECC RAM 이 필요하다.
  • PCI 버스 전송에러 - PCI 브리지 위주이며 주변장치 에러검출도 지원.

3. 이게 왜 필요하지?

최근의 Linux 시스템에서 EDAC 모듈이 없다면...
  • PCI data 오류를 경험하게 될 것이다. (예를들면, NIC나 스토리지 어댑터 와 PCI 버스 사이를 왔다갔다하는 데이터들) 그리고 대부분의 시스템은 PCI 디바이스에서 제공하는 PCI 패리티 에러를 체크하지 않는다. (어떤놈들은 NMI 를 유발시키기도 하는데 당신은 뭐가 NMI를 발생시키는지 모르지 않는가..)
    • [http]NMI란?? - non maskable interrupt. 시스템의 standard interrupt masking 테크닉(이게뭐지??)으로 무시될수 없는 컴퓨터 프로세서 인터럽트이다. 이것은 일반적으로 복구될수 없는 하드웨어 에러가 발생했을때 주의를 주기 위한 신호로 사용된다.
  • 당신이 ECC 메모리를 가지고 있고 정정가능한 ECC 오류를 발견한다해도 그게 정확히 뭔지 알 수 없을것이다. 시스템에 EDAC 모듈이 설치되어 있다면, 에러가 복구할 수 없을 지경이 되기 전에 당신은 나쁜(!) 메모리 모듈이 어떤것인지 알수 있을것이다. 이는 시스템이 서비스에 투입되기 전에 초도 불량을 찾아 낼 수 있다는 것을 의미하기도 한다.
  • 당신이 ECC를 지원하는 메인보드를 가지고 있는데, BIOS에서 ECC 모드를 활성화시키지 않았다면, 알수없는 메모리 에러로 시스템이 뻗을때까지 당신은 아무것도 알 수 없다. (이 경우 NMI 경고도 받을 수 없고 ECC메모리를 사는데 사용한 돈은 낭비되는 것이다.)

4. 어떻게 켜지??

  • PCI 에러체킹은 아래와 같이 사용할 수 있다.
dougal:~# modprobe edac_mc 
dougal:~# cd /sys/devices/system/edac/pci/
dougal:/sys/devices/system/edac/pci# cat check_pci_parity
0
dougal:/sys/devices/system/edac/pci# echo 1 > check_pci_parity
dougal:/sys/devices/system/edac/pci# cat pci_parity_count
1
dougal:/sys/devices/system/edac/pci# dmesg | tail -4
usb0: rxqlen 0 --> 4
usb0: no IPv6 routers present
EDAC MC: Ver: 2.0.1 May  9 2007
EDAC PCI: Detected Parity Error on 0000:00:09.0
dougal:/sys/devices/system/edac/pci# lspci -s 0000:00:09.0
00:09.0 Multimedia audio controller: Yamaha Corporation YMF-744B [DS-1S Audio Controller] (rev 02)
dougal:/sys/devices/system/edac/pci# arecord > /dev/null
Recording WAVE 'stdin' : Unsigned 8 bit, Rate 8000 Hz, Mono
Aborted by signal Interrupt...
dougal:/sys/devices/system/edac/pci# cat pci_parity_count
15
dougal:/sys/devices/system/edac/pci# dmesg | tail -4
EDAC PCI: Detected Parity Error on 0000:00:09.0
EDAC PCI: Detected Parity Error on 0000:00:09.0
EDAC PCI: Detected Parity Error on 0000:00:09.0
EDAC PCI: Detected Parity Error on 0000:00:09.0
오마이갓, 나의 랩탑의 사운드 디바이스가 망가진것 같다.. 지금현재 PCI 체킹이 edac_mc(memory controller) 커널모듈에 들어가 있지만 때가 되면 분리될 것이다. 위에서 보듯이 PCI 에러체킹은 기본으로 OFF 되어 있고, 사용하려면 위와 같이 켜면 된다.

5. EDAC에서 보여주는 에러에 대해

EDAC 이 당신의 시스템에서 에러를 리포팅 한다면 [http]내 컴에 왜 메모리 에러가 뜨지?[http]내 컴에 왜 PCI 에러가 뜨지? 를 참고해라. 버그리포트나 메일링리스트에 포스팅하기전에 위의 링크와 이 문서를 참고해서 문제점을 먼저 확인해라.

6. EDAC Bug 데이터베이스

만약 당신이 버그를 찾았다고 생각하면 [http]EDAC Bugzilla 를 검색해서 이미 리포트되었는지 확인해라. (해당버그의 cc 리스트에 당신을 추가해서 업데이트에 관련된 내용을 받아볼 수 있다). 찾아보고 없으면 새로운 버그 리포트를 포스팅하면 된다.

7. In Kernel 문서

커널소스의 Documentation/drivers/edac/ 디렉토리 안에도 약간의 문서가 있다.

8. EDAC 메일링 리스트

대부분의 EDAC 개발자들은 EDAC 메일링 리스트를 주시하고 있으나 대부분의 EDAC 개발자들이 EDAC 개발을 주업무로 하고 있지 않음을 기억해주기 바란다. 그러니 어떤 문제가 생기면 위키와 버그 데이터베이스 그리고 메일링리스트를 먼저 참고해주기 바란다. 여기서 찾지 못한 문제들은 메일링 리스트에 포스트 해라.
  • 공손하게..
  • 당신 시스템에 대한 정확한 정보를 제공.. (예를들면 정확한 커널버전이라든가..)
  • 참을성을 가지고..

만약 답장을 받거나, 위키에 없는 것을 찾아서 문제를 해결하였다면 이 곳 위키에 해당 정보를 기록해서 다른 사람들에게 도움이 될 수 있도록 하자.

9. Userspace Tools

[http]http://sourceforge.net/projects/edac-utils 에 사용자들을 위한 도구들이 개발중에 있다. 이곳에는 도움이 많이 필요하니 많은 참여 바란다.

10. Status

EDAC 코드는 Linux Kernel version 2.6.16에 포함되었다. 그리고 userspace API가 2.6.18 과 그 이상에 포함되었다.

11. 소스코드 얻기

좀 더 최신버전의 코드를 원하면, 소스포지 다운로드 페이지나 익명SVN 체크아웃을 통해 얻을 수 있다.
$ cd mydev-dir
$ svn checkout https://bluesmoke.svn.sourceforge.net/svnroot/bluesmoke/trunk edac-trunk/
$ less bluesmoke/edac/patches/README
2007년 5월 이전것들은 CVS에서 찾을 수 있다. 소스포지 메인페이지의 CVS 정보를 확인해라..

이 코드들을 사용하려면 최신 리눅스 커널도 필요하다. 아니면 그냥 최근의 변경사항만 확인하려면 아래의 SVN 에서 볼 수 있다.

12. 히스토리

EDAC 프로젝트는 리눅스 커널의 메인스트림에 포함되기 전 "Bluesmoke" 라는 이름에서 변경된 것이다. Bluesmoke 코드는 Thayne Harbaugh가 작성하였다. Linux-ECC 프로젝트는 EDAC의 선프로젝트 였고 EDAC가 나오는데 영감을 주었다. Dan Hollis 와 여러사람들에 의해 개발된 Linux-ECC 프로젝트는 현재 더이상 유지되지 않고 있다.

13. 지원되는 하드웨어 리스트

  • 지원되는 메인메모리 컨트롤러들
Manufacturer Model EDAC Driver Tech Docs Controll Capabilities Status
AMD Opteron k8_edac.c [http]AMD EDAC, ErrorScrub, BackgroundScrub Supported Development Tree
AMD Athlon64 k8_edac.c [http]AMD EDAC, ErrorScrub, BackgroundScrub Supported Development Tree
AMD AthlonFX k8_edac.c [http]AMD EDAC, ErrorScrub, BackgroundScrub Supported Development Tree
AMD 760 amd76x_edac.c [http]AMD Supported(Linux 2.6.16)
AMD 762 amd76x_edac.c [http]AMD Supported(Linux 2.6.16)
AMD 768 amd76x_edac.c [http]AMD Supported(Linux 2.6.16)
Intel e7500 e7xx_edac.c Supported(Linux 2.6.16)
Intel e7501 e7xx_edac.c Supported(Linux 2.6.16)
Intel e7505 e7xx_edac.c Supported(Linux 2.6.16)
Intel e7520 e752x_edac.c Supported(Linux 2.6.16)
Intel e7525 e752x_edac.c Supported(Linux 2.6.16)
Intel 8287p i82875p_edac.c EDAC Supported(Linux 2.6.16)
Intel e7210 Supported(Linux 2.6.16)
Intel 82860 i82860_edac.c Supported(Linux 2.6.16)
Intel 5000(P/V/X) i5000_edac.c Patch in CVS
Intel 82443BX/GX(440BX/GX) i82443bxgx_edac.c [http]Intel EDAC, ErrorScrub Patch in SVN
Radisys 82600 r82600_edac.c [http]Radisys EDAC, ErrorScrub Supported(linux 2.6.16)
Via VT82c693(pro133) [http]Local EDAC Author Needed




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2011-06-01 15:48:35
Processing time 0.0402 sec