2014.04.09

안드로이드 폰 배터리 급속 소모의 주범 ‘잠을 깨우는 앱’ 문제 해결법

Ryan Whitwam | Greenbot
이른 오후인데 이미 안드로이드 폰의 배터리는 "E"를 향해 달려간다. 어떻게 된 것일까? 스마트폰은 디지털 라이프의 허브라더니, 배터리가 없으면 빛 좋은 개살구가 아닌가?

중요한 순간에 폰에 꺼지는 사태를 방지하려면 배터리 소비의 주범을 미리 밝혀내야 한다. 지금부터 과연 무엇이 문제인지 추적해 보도록 하자. 운이 좋다면 기능을 희생하지 않고도 배터리 소모 문제를 해결할 수 있을 것이다.

웨이크록(Wakelock)의 문제
안드로이드의 백그라운드 프로세스 관리는 지난 몇 년 사이 많이 발전했다. 초창기부터 안드로이드를 써온 사람이라면 "작업 종료기(task killer)"가 필수였던 시절의 지긋지긋했던 경험이 아직 생생할 것이다. 물론 안드로이드 전반적으로 배터리 수명 문제가 있는 것은 아니다. 다만 불량 앱을 사용할 경우 안드로이드의 프로세스 관리 체계가 무너질 수 있다.

배터리를 절약하기 위해 흔히 통용되는 방법은 멀티태스킹 인터페이스를 열어 사용하지 않는 애플리케이션을 종료하는 것인데, 안타깝게도 사람들은 아직도 이 미신을 신봉한다. 그러나 안드로이드는 백그라운드 작업을 알아서 잘 관리한다. 게다가 멀티태스킹 인터페이스에서 앱을 없애봤자 포그라운드 프로세스만 닫힐 뿐이다. 정말 어떤 앱이 배터리 문제를 일으킨다면 원인은 보통 백그라운드 프로세스다. 즉 위와 같은 세세한 관리는 그저 시간 낭비일 뿐이다.

켜짐과 화면 켜짐을 비교해 보라.


기본 안드로이드 배터리 사용 메뉴도 도움이 될 수 있지만 여기서 제공되는 정보에는 한계가 있다. 표시되는 대부분의 앱은 사용자가 실제로 많이 사용하는 앱들이다. 즉, 배터리 소비량이 많아도 정상인 것들이다. 이 메뉴는 그저 배터리를 사용 중인 시스템 프로세스와 앱 패키지가 무엇인지 보여줄 뿐이다.

다만 여기서 '켜짐’과 '화면 켜짐' 라인은 상당히 중요하다. 화면 켜짐에 비해 켜짐 시간이 훨씬 더 많다면 무언가가 폰이 잠들지 못하도록 막고 있다는 뜻이다. 이것을 웨이크록(wakelock)이라고 하며, 웨이크록이 바로 배터리 수명에 있어 최대의 적이다.

앱 또는 서비스는 프로세스를 실행해야 할 경우 알람으로 잠자던 기기를 깨운다. 웨이크록 모드는 CPU를 계속 깨운 상태로 유지해서 앱이 작업을 수행할 수 있도록 한다. 일반적으로 이는 큰 문제가 되지 않는다. 앱이 일을 마치면 기기는 다시 수면 상태로 돌아가기 때문이다. 그러나 충돌과 버그로 인해 웨이크록이 해제되지 않으면 폰은 수면 상태로 돌아갈 수가 없게 된다. 배터리를 잡아먹는 요소를 잡으려면 이 스마트폰 불면증을 일으키는 근본적인 원인을 찾아야 한다.

문제 해결
폰이 장시간 동안 웨이크록 상태에 있는지 여부를 금방 알아내기 어려울 수도 있다. 화면은 꺼져 있으니 정상적인 대기 상태인 것처럼 보인다. 뭔가 잘못 돌아간다는 한 가지 단서는 지나친 발열이다. CPU가 수면 상태가 아니라 움직이는 상태라면 손에 잡았을 때 기기가 체감될 정도로 따뜻할 것이다. 다만 여기서부터는 탐정이 되어야 한다. 앱의 도움을 받으면 쉽게 사건을 해결할 수 있다.

