모든 이야기

단일사건 기능중단: 오류 수가 0인데 데이터가 멈췄다면

메모리의 오류 계수는 0인데 장치에서 새 데이터가 나오지 않는 상황을 생각해 보자. 저장된 비트가 맞다는 사실과 장치가 기능을 수행한다는 사실은 다르다. 단일사건 기능중단(SEFI)은 입자에 의해 장치의 정상 기능이 중단되는 현상을 다룬다. 복잡한 장치에서는 제어 상태나 설정의 교란이 데이터 경로 전체의 정지로 이어질 수 있다.

검사가 도달하지 못한 곳에는 ‘0’도 없다

평소에 읽은 메모리의 검사 결과가 정상이어도, 장치가 이후 읽기 명령에 응답하지 않으면 새 데이터의 정확성을 확인하지 못한다. 검사된 데이터의 오류 수 0과 검사 자체가 수행되지 않은 상태를 같은 항목에 합치면 장애를 숨길 수 있다. 반복되는 이전 데이터가 출력되는 경우에도 값의 형식만 확인하면 정상으로 보일 수 있다.

NASA의 고체 기록장치 자료는 복구 가능한 SEFI와 전원 재인가가 필요한 SEFI를 나누고, 기능과 데이터 손실에 미치는 결과를 함께 제시한다. 복구에 필요한 조치가 다르다는 점이 단순 비트 오류 계수와 구분할 이유다. NASA의 고체 기록장치 분석, 7쪽

그래서 기능 관측에는 명령에 대한 응답과 새 데이터의 도착 여부가 필요하다. 장치 내부의 상태 값을 읽는 것도 도움이 되지만, 그 상태를 읽는 통로까지 멈출 수 있다. 가상의 센서라면 데이터 번호가 증가하는지, 시간표시가 갱신되는지, 지정한 시간 안에 응답이 나오는지를 함께 보도록 설계할 수 있다.

사건의 길이와 복구의 길이를 구분한다

가상 시스템에서 마지막 정상 응답 직후 기능중단이 발생했다고 하자. 응답 대기 한계는 200ms이고, 타임아웃 이후 재초기화에 3초, 데이터 흐름이 다시 유효해지기까지 1초가 더 걸린다. 이 조건의 중단 시간은 0.2+3+1=4.2초다. 입자가 전하를 만든 짧은 시간만 세면 실제 서비스 손실을 거의 설명하지 못한다.

200ms는 이 예제의 최악 감지 대기 시간이다. 사건이 대기 구간의 중간에 발생하면 남은 시간은 더 짧다. 반대로 타임아웃을 검사하는 주기가 따로 있다면 그 지연을 추가해야 한다. 재초기화 완료 표시가 나온 시각과 사용 가능한 데이터가 처음 도착한 시각도 구분해야 한다.

비슷한 사건이 한 시간에 10번 발생하고, 각각 4.2초의 중단을 만들며 서로 겹치지 않는다고 놓으면 총 중단은 42초다. 이 시간만 제외한 가용성은 1−42/3600≈98.83%다. 단순한 가상 계산이지만 ‘열 번 복구에 성공했다’는 결과와 ‘그 시간 동안 계속 동작했다’는 결과의 차이를 보여 준다.

복구 후 오래된 데이터가 섞이거나 일부 프레임이 빠졌다면 가용성 숫자만으로 결과를 끝낼 수 없다. 데이터 연속성이 요구되는 시스템에서는 손실 구간의 표시와 복구 이후 데이터의 유효성까지 관찰해야 한다. 모든 응용이 같은 손실을 허용하는 것도 아니다.

복구 방법의 이름보다 성공 조건을 확인한다

어떤 사건은 설정 재기록으로 돌아오지만 다른 사건은 하드웨어 reset이나 전원 재인가가 필요할 수 있다. 복구 절차는 가벼운 조치부터 시도할 수 있으나, 한 조치가 실패했을 때 다음 단계로 넘어가는 시간도 전체 중단 시간에 포함된다. 실제로 확인하지 않은 reset을 언제나 성공하는 조치로 놓으면 복구 예측이 낙관적으로 변한다.

전원 재인가가 필요한 장치가 여러 소자와 전원을 공유한다면 정상 소자까지 함께 멈출 수 있다. 이때 시험 대상 한 개의 복구 시간만으로 시스템의 중단을 설명할 수 없다. 함께 초기화되는 장치와 데이터 손실 범위를 확인해야 한다.

시험 보고서에서는 관측한 기능중단 수, 오류를 찾을 수 있었던 동작 시간과 조사 조건, 복구 방법, 복구 중 제외된 구간을 구분해 적는 편이 좋다. 감지하지 못한 시간을 정상으로 넣거나 복구 중의 조사량을 모두 같은 관측 기회로 세면 사건률 해석도 달라진다.

단일사건 기능중단에서 중요한 것은 오류가 몇 비트였는지만이 아니다. 어떤 기능이 멈췄고, 어떻게 알아차렸고, 언제부터 다시 쓸 수 있었는지를 이어서 봐야 한다. 그 연결이 갖춰져야 복구 성공이라는 한 줄이 실제 시스템의 가용성으로 바뀐다.