MemTest86 + 오류 표시에 따라 올바른 불량 RAM 섹터를 블랙리스트에 올리는 방법?


28

MemTest86 + (Ubuntu 13.04에 포함 된 버전)에 따르면

Failing address: 002f796c48 -    759.5 MB

memmap이 영역을 우회하기 위해 커널 매개 변수 에서 무엇을 지정해야 합니까?

나는 달리기를 시도했지만 memtester 770MB모든 것이 정상이라고 말하면서 MemTest의 표시가 처음부터 759.5MB의 오류를 의미하는 것으로 보이지 않습니다.

이 MemTest 표시를 해석하여 구성하는 방법은 memmap무엇입니까?

새 RAM을 구입할 돈이 없으며 오류가 단일 한 것처럼 보이므로 무시할 수 있기를 바랍니다.


FWIW에서 커널은 특정 페이지가 불량 세그먼트를 감지했지만 복구 할 수있는 경우 "예약 된"것으로 표시합니다. "free -m"의 출력이 총계에 대해 2의 거듭 제곱을 표시합니까? memtester가 불량 RAM을 볼 수 없지만 memtest86 +가 볼 수있는 이유를 설명하는 방법으로 이것을 언급했습니다.
Bratchley

실제로 두 가지의 힘처럼 보이지는 않습니다 : i.stack.imgur.com/l86L1.png
Ivan

오류가 감지 될 때까지 (ecc ram이있는 경우) 일반적으로 너무 늦습니다. 또한 free -m은 바이오스와 커널이 모두 램을 예약하므로 2의 짝수 제곱을보고하지 않습니다.
psusi

1
ECC 랩탑을 구매하는 것을 꿈꾸지 만 제공되는 쿠폰을 찾을 수 없습니다. 존재하지 않는 것 같습니다.
Ivan

커널 이 잘못된 페이지를 찾으면 printk의 것 같습니다 (행 264-265).
Bratchley

답변:


26

mm