잠못드는 폰을 감시하는 빠르고 쉬운 방법 중 하나는 시스템 모니터(System Monitor)와 같은 앱을 사용해서 CPU 클럭 속도를 추적하는 것이다. 이 앱은 CPU 작업을 백분율로 세분화한다. 기기를 거의 쉴 틈 없이 계속 사용하지 않는 한, "Deep Sleep"이 차트에서 가장 많은 부분을 차지해야 한다. 그렇지 않다면 오작동하는 앱이나 시스템 프로세스가 있다는 뜻이다.



배터리 지속 시간 단축의 정확한 원인을 찾기 위해서는 조금 더 깊게 파 내려가야 한다. 이 작업을 위한 최선의 앱은 베터배터리스탯(BetterBatteryStats)이다. 개발자가 XDA 포럼에 무료 베타 빌드를 공개했지만 구글 플레이에서 판매도 되고 있다. 루팅한 사용자의 경우 조금 더 많은 정보를 볼 수 있지만 거의 모든 기기에서 웨이크록에 대한 일정한 데이터를 볼 수 있다.

앱이 몇 시간 동안 조정할 시간을 준 다음 커널 웨이크록(Kernel Wakelocks)와 신스 언플러그드(Since unplugged)를 필터링한다. 이 목록의 가장 윗부분에 웨이크록 시간이 많은 프로세스가 있다면 그것이 바로 범인이다. 커널 웨이크록은 suspend_backoff 또는 wlan과 같은 시스템 프로세스다. BBS(BetterBatteryStats)는 가끔 웨이크록에 대한 더 자세한 정보와 문제 해결을 위한 몇 가지 방법으로 연결되는 링크를 제공한다. 그렇지 않은 경우 정확한 시스템 프로세스에 대한 정보를 검색해서 해결 방법을 찾으면 된다. 재부팅을 통해 폰이 정신을 차리도록 하면 문제가 해결되는 경우가 많다.

오작동하는 앱이 있는 것으로 의심된다면 파워매니저서비스(PowerManagerService) 목록을 확인한다. 여기에는 앱이 유발하는 부분적 웨이크록이 모여 있다. 루팅한 사용자는 이 앱에서 부분적 웨이크록을 볼 수 있지만 그 외의 사용자는 최근 설치한 앱과 파워매니저서비스 문제의 시작을 비교하는 조사 작업이 필요하다. 확인하려면 의심되는 앱을 제거하고 BBS에서 참조점을 만들고 폰을 대기 상태로 둔 다음 잠시 후에 웨이크록을 확인한다. 파워매니저서비스가 더 이상 대기 시간의 대부분을 차지하지 않는다면 문제를 해결한 것이다.

웨이크록: 최대의 적


설치된 앱이 문제의 근원인 경우가 많다. 이 문제에 대처하는 가장 쉬운 방법은 문제가 되는 앱이나 게임을 설치하지 않는 것이지만 배터리를 급속히 소모한다는 단점에도 불구하고 그 앱을 꼭 써야 하는 경우가 있다. 그러한 경우에는 프로세스를 안전하게 종료하는 방법이 필요하다. 안드로이드에는 프로세스를 절전모드로 설정하는 방법이 기본적으로 제공되는데, 그리니파이(Greenify)라는 앱으로 이 기능을 손쉽게 호출할 수 있다.

그리니파이를 사용해서 문제가 되는 앱을 파악하고, 그 앱을 다 사용했으면 절전 버튼을 누르면 된다. 그리니파이는 루트 접근 권한이 있어야 최대한의 기능으로 작동하며 모든 작업을 백그라운드에서 수행한다. 루팅되지 않은 기기의 경우 앱내 버튼을 사용하거나 위젯을 사용해서 절전 루틴을 수동으로 불러내는 방법을 쓰면 된다. editor@itworld.co.kr


