Linux에서 ECC RAM 정리를 활성화하고 확인하는 방법은 무엇입니까?

Linux에서 ECC RAM 정리를 활성화하고 확인하는 방법은 무엇입니까?

저는 ECC RAM이 포함된 첫 번째 시스템을 구입하고 Linux에서 경고 및 유지 관리에 대한 가능성을 이해하려고 노력했습니다. 좀 더 구체적으로 말하면,데비안 리눅스안에슈퍼 마이크로 H8SGL마더보드에는AMD 옵테론 6386 SECPU와삼성 M393B2G70QH0-YK0DDR3 ECC 메모리.

나는 할 수 있다는 것을 배웠다미사일 발사 중지ECC RAM, 좋은 생각인 것 같습니다. ECC RAM이 제대로 작동합니다.수리하다1비트 오류 합계발각2비트 오류. 정리에는 주기적으로 RAM을 읽어 1비트 오류가 결국 2비트 오류로 이어지기 전에 수정하는 작업이 포함됩니다.

또한 Linux에서 이 기능을 지원한다는 것도 알았지만 사용하는 데 문제가 있어서 시작하고 설정을 알아내는 데 도움이 필요합니다.

리눅스 EDAC 드라이버

내가 이해한 바에 따르면 Linux는 EDAC라는 하위 시스템을 사용하여 ECC RAM을 처리합니다 /sys/devices/system/edac/. 여기서는 두 개의 메모리 컨트롤러(2노드 NUMA)를 볼 수 있습니다.

# ls /sys/devices/system/edac/mc/
mc0  mc1  power  subsystem  uevent

또한 EDAC 드라이버가 어떻게든 로드되는 것을 볼 수 있습니다.

# edac-util --status
edac-util: EDAC drivers are loaded. 2 MCs detected
# lsmod | grep edac
amd64_edac_mod         36864  0
edac_mce_amd           28672  1 amd64_edac_mod

이제 스크러빙을 활성화하고 싶습니다. ~에 따르면리눅스 ABI 문서청소율은 문서를 통해 공개되며 /sys/devices/system/edac/mc/mc*/sdram_scrub_rate다음과 같이 기록됩니다.

메모리 컨트롤러에서 사용하는 스크럽 속도는 속성 파일에 최소 대역폭(바이트/초)을 기록하여 설정됩니다. 요율은 최소한 지정된 요율을 제공하는 내부 값으로 변환됩니다. 파일을 읽으면 사용된 실제 스크러빙 속도가 반환됩니다. 구성이 실패하거나 메모리 정리가 구현되지 않은 경우 속성 파일의 값은 -1입니다.

하지만 이렇게 하면 아무 일도 일어나지 않습니다. 적당한 값을 쓰세요(확인할 때 중간쯤)원천그리고CPU 문서)을 파일에 추가하는 것은 작동하는 것처럼 보이지만 0파일을 읽을 때 항상 다음을 반환합니다.

# cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
0
# echo 1000000 >/sys/devices/system/edac/mc/mc0/sdram_scrub_rate
# echo $?
0
# cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
0

그렇게 깊이 파고들어 내가 무엇을 놓쳤는가?

BIOS ECC 구성

BIOS에서 다른 설정도 시도했습니다. BIOS에는 ECC 구성을 위한 옵션이 있지만 Linux에 표시되는 스크러빙 속도에는 영향을 미치지 않습니다.

여기에 이미지 설명을 입력하세요.

이제 설정을 시험해 보고 있는데 User둘 사이의 차이점을 실제로 볼 수 없습니다.

답변1

커널 오류입니다

이것이 바로 컨트롤이 설정되는 방식이지만, 이 CPU에 대한 하드웨어 판독값이 항상 0을 반환하도록 하는 커널 버그가 있습니다.

수리하다이에 대한 수정 사항이 대기 중이지만 언제 메인 커널에 적용될지는 알 수 없습니다. 그런 일이 발생하면 답변을 업데이트할 수 있습니다.

패치를 적용한 후 질문에 사용된 명령의 출력은 다음과 같습니다.

# echo 1000000 >/sys/devices/system/edac/mc/mc0/sdram_scrub_rate
# echo $?
0
# cat /sys/devices/system/edac/mc/mc0/sdram_scrub_rate
781440

mc0781440은 메모리 컨트롤러에 의해 초당 정리된 바이트 수로, 요청된 1000000에 가장 가까운 값으로 양자화됩니다.

관련 정보