이 튜토리얼이 있습니다 : Bad Memory HowTo . 커널에 대한 memmap인수를 사용하여 커널을 통한 메모리 비활성화에 대해 설명 합니다. 하우투에 따르면 두 가지 옵션이 있습니다 memmap.

  • 나쁜 기억 후에 모든 것을 끄십시오- (mem=###M option)
  • 불량 메모리 주변의 메모리 만 끄십시오. (memmap=#M$###M option)

첫 번째 옵션으로 memtest가 600M에 불량 메모리가 있다고보고하면 다음과 같이 RAM 끝까지 RAM을 비활성화 할 수 있습니다.

 mem=595M

802M 및 807M에 불량 RAM이있는 경우 다음과 같이 800M에서 시작하여 10M RAM 섹션을 비활성화 할 수 있습니다.

memmap=10M$800M

참고 : 800M 기본 주소 다음에 10M이 블랙리스트에 추가됩니다. memtest86+이 인수가 올바른지 확인한 후에 실행해야 합니다.

BadRAM

우분투에는 BadRam이라는 패치가 있습니다. 우분투 커뮤니티 사이트의 BadRAM 이라는 제목의이 게시물에서 잘 다루고 있습니다.

해당 페이지의 세부 정보를 사용하여 커널에 패치를 적용한 후 Grub2 설정을 수정합니다.

해당 사이트에서 Grub2에 대한 발췌

Natty의 GRUB2 설정 파일에는 커널 불량 램 제외를 구성하는 줄이 있습니다. 따라서 오류를 표시하는 메모리 섹션을 매핑하는 기본 방법이라고 가정하겠습니다. 내가 설정 한 선은

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

내가 찾은 모든 웹 사이트에서 제안 된 방법은 memtest86을 실행하고 BadRAM 설정을 표시하도록 설정하는 것이 었습니다. memtest86은 내가 입력해야 할 페이지를 주었다. 모든 주소가 하나의 16K 블록에 있다는 것을 알 수 있었기 때문에 16K 블록을 동작에서 제외하고 싶었습니다. 올바른 항목을 생성 한 방법은 다음과 같습니다.

첫 번째 매개 변수는 쉽습니다. 이것이 불량 메모리의 기본 주소입니다. 필자의 경우 모든 잘못된 주소가 0x7DDF0000보다 크고 0x7DDF4000보다 작은 것을 알 수 있습니다. 그래서 16K 블록의 시작 부분을 시작 주소로 사용했습니다.

두 번째 매개 변수는 마스크입니다. 원하는 주소 범위에 1을 넣고 같은 값을 공유하고 0에 값을 변경합니다. 즉, 하위 비트 만 변경되도록 주소 범위를 선택해야합니다. 내 주소를 보면 마스크의 첫 부분이 쉽습니다. 0xffff로 시작하고 싶습니다. 다음 니블을 위해 비트 맵으로 설명하겠습니다. 0000에서 0011 사이의 범위를 원합니다. 따라서 badram의 마스크는 1100 또는 16 진수 c입니다. 전체 범위가 매핑되기를 원하므로 마스크에서 마지막 3 개의 니블은 모두 0이어야합니다. 따라서 총 결과는 0xffffc000입니다.

/ etc / default / grub에서이 줄을 설정 한 후 sudo update-grub을 실행하고 재부팅하여 불량 메모리를 더 이상 사용하지 않았습니다. 이 방법을 사용하여 불량 메모리를 매핑하는 데 커널 패치가 필요하지 않습니다.

후속 조치 # 1

memtest86 +에 대한 wikipedia 페이지를 살펴보면 다음과 같이 표시됩니다.

Memtest86 위키 백과 페이지 에서 발췌

Memtest86 2.3 및 Memtest86 + 1.60부터 프로그램은 Linux 커널 용 BadRAM 패치가 예상하는 형식으로 불량 RAM 영역 목록을 출력 할 수 있습니다. 이 정보를 사용하면 Linux 시스템은 불량 비트가 몇 개 있더라도 RAM 모듈을 안정적으로 사용할 수 있습니다. Grub2는 패치가없는 커널에 동일한 정보를 제공 할 수 있으므로 BadRAM 패치가 필요 없습니다.

또한 16 진수 주소를 사용 하여이 젠투 페이지보았memmap=... 으므로 다음과 같이 지정할 수 있습니다.

memmap=5M$0x2f796c48

5M은 추측에 불과합니다. 분명히 그 지역 주변에서 얼마나 많은 RAM을 생략하고 싶은지에 따라 더 낮게 또는 더 크게 조정할 수 있습니다.

마지막으로 크기를 16 진수로 지정할 수도 있습니다.

memmap=0x10000$0x2f796c48

주소 0x2f796c48에서 64KB가 시작되는 것을 무시합니다.

참고 문헌


"800M ~ 804M"은 "800M ~ 810M"으로 가정합니다.
Hauke ​​Laging

800M에서 810M 사이의 4M보다 많은 메모리를 버리고 있지만 내가 작성한 것은 괜찮습니다.
slm

1
1. memmap옵션 에 대해 알고 있지만 질문은 memtest86 + 출력을 해석하는 방법에 대한 것입니다. memtest86 + 출력의 특정 예제를 제공 하고이 특별한 경우 memmap 에 따라 구성하는 데 도움을 요청하십시오 . 2. "나중에이 인수가 올바른지 확인하려면 memtest86 +를 실행해야합니다." -memtest86 +는 OS 커널 보다 먼저 실행 되므로 memmapLinux 커널 옵션이 영향을 줄 수 있을지 의문 입니다.
Ivan

@Ivan, 1. 나는 포함 된 예제를 통해 분명하다고 생각했지만 다음과 같이 말해야 memmap=5M$759M합니다. 특정한 경우 memtest86 +가 759.5MB에서 실패합니다. 2. memmap=...옵션을 memtest86 +로 전달해야한다는 의미입니다 . 그것은 나에 의해 테스트되지 않았거나 확인되지 않았지만 memtest86 +로 할 수있는 것입니다.
slm

1
알았어 고마워. "002f796c48-759.5 MB"가 무엇을 의미하는지 잘 모르겠습니다 (아마도 002f796c48 주소 이후 759.5 메가 또는 그 정도일 수 있음). Linux 커널 매개 변수를 MemTest86 +에 전달할 수있을 것으로 의심 한 적이 없습니다. 리눅스와 함께).
Ivan

14

Memtest86 + (4.20을 사용함)는 badram 형식을 직접 출력 할 수 있습니다.

  1. 'c'를 눌러 구성 대화 상자로 이동하십시오. memtest 구성 대화

  2. "오류보고 모드"에 대해 '4'

    memtest 오류 보고서 모드 대화

  3. "BadRAM 패턴"에 대해 '3'

출력은 개별 테스트 실패 목록에서 각각 하나 이상의 새로운 불량 섹터를 포함하는 일련의 badram = 행으로 변경됩니다. 라인이 인접한 세그먼트를 추가하고 병합하기 때문에 테스트를 밤새 헤드리스로 실행하고 최종 인쇄 라인을 사용할 수 있습니다 (실제로 어둡기 때문에 "이 지점 주변의 5 메가"형식은 상당히 짧을 수 있습니다) ).

최종 결과:

Badram 출력을 보여주는 Memtest86 +


4
이제 직접 손으로 복사하지 않고 오류를 다시 입력하지 않고 GRUB에 넘겨 주면 환상적입니다.
Ehtesh Choudhury

8
내가 한 것은 사진 (카메라 폰)을 가져 와서 김프에로드하고 => 그레이 스케일 => 반전 => 대비 / 감마 tesseract ${IMG} stdout. / 애벌레 ... 아마 단지만큼 수동 ^^ 바로 그것을 입력 걸렸
eMPee584

3
수동으로하는 것보다 확실히 더 재미 있음
날리는 양
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.