TrotVote
[IT 심층 분석]

장시간 타임랩스 촬영 중 발생하는 리튬이온 배터리 전압 강하와 시스템 패닉 방어 로직

김민준 · IT 시스템 엔지니어|
광활한 은하수의 흐름을 잡아내거나 식물의 개화 과정을 포착하기 위해 스마트폰을 삼각대에 세워두고 수 시간에 걸쳐 타임랩스 촬영을 수행하는 모드는 하드웨어와 전원 관리 시스템에 매우 파괴적인 지구력 한계를 요구합니다. 프로젝트 알파 테스트 리포트에서 겨울철 외부 촬영 시 배터리 잔량이 분명 30% 근처 존재함에도 불구하고 무작위로 시스템 전원이 퍽 꺼져버리거나 운영체제가 커널 블랙아웃 상태로 전환되어 촬영 중이던 영상 파일조차 깨져버리는 끔찍한 피드백이 무더기로 쏟아졌습니다. 단순한 배터리 수명 고갈 문제로 치부하기엔 30퍼센트라는 수치가 눈에 밟혔고 엔지니어의 직감이 이것은 전압 관리 드라이버 단의 심각한 시스템 판단 미스임을 강하게 감지하고 있었습니다. 디버그 케이블을 통해 커널 영역의 전원 관리 IC 즉 PMIC(Power Management IC) 레지스터 덤프를 추출해내자 그 의심은 사실로 판명 났습니다. 영상 캡처 ISP 가속기와 디스플레이 백라이트 프로세서 저장 장치 I/O가 순간표출적으로 동시에 활성화되는 그 미해한 찰나의 마이크로초 단위 간격에 엄청난 피크 전류(Peak Current)가 끌려갔고 리튬 이온 전지의 특성상 내한성으로 인해 일시적으로 배터리 전압 라인이 임계치 이하로 급격히 추락(Voltage Drop)하는 브라운 아웃 현상이 초래된 것입니다. 순간적인 전원 강하를 감지한 운영체제의 하드웨어 보호 데몬은 하드웨어가 타버리는 것을 막기 위해 미련 없이 리셋 트리거를 당겨버렸고 그로 인해 파일 시스템의 저널링 버퍼마저 쓰지 못한 채 동영상 메타데이터가 영구 손상되어 버린 잔인한 폭력 사태였습니다. 이 전압 서지 현상을 다루기 위해 단순히 경고 메시지를 뿜는 데 그친 기존 소프트웨어 전원 관리 데몬을 완전히 뒤엎어 버리는 고난도 시스템 방어 스케줄러를 개발해야 했습니다. 우선 타임랩스라는 도메인의 특성상 초당 1장의 프레임을 찍어내는 동안 나머지 900밀리초 이상의 유휴 시간이 있다는 강점을 파고들었습니다. 저는 AP 내부 프로세스들의 웨이크 락(Wake Lock) 트리거 시간을 분자 단위로 난도질하여 배분했습니다. ISP가 센서의 데이터를 읽어 들이는 순간에는 플래시 스토리지의 디스크 쓰기 오퍼레이션을 강제로 차단하고 코어 클럭을 의도적으로 최저 단계로 고정시켰습니다. 반대로 쓰기 인터벌이 발생할 때에는 비디오 파이프라인의 전원을 내리는 전례 없는 익스트림 마이크로 타임 슬라이스(Micro Time-slice) 전력 분산 프로파일을 커널 단비로 박아버렸습니다. 전력을 빨아먹는 대괴수들이 서로 겹치는 타이밍을 코딩 수준에서 원칙적으로 단절시켜 피크 전류 스파이크를 평탄화한 것이죠. 또한 배터리 전압이 15% 이하로 하강하는 치명적 엣지 구간에서는 촬영 해상도와 텍스처 인코딩 압축률을 동적으로 스로틀링하는 회피 기동 로직도 함께 물렸습니다. 마지막 순간 만에 하나 시스템 셧다운이 강제될 경우 하드웨어 핀 인터럽트를 가로채어 최종 프레임의 헤더 메타데이터만큼은 무조건 커밋을 때리고 자결하도록 파일 시스템 패닉 핸들러의 소멸자 루틴을 재설계하는 방어 기믹까지 마련했습니다. 패치를 감행한 뒤 영하의 냉동고 안에서 밤샘 테스트를 거쳤을 때 시스템은 낡은 전압 곡선에도 굴하지 않고 잔량 1%가 남는 순간까지 처절하면서도 안정적으로 타임랩스를 기록하다가 모든 데이터를 안전히 갈무리한 채 명예롭게 종료되는 기적을 보여주었습니다. 배터리 화학의 불확실성을 소프트웨어의 극한 통제력으로 잠재운 찬란한 디버깅 세션이었습니다.