메모리 오류는 실제로 발생한다
일반 사용자에게 메모리 오류는 체감하기 어려운 영역이다. 컴퓨터가 갑자기 멈추거나 블루스크린이 뜰 때 메모리를 의심하는 경우는 많지 않다. 하지만 구글이 2009년에 발표한 대규모 연구에 따르면, DRAM에서 발생하는 비트 오류율은 기존 학계의 추정보다 훨씬 높았다. 서버 한 대당 연간 수천 건의 교정 가능한 단일 비트 오류가 발생한다는 결과였다. 서버는 수천 대가 동시에 가동되고, 각각이 중요한 데이터를 처리하므로 이 오류율은 무시할 수 없는 수준이다.
비트 오류가 왜 발생하는가
DRAM의 메모리 셀은 극미세한 커패시터에 전하를 저장하는 방식으로 데이터를 보관한다. 이 전하는 시간이 지나면 자연 방전되기 때문에 주기적으로 리프레시(Refresh)를 수행한다. 문제는 우주에서 날아오는 고에너지 입자, 칩 패키징 소재에서 나오는 알파 입자, 전자기 간섭 등 외부 요인이 커패시터의 전하 상태를 뒤집을 수 있다는 점이다. 0이 1로, 1이 0으로 바뀌는 비트 플립(Bit Flip) 현상이다. 메모리 용량이 클수록, 가동 시간이 길수록 이 현상의 발생 확률은 비례해서 높아진다.
ECC 메모리의 작동 원리
ECC(Error-Correcting Code) 메모리는 데이터를 저장할 때 추가적인 패리티 비트를 함께 기록한다. 일반 메모리 모듈이 64비트 데이터 버스를 사용하는 반면, ECC 메모리는 72비트를 사용한다. 추가된 8비트가 해밍 코드(Hamming Code) 기반의 오류 검출 및 교정에 쓰인다. 읽기 과정에서 데이터 비트와 패리티 비트를 대조하여 단일 비트 오류(Single-Bit Error)를 자동 교정하고, 이중 비트 오류(Double-Bit Error)를 감지할 수 있다. SECDED(Single Error Correction, Double Error Detection)이 가장 널리 쓰이는 ECC 알고리즘이다.
ECC가 없으면 무슨 일이 벌어지는가
일반 데스크톱에서 비트 플립이 발생하면 게임이 한 번 튕기거나 워드프로세서가 비정상 종료되는 수준에서 끝날 수 있다. 하지만 서버 환경에서는 상황이 다르다. 데이터베이스 인덱스의 한 비트가 뒤집히면 쿼리 결과가 달라진다. 금융 시스템에서 잔액 데이터의 비트가 변조되면 실제 금전적 손실로 이어진다. 하이퍼바이저의 메모리 매핑 테이블에 오류가 발생하면 VM 전체가 크래시한다. 이 모든 사고가 로그에 명확한 원인을 남기지 않기 때문에 추적과 재현이 극히 어렵다는 점이 가장 위험하다.
RDIMM과 LRDIMM
서버용 ECC 메모리는 형태에 따라 UDIMM, RDIMM, LRDIMM으로 나뉜다. RDIMM(Registered DIMM)은 메모리 모듈에 레지스터 칩을 탑재하여 메모리 컨트롤러의 전기적 부하를 줄인다. 이 덕분에 한 채널에 더 많은 DIMM을 장착할 수 있어 대용량 구성에 유리하다. LRDIMM(Load-Reduced DIMM)은 데이터 버퍼 칩까지 추가하여 부하를 더욱 줄이고, RDIMM보다 높은 밀도와 대역폭을 제공한다. 가격은 LRDIMM이 가장 비싸고, 대규모 메모리가 필요한 인메모리 데이터베이스(SAP HANA 등)나 대형 가상화 환경에서 주로 사용된다.
정리
ECC 메모리는 서버 환경에서 데이터 무결성을 보장하는 마지막 방어선이다. 비트 오류는 통계적으로 반드시 발생하며, 그 영향은 서버 환경에서 치명적이다. 서버를 구축하면서 비용을 아끼겠다고 일반 메모리를 선택하는 것은 보험 없이 운전하는 것과 같다.
답글 남기기