2014.04.09

안드로이드 폰 배터리 급속 소모의 주범 ‘잠을 깨우는 앱’ 문제 해결법

Ryan Whitwam | Greenbot
이른 오후인데 이미 안드로이드 폰의 배터리는 "E"를 향해 달려간다. 어떻게 된 것일까? 스마트폰은 디지털 라이프의 허브라더니, 배터리가 없으면 빛 좋은 개살구가 아닌가?

중요한 순간에 폰에 꺼지는 사태를 방지하려면 배터리 소비의 주범을 미리 밝혀내야 한다. 지금부터 과연 무엇이 문제인지 추적해 보도록 하자. 운이 좋다면 기능을 희생하지 않고도 배터리 소모 문제를 해결할 수 있을 것이다.

웨이크록(Wakelock)의 문제
안드로이드의 백그라운드 프로세스 관리는 지난 몇 년 사이 많이 발전했다. 초창기부터 안드로이드를 써온 사람이라면 "작업 종료기(task killer)"가 필수였던 시절의 지긋지긋했던 경험이 아직 생생할 것이다. 물론 안드로이드 전반적으로 배터리 수명 문제가 있는 것은 아니다. 다만 불량 앱을 사용할 경우 안드로이드의 프로세스 관리 체계가 무너질 수 있다.

배터리를 절약하기 위해 흔히 통용되는 방법은 멀티태스킹 인터페이스를 열어 사용하지 않는 애플리케이션을 종료하는 것인데, 안타깝게도 사람들은 아직도 이 미신을 신봉한다. 그러나 안드로이드는 백그라운드 작업을 알아서 잘 관리한다. 게다가 멀티태스킹 인터페이스에서 앱을 없애봤자 포그라운드 프로세스만 닫힐 뿐이다. 정말 어떤 앱이 배터리 문제를 일으킨다면 원인은 보통 백그라운드 프로세스다. 즉 위와 같은 세세한 관리는 그저 시간 낭비일 뿐이다.

켜짐과 화면 켜짐을 비교해 보라.


기본 안드로이드 배터리 사용 메뉴도 도움이 될 수 있지만 여기서 제공되는 정보에는 한계가 있다. 표시되는 대부분의 앱은 사용자가 실제로 많이 사용하는 앱들이다. 즉, 배터리 소비량이 많아도 정상인 것들이다. 이 메뉴는 그저 배터리를 사용 중인 시스템 프로세스와 앱 패키지가 무엇인지 보여줄 뿐이다.

다만 여기서 '켜짐’과 '화면 켜짐' 라인은 상당히 중요하다. 화면 켜짐에 비해 켜짐 시간이 훨씬 더 많다면 무언가가 폰이 잠들지 못하도록 막고 있다는 뜻이다. 이것을 웨이크록(wakelock)이라고 하며, 웨이크록이 바로 배터리 수명에 있어 최대의 적이다.

앱 또는 서비스는 프로세스를 실행해야 할 경우 알람으로 잠자던 기기를 깨운다. 웨이크록 모드는 CPU를 계속 깨운 상태로 유지해서 앱이 작업을 수행할 수 있도록 한다. 일반적으로 이는 큰 문제가 되지 않는다. 앱이 일을 마치면 기기는 다시 수면 상태로 돌아가기 때문이다. 그러나 충돌과 버그로 인해 웨이크록이 해제되지 않으면 폰은 수면 상태로 돌아갈 수가 없게 된다. 배터리를 잡아먹는 요소를 잡으려면 이 스마트폰 불면증을 일으키는 근본적인 원인을 찾아야 한다.

문제 해결
폰이 장시간 동안 웨이크록 상태에 있는지 여부를 금방 알아내기 어려울 수도 있다. 화면은 꺼져 있으니 정상적인 대기 상태인 것처럼 보인다. 뭔가 잘못 돌아간다는 한 가지 단서는 지나친 발열이다. CPU가 수면 상태가 아니라 움직이는 상태라면 손에 잡았을 때 기기가 체감될 정도로 따뜻할 것이다. 다만 여기서부터는 탐정이 되어야 한다. 앱의 도움을 받으면 쉽게 사건을 해결할 수 있다.

