ECC 대 비 ECC

ECC 대 비 ECC

나는 항상 작동할 스토리지 서버(GNU/Linux 또는 FreeBSD 기반)를 구축하고 싶습니다. 데이터 손상을 방지하기 위해(저는 그런 문제가 없었기 때문에 일어날 가능성이 낮지만 후회하는 것보다 안전하는 것이 좋습니다) ECC RAM을 사용하고 싶습니다.

EDD(?)만큼 좋지는 않지만(훨씬 더 비쌉니다) 추가 보호 기능을 제공합니다. ECC는 단일 비트 오류만 수정하는 것 같습니다.

ECC 등록 RAM은 Intel Xeon 또는 AMD interlagos/magny-cours/valencia g34 또는 c32와 같은 워크스테이션/서버 보드에서만 사용할 수 있습니다.

ECC 언버퍼링은 Asus 보드의 Intel Xeon lga1155 또는 AMD AM3+에서 사용할 수 있습니다.

두 번째 옵션은 프로세서와 마더보드 측면에서 훨씬 저렴할 것이며 16GB 이상의 RAM이 필요할지는 의문입니다(버퍼되지 않은 4x4GB ECC는 가장 저렴한 스틱입니다).

내가 갖고 있는 의심은 (주로 asus am3+ 보드와 관련하여): ECC 버퍼링되지 않은 RAM이 ECC 등록 RAM만큼 좋은가요(안전성과 신뢰성의 관점에서)? 아니면 더 나쁜 선택일까요? 나는 속도에 별로 관심이 없다.

자세한 내용: 서버는 최대 24개의 3.5인치 드라이브가 장착된 서버 케이스를 사용하며 가능한 한 적은 양을 소비해야 합니다. 그런 의미에서 LGA1155는 두 배의 가격으로 다른 제품(>80W)에 비해 더 나은 선택(TDP ~ 20-95W)인 것 같습니다. 어떤 제안이라도 환영합니다. 유휴 상태에서 120W 미만이라고 가정해 보겠습니다(하드 디스크 24개 중 10개).

답변1

글쎄, 서버 RAM 범위가 아닌 16GB RAM만 사용하는 경우 표준적인 데스크톱 RAM/sys를 사용해도 괜찮을 것입니다.

스토리지 서버만이라면 그렇게 많은 CPU 성능도 필요하지 않습니다.

말씀하신 대로 Sandy Bridge를 사용하면 멋지고 성능이 뛰어나며 안정적인 시스템을 얻을 수 있습니다.

16GB RAM 범위에 관해 말하면 ECC 문제에 대해 걱정할 필요가 없습니다.

답변2

ECC는 단일 비트 오류만 수정하는 것 같습니다.

옳은. 더 많은 오류를 수정하려면 더 많은 비트가 필요합니다. 현재로서는 이미 8비트의 정보를 저장하기 위해 10비트를 사용하고 있으며, 단일 비트 수정과 최대 2비트의 오류 감지를 허용하기 위해 메모리 칩의 20%를 '낭비'하고 있습니다.

다음과 같이 작동합니다. 0또는 을 상상해 보세요 1. 둘 중 하나를 읽는다면 내가 올바른 내용을 읽었기를 바랄 뿐입니다. 우주 방사선이나 불량 칩으로 인해 0이 1로 바뀌었다면 나는 결코 알 수 없습니다.

과거에는 패리티를 사용하여 이 문제를 해결하려고 했습니다. 패리티는 저장된 8비트당 9번째 비트를 추가했습니다. 바이트에 0이 몇 개 있고 1이 몇 개 있는지 확인했습니다. 9번째 숫자는 짝수로 설정되었습니다. (짝수 패리티의 경우) 바이트를 읽었는데 숫자가 잘못된 경우 뭔가 잘못되었음을 알 수 있습니다. 그래도 어느 비트가 잘못되었는지는 알 수 없습니다.

ECC는 이를 확장했습니다. 10비트와 복잡한 알고리즘을 사용하여 단일 비트가 뒤집힌 시기를 검색합니다. 또한 원래 값이 무엇인지도 알고 있습니다. 이를 수행하는 방법을 설명하는 매우 간단한 방법은 다음과 같습니다.

s를 모두 0로 바꾸세요 000. s를 모두 1로 바꾸세요 111.

이제 6가지 조합을 읽을 수 있습니다:
000
001
010
100
101
111

우리는 원래 무엇이 저장되었는지 결코 100% 확신할 수 없습니다. 만약 우리가 읽었 000다면 그것은 우리가 기대했던 것과 똑같았을 수도 000있고, 세 비트가 모두 뒤집혔을 수도 있습니다. 후자는 가능성이 거의 없습니다. 비트는 무작위로 뒤집히지는 않지만 발생합니다. 쉬운 계산을 위해 10번에 한 번 그런 일이 발생한다고 가정해 보겠습니다(현실은 훨씬 적습니다). 이는 올바른 값을 읽을 수 있는 다음과 같은 기회로 작동합니다.

