본문 바로가기

Core BSP 분석/리눅스 커널 핵심 분석

wakelock - 안드로이드

파워 관리 관점에서 안드로이드 디바이스는 간단히 두 가지 상태로 분류할 수 있다. 수면(Deep Sleep)과 깨어난(Wake)이다.

Sleep은 최소한의 파워 리소스를 사용하여 디바이스를 사용할 수 있는 상태이며, Wake는 프로세서 및 대부분의 파워 리소스가 사용을 하여 어떤 작업을 하고 있는 상태이다.  그런데, Wakelock은 디바이스별로 Sleep상태에서 깨우거나 Sleep상태로 들어가는 것을 막을 수 있는 기능이다.

PWL(Partial Wakelock)은 흔히 유저 스패이스에서 구동되고 있는 앱에서 일어나는 wakelock을 의미하며 일어나는 상황 역시 데이터 동기화, 영상 재생 중 화면 꺼짐 방지 등으로 다양하다. 앱을 설치할 때 퍼미션을 살펴보면 시스템 도구 항목 아래 절전 모드로 진입하는 것을 방지한다라고 명시된 부분이 wakelock을 뜻한다. 앱개발 시 WAKE_LOCK이란 퍼미션을 요청해야 하며 허락될 경우 필요한 때에 따라 Sleep상태로 들어가는 것을 방지할 수 있다.

가끔 오랜 시간동안 화면이 꺼져 있어도 디바이스가 Wake 상태였던 것을 종종 확인할 수 있다. 화면이 꺼져 있으며 유저가 디바이스를 사용하고 있지 않지만 wakelock을 통해 프로세서가 활성화되어 필요한 작업을 하고 있다는 것이다.  예를 들어, 특정 앱에서 작업을 스케줄 해둘 경우 시간에 맞춰 작업을 진행하고 끝날 때까진 Wake 상태를 유지한다. Sleep상태에선 최소한의 자원을 이용하지만 Wake 상태에선 파워 리소스를 사용해야 한다. 즉, 배터리를 더 소모한다는 것이다.