잠못드는 폰을 감시하는 빠르고 쉬운 방법 중 하나는 시스템 모니터(System Monitor)와 같은 앱을 사용해서 CPU 클럭 속도를 추적하는 것이다. 이 앱은 CPU 작업을 백분율로 세분화한다. 기기를 거의 쉴 틈 없이 계속 사용하지 않는 한, "Deep Sleep"이 차트에서 가장 많은 부분을 차지해야 한다. 그렇지 않다면 오작동하는 앱이나 시스템 프로세스가 있다는 뜻이다.



배터리 지속 시간 단축의 정확한 원인을 찾기 위해서는 조금 더 깊게 파 내려가야 한다. 이 작업을 위한 최선의 앱은 베터배터리스탯(BetterBatteryStats)이다. 개발자가 XDA 포럼에 무료 베타 빌드를 공개했지만 구글 플레이에서 판매도 되고 있다. 루팅한 사용자의 경우 조금 더 많은 정보를 볼 수 있지만 거의 모든 기기에서 웨이크록에 대한 일정한 데이터를 볼 수 있다.

앱이 몇 시간 동안 조정할 시간을 준 다음 커널 웨이크록(Kernel Wakelocks)와 신스 언플러그드(Since unplugged)를 필터링한다. 이 목록의 가장 윗부분에 웨이크록 시간이 많은 프로세스가 있다면 그것이 바로 범인이다. 커널 웨이크록은 suspend_backoff 또는 wlan과 같은 시스템 프로세스다. BBS(BetterBatteryStats)는 가끔 웨이크록에 대한 더 자세한 정보와 문제 해결을 위한 몇 가지 방법으로 연결되는 링크를 제공한다. 그렇지 않은 경우 정확한 시스템 프로세스에 대한 정보를 검색해서 해결 방법을 찾으면 된다. 재부팅을 통해 폰이 정신을 차리도록 하면 문제가 해결되는 경우가 많다.

오작동하는 앱이 있는 것으로 의심된다면 파워매니저서비스(PowerManagerService) 목록을 확인한다. 여기에는 앱이 유발하는 부분적 웨이크록이 모여 있다. 루팅한 사용자는 이 앱에서 부분적 웨이크록을 볼 수 있지만 그 외의 사용자는 최근 설치한 앱과 파워매니저서비스 문제의 시작을 비교하는 조사 작업이 필요하다. 확인하려면 의심되는 앱을 제거하고 BBS에서 참조점을 만들고 폰을 대기 상태로 둔 다음 잠시 후에 웨이크록을 확인한다. 파워매니저서비스가 더 이상 대기 시간의 대부분을 차지하지 않는다면 문제를 해결한 것이다.

웨이크록: 최대의 적


설치된 앱이 문제의 근원인 경우가 많다. 이 문제에 대처하는 가장 쉬운 방법은 문제가 되는 앱이나 게임을 설치하지 않는 것이지만 배터리를 급속히 소모한다는 단점에도 불구하고 그 앱을 꼭 써야 하는 경우가 있다. 그러한 경우에는 프로세스를 안전하게 종료하는 방법이 필요하다. 안드로이드에는 프로세스를 절전모드로 설정하는 방법이 기본적으로 제공되는데, 그리니파이(Greenify)라는 앱으로 이 기능을 손쉽게 호출할 수 있다.

그리니파이를 사용해서 문제가 되는 앱을 파악하고, 그 앱을 다 사용했으면 절전 버튼을 누르면 된다. 그리니파이는 루트 접근 권한이 있어야 최대한의 기능으로 작동하며 모든 작업을 백그라운드에서 수행한다. 루팅되지 않은 기기의 경우 앱내 버튼을 사용하거나 위젯을 사용해서 절전 루틴을 수동으로 불러내는 방법을 쓰면 된다. editor@itworld.co.kr


X