효율적으로(에너지를 절약하며) Mobile Sensing 하는 방법은 뭐가 있을까?
- 가능한 한 자원 사용을 줄인다.
- Sensor, GPS, WiFi, BT 센싱 시간/횟수
- CPU가 깨어 있는 시간 줄이기
하지만 무작정 자원 사용을 줄인다고 문제가 해결될까?
자원 사용을 줄인다는 것은 그만큼 정확도가 떨어진다는 것이다.
알아내고자 하는 context 정보를 적절한 정확도로 알아낼 수 있는 범위 내에서 줄어야 한다.
위 그림과 같이 실제로 움직임이 존재하지만 움직임이 없었던 시간에만 sensing이 이뤄진다면
매우 낮은 정확도를 보여줘서 쓸모가 없을 것이다.
그렇다면 어떻게 적절한 수준으로 Energy-efficient를 구현해낼 수 있을까?
- H/W 측면의 방법
- 애초에 파워 소모량이 적은 센서, CPU들을 만들어 사용한다.
- S/W 측면의 방법
- 센싱, 데이터 처리 시간/양을 줄여 소모되는 파워를 줄일 수 있도록 Mobile Sensing Pipline을 설계한다.
- Duty Cycling / Adaptive Duty Cycling
- Hierarchical(Conditional) Sensing
- Cloud Offloading
- 센싱, 데이터 처리 시간/양을 줄여 소모되는 파워를 줄일 수 있도록 Mobile Sensing Pipline을 설계한다.
[Duty Cycling]
- 주기적으로 센싱을 하고 데이터 처리를 하는 방법
- Duty cycle
- 신호나 시스템이 일정한 주기를 기준으로 active 상태에 있는 비율
- D = T/P * 100%
- T : active 상태에 있는 시간
- P : 신호의 주기
duty cycle이 작으면 작을수록 센싱에 소요되는 에너지는 줄어들지만
센싱되는 정보들은 줄어들 수밖에 없다.(정확도가 낮아진다.)
그렇다면 적절한 duty cycle은 어떻게 정할 수 있을까?
사람의 특성이나 행동 패턴에 따라서 적절한 duty cycle은 달라질 수 있다.
예를 들어 이전에 만들었던 Step Monitor를 만든다고 할 때 10초마다 1초씩 가속도 센서 데이터를 수집하고 처리한다고 해도 측정되지 않는 step 수가 많아질 것이다.(걷는 경우 10초 중 9초를 측정하지 않게 되므로)
하지만 Location Tracker를 만든다고 하면, 1분에 1번씩만 WiFi scan을 하더라도 큰 오차가 나지 않을 수 있다.
(보통 사람이 어떤 장소에 있으면 수 분, 수십 분 동안 그 장소에 있을 확률이 높으므로)
그래서 Adaptive Duty Cycling 개념이 나왔다.
Adaptive의 사전적 의미는 '적응하다' 이다.
즉, Adaptive 하다는 것은 상황에 맞게 적절히 대응한다는 의미가 된다.
따라서 adaptive duty cycling이란 고정된 하나의 duty cycle로만 실행하는 것이 아니라 감시하고자 하는 이벤트 혹은 결과에 따라서 duty cycle을 동적으로 변경해서 센싱 및 데이터를 처리하는 방법이다.
- 이벤트가 발생하지 않음 → sleeping time을 길게 한다.
- 이벤트가 발생함 → sleeping time을 짧게 한다.
위 그림은 Adaptive Duty Cycling과 Duty Cycling을 비교한 모습이다. 단순히 Duty Cycling이 50인 경우와는 다르게 Adaptive Duty Cycling에서는 감지가 되고 난 이후에 더 많은 센싱 정보들을 받아올 수 있는 것을 확인할 수 있다.
Adaptive duty cycling이 단순 duty cycling보다 좋은 이유는 사람의 행동 패턴에는 locality가 존재하기 때문이다.
예를 들어, 회사원의 주중 오전 시간대의 활동을 생각해보면
출근(이동) - 30분 | 사무실 근무(정지) - 3시간 | 식당 가기(이동) - 10분 | 식사(정지) - 30분 |
이와 같이 일정 시간 동안 정지 혹은 이동을 하는 것과 같은 locality를 의미한다.
Sleeping time 조정은 어떻게 할 수 있을까?
- Exponential increase - Linear decrease ( ex : 2t, 4t, 8t )
- Linear increase - Exponential decrease ( ex : t+a, t + 2a, t + 3a )
- Linear increase - Linear decrease ( ex : t-a, t-2a, t-3a )
Continuous sensing에 비해 에너지 사용을 줄이면서 단순 duty cycling에 비해 정확도를 높일 수 있다.
그러나 duty cycle을 조정하는 적절한 방법을 결정하기 위해서는 application에 대한 이해가 필요하다.
또한 실제로 Duty Cycling을 적용시킬 때 문제가 존재한다.
Wakelock을 사용하지 않으면 CPU가 OFF가 되므로 코드가 실행되지 않는다.(주기적인 센싱/연산 수행불가)
Wakelock을 사용하면, CPU가 항상 ON이 되므로 에너지 낭비가 존재한다.
따라서 필요할 때만 주기적으로 CPU를 사용할 수 있는 방법이 필요하다.
즉, 안드로이드 애플리케이션 코드가 실행 중이지 않더라도 혹은 디바이스가 sleep 상태에 있더라도 애플리케이션이
정해진 시간/간격으로 실행될 수 있도록 하는 방법이 필요하다.
여기서 활용할 수 있는 것이 'AlaramManager 클래스'이다.
- AlaramManager 클래스
- 애플리케이션이 실행 중이지 않은 경우에도, 미래의 특정 시간에 애플리케이션을 실행할 수 있도록 해 줌
- ex ) 알람 시계
- AlarmManager를 통한 Alarm Service를 이용한다.
- AlarmManager 클래스에 정의된 API를 이용해서, 애플리케이션 코드를 실행하려고 하는 타이밍에 맞춰서, 안드로이드 시스템에 알람을 발생하도록 요청할 수 있다.
https://developer.android.com/reference/android/app/AlarmManager.html?hl=ko
https://developer.android.com/training/scheduling/alarms.html?hl=ko
[Hierarchical(Conditional) Sensing]
- low power sensor를 이용해서 특정 조건이 만족되는지를 먼저 확인한 후에 알고 싶은 context 정보를 inference 하는데 필요한 sensor를 사용하는 방법
만약 위치 모니터링 로직에 적용시킨다면
GPS를 계속 켜놓고 위치 데이터를 지속적으로 업데이트받는 것이 아니라
사용자가 움직이고 있는지 여부를 확인해서 이동 중일 때만 GPS를 센싱한다.
(이동 중이 아니라는 것은 한 장소에 머무르고 있다는 것이므로 GPS 센싱을 계속할 필요가 없다.)
만약 가족 간 대화를 감지하는 로직에 적용시킨다면
마이크를 이용해서 계속 audio 데이터를 센싱하고 처리하는 것이 아니라
사용자가 등록해 놓은 가족 구성원가 같이 있는지 여부를 먼저 확인한다.
그리고 같이 있는 경우에만 audio 데이터를 센싱한다.(BT 스캔 등을 통해 같이 있는지 여부 판단 가능)
[Cloud Offloading]
- Mobile sensing pipeline의 일부를 cloud 서버에서 처리하도록 해서 모바일 디바이스의 자원 사용을 줄이는 방법
항상 Offloading이 효율적이라고 말할 수 없다.
어떤 부분을 언제 offloading 하는 것이 효율성을 높일 수 있을지 판단을 내릴 수 있어야 한다.
(에너지 측면만 본다면 offloading을 하기 위해 발생하는 에너지 소모보다 offloading 함으로써 절약할 수 있는 에너지가 커야 의미가 있다.)
- Offloading energy cost
- 모바일에서 서버로 데이터를 전송하거나 서버에서 결과를 받으려면 3G/LTE 혹은 WiFi 통신을 해야 한다.
- 절약되는 energy
- 복잡한 inference 로직 수행을 하지 않음으로써, CPU 연산량을 줄여 소모되는 에너지 소모를 줄인다.
- 복잡한 연산이 요구되는 ( ex : 음성 인식, 이미지 인식 ) 작업을 처리할 때 적용하는 것이 이득이 높다.
'School Study > Mobile System Programming' 카테고리의 다른 글
Energy-efficient Mobile Sensing System Design 2 (AlarmManager) (0) | 2019.05.07 |
---|---|
GPS, WiFi를 이용한 위치 모니터링(Location Tracker) (0) | 2019.04.23 |
Mobile Sensing Pipeline 2 (0) | 2019.04.23 |
Mobile Sensing Pipeline 1 (0) | 2019.04.17 |
Mobile Device Power Measurement (0) | 2019.04.16 |