000-> 둘 중 하나 000(99.9% 확실함) 또는 트리플 플립(1/1000 확률)

001-> 우리는 뭔가 잘못되었다는 것을 알고 있습니다. 그러나 그것은 0001비트가 뒤집혔거나(1:10 확률), 1112비트가 뒤집혔습니다(1:100 확률). 따라서 마치 읽은 것처럼 처리 000하고 오류를 기록해 보겠습니다.

010-> 위와 동일합니다.

100-> 위와 동일합니다.

011-> 위와 동일하지만 다음과 같다고 가정합니다.111

101-> 위와 동일하지만 다음과 같다고 가정합니다.111

110-> 위와 동일하지만 다음과 같다고 가정합니다.111

111-> 둘 중 하나 111(99.9% 확실함) 또는 트리플 플립(1/1000 확률)

111-> 둘 중 하나 000(99.9% 확실함) 또는 트리플 플립(1/1000 확률)

ECC는 유사한 트릭을 수행하지만 더 효율적으로 수행합니다. 8비트(1바이트)의 경우 감지하고 수정하는 데 10비트만 사용합니다.


ECC 등록 RAM은 워크스테이션/서버 보드에서만 사용할 수 있습니다. 버퍼링되지 않은 ECC는 Asus 보드의 Intel Xeon lga1155 또는 AMD AM3+에서 사용할 수 있습니다.

나는 이미 ECC 부분이 무엇인지 언급했는데, 이제는 등록된 부분과 버퍼링되지 않은 부분입니다.

최신 CPU에서 메모리 컨트롤러는 오래 전부터 AMD Opteron 칩과 Intel용 Core i 시리즈부터 CPU 다이에 있습니다. 그러면 대부분의 데스크탑 CPU는 RAM을 보유하고 있는 DIMM 소켓과 직접 통신합니다. 작동하며 추가 논리가 필요하지 않습니다. 구축 비용이 저렴하고 메모리 컨트롤러에서 RAM으로 이동하는 데 지연이 없기 때문에 속도가 빠릅니다.

그러나 메모리 컨트롤러는 제한된 전류만 고속으로 구동할 수 있습니다. 이는 마더보드에 추가할 수 있는 메모리 소켓 수에 제한이 있음을 의미합니다. (더 복잡하게 하려면 DIMM이 얼마나 사용할 수 있는지에 따라 메모리 순위가 결정됩니다. 이미 길기 때문에 건너뛰겠습니다.)

서버 보드에서는 데스크탑 시스템보다 더 많은 메모리를 사용하려는 경우가 많습니다. 따라서 "레지스터" 버퍼가 메모리에 추가됩니다. DIMM의 칩에서 읽은 내용은 먼저 이 버퍼에 복사됩니다. 클록 사이클 이후에 이 버퍼는 메모리 컨트롤러에 연결되어 데이터를 전송합니다.

이 버퍼/레지스터는 작업을 지연시켜 메모리 속도를 느리게 만듭니다. 이는 바람직하지 않으므로 메모리 뱅크가 많은 보드에서만 사용/필요합니다. 대부분의 소비자 보드에는 이것이 필요하지 않으며 대부분의 소비자 CPU는 이를 지원하지 않습니다.

직접 연결된, 버퍼링되지 않은 RAM과 버퍼링/등록된 RAM은 어느 쪽이 다른 쪽보다 좋거나 나쁜 경우가 아닙니다. 단지 얼마나 많은 메모리 슬롯을 가질 수 있는지에 따라 서로 다른 장단점이 있습니다. 등록된 RAM을 사용하면 어느 정도 속도(그리고 비용도 들 수 있음)를 희생하여 더 많은 RAM을 사용할 수 있습니다. 가능한 한 많은 메모리가 필요한 대부분의 경우, 추가 메모리는 약간 느린 속도로 실행되는 RAM을 보완하는 것 이상입니다.

내가 갖고 있는 의심은 (주로 asus am3+ 보드와 관련하여): ECC 버퍼링되지 않은 RAM이 ECC 등록 RAM만큼 좋은가요(안전성과 신뢰성의 관점에서)? 아니면 더 나쁜 선택일까요? 속도에는 별로 관심이 없습니다.**

안전성과 안정성의 관점에서 ECC-unbuffered와 ECC-registered는 동일합니다.


자세한 내용: 서버는 최대 24 x 3 ½'' 드라이브가 장착된 서버 케이스를 사용하며 가능한 한 적은 양을 소비해야 합니다.

24개의 드라이브는 많은 전력을 소비하게 됩니다. 드라이브에 따라 금액이 달라집니다. 내 140GB 15K RPM SAS 드라이브는 유휴 상태에서 1TB SATA 7k2 디스크와 마찬가지로 단 10와트만 소모합니다. 사용 시 둘 다 더 많이 그립니다.

여기에 24를 곱합니다. 유휴 상태에서 24x10W는 디스크 플래터의 회전을 유지하고 공기 저항을 극복하기 위해 240W를 의미합니다. 사용하기 위해 두 배로 늘리십시오.


그런 의미에서 LGA1155는 두 배의 가격으로 다른 제품(>80W)에 비해 더 나은 선택(TDP ~ 20-95W)인 것 같습니다.

인텔은 이 글을 쓰는 시점과 언급한 CPU에 대해 저전력 CPU에서 더 좋습니다.

어떤 제안이라도 환영합니다. 유휴 상태에서 120W 미만이라고 가정해 보겠습니다(하드 디스크 24개 중 10개).

FreeBSD를 선택한다면 ZFS를 자세히 살펴보세요. 그것은 좋을 수 있습니다. 많은 고급 기능(예: 중복 제거 및/또는 압축)은 심각한 CPU 성능을 사용하며 충분한 메모리가 필요합니다. ZRAID와 함께 기본적으로 사용하기 위한 ZFS는 언급한 CPU 세트와 16GB 모두에서 잘 작동하지만 중복 제거와 같은 기능을 활성화하는 경우 디스크 용량에 필요한 권장 메모리를 주의 깊게 살펴보아야 합니다. 스토리지 TB당 최대 5GB 권장일부 가이드.

두 가지 더:

  1. 드라이브 연결에 대해서는 아무 것도 보지 못했습니다. 일부 보드는 최대 10개의 SATA 포트를 사용할 수 있습니다. 하지만 그 이상을 위해서는 추가 카드가 필요합니다. 하드웨어 RAID를 고려한다면 처음부터 이를 계획하는 것이 가장 좋습니다.
  2. 드라이브 오류: 사용해야 합니다.SATA 포트 승수그런 다음 SATA 드라이브에 장애가 발생하면 어떻게 작동하는지 주의 깊게 살펴보십시오. 예쁘지 않은 경우가 많습니다. 홈 설정에는 큰 문제가 아니지만 엔터프라이즈급은 아닙니다. 개별 드라이브가 오류를 처리하는 방법도 고려해야 할 수도 있습니다. 일부 드라이브에 "NAS" 또는 "RAID"용으로 표시되는 이유는 해당 드라이브가 일반 드라이브와 다르게 오류를 처리하기 때문입니다. RAID가 없으면 드라이브가 가능한 한 여러 번 재시도하기를 원합니다. RAID를 사용하면드라이브가 빨리 고장나기를 원합니다, 다른 사본에서 읽을 수 있습니다.

답변3

두 가지 별도의 문제입니다.

ECC 대 비 ECC

  • 가동 시간이 중요한 곳에서는 ECC를 사용하세요
  • 비용이 더 많이 듭니다. 8개 대신 9개의 칩이 필요합니다(배수).
  • 마더보드는 그것을 사용하기 위해 그것을 지원해야합니다

등록된 것과 버퍼되지 않은 것:

  • 등록된 DIMM을 사용하면 더 많은 총 RAM을 설치할 수 있습니다.
    • 메모리 컨트롤러 인터페이스의 전기적 부담 감소
  • 단, 설치된 모든 DIMM을 등록해야 합니다.
    • 등록형으로 업그레이드하는 경우 버퍼링되지 않은 DIMM을 제거해야 합니다.
  • 또한 비용이 더 많이 들고 액세스 주기가 더 느립니다.
    • 버퍼링되지 않은 경우 지연 시간이 약간 더 낮습니다.
    • 어쨌든 모든 무작위 액세스에는 많은주기가 걸립니다
    • 참고 절대 액세스 대기 시간(나노초 단위의 시간)은 PC에서 DRAM을 사용한 이력에 비해 크게 개선되지 않았습니다.
      • 대신 비용, 용량 및 대역폭이 크게 향상되었습니다.
      • 메모리 캐시는 어쨌든 대부분의 메모리 액세스에 대한 대기 시간을 숨깁니다.
    • 대기 시간이 길수록 단일 스레드 '실시간' 성능이 가장 저하됩니다.
      • 일반적으로 '서버' 사용 사례에는 큰 영향을 미치지 않습니다.
    • 대역폭과 전체 성능에 차이가 없거나 최소화됩니다.
      • 순차 액세스 대역폭은 영향을 받지 않습니다.
      • L2/L3 캐시는 실제 액세스 패턴이 대부분 캐시의 한 번에 행을 대체하므로 일반적으로 '버스트' 액세스라는 것을 의미합니다.

관련 정보