Skip to main content
QUICK REVIEW

[논문 리뷰] PersisDroid: Android Performance Diagnosis via Anatomizing Asynchronous Executions

Yu Kang, Yangfan Zhou|arXiv (Cornell University)|2015. 12. 25.
Software System Performance and Reliability참고 문헌 15인용 수 5
한 줄 요약

PersisDroid는 UI 이벤트에 의해 트리거되는 비동기 실행을 프로파일링하여 안드로이드 앱 성능을 진단하는 동적 인스트루멘테이션 도구이다. 이 도구는 이러한 실행을 여섯 가지 유형으로 분류하여 다양한 안드로이드 기기에서 저지력, 고호환성으로 추적할 수 있으며, 장시간 대기 시간과 제3자 라이브러리의 잘못된 사용과 같은 성능 저하 요인을 식별한다. 이 도구는 30개의 오픈소스 앱 중 20개에서 잠재적인 문제를 탐지하였다.

ABSTRACT

Android applications (apps) grow dramatically in recent years. Apps are user interface (UI) centric typically. Rapid UI responsiveness is key consideration to app developers. However, we still lack a handy tool for profiling app performance so as to diagnose performance problems. This paper presents PersisDroid, a tool specifically designed for this task. The key notion of PersisDroid is that the UI-triggered asynchronous executions also contribute to the UI performance, and hence its performance should be properly captured to facilitate performance diagnosis. However, Android allows tremendous ways to start the asynchronous executions, posing a great challenge to profiling such execution. This paper finds that they can be grouped into six categories. As a result, they can be tracked and profiled according to the specifics of each category with a dynamic instrumentation approach carefully tailored for Android. PersisDroid can then properly profile the asynchronous executions in task granularity, which equips it with low-overhead and high compatibility merits. Most importantly, the profiling data can greatly help the developers in detecting and locating performance anomalies. We code and open-source release PersisDroid. The tool is applied in diagnosing 20 open-source apps, and we find 11 of them contain potential performance problems, which shows its effectiveness in performance diagnosis for Android apps.

연구 동기 및 목표

  • UI 관련 비동기 실행 작업과 관련된 성능 진단을 위한 효과적인 도구 부족 문제를 해결하기 위해.
  • 안드로이드 앱에서 비동기 실행을 시작하는 다양한 비구조화된 방식을 추적하는 데 도전하는 문제를 해결하기 위해.
  • 소스 코드 또는 커널 재컴파일 없이도 비동기 작업 행동을 캡처할 수 있는 경량, 호환성 있고 효율적인 프로파일링 솔루션을 설계하기 위해.
  • 개발자가 장시간 대기 시간과 제3자 라이브러리 내 비정상적인 작업 관리와 같은 성능 이면을 탐지하고 위치를 파악할 수 있도록 하기 위해.
  • 실제 애플리케이션에서 30개의 오픈소스 안드로이드 앱을 대상으로 평가하여 도구의 효과성을 입증하기 위해.

제안 방법

  • 런타임 패턴을 기반으로 안드로이드에서 비동기 실행을 시작할 수 있는 가능한 모든 방법을 여섯 가지 유형으로 분류한다.
  • 일반 프레임워크 메서드에만 동적 인스트루멘테이션을 적용하여 오버헤드를 최소화하고 다양한 안드로이드 기기와 OS 버전 간 호환성을 확보한다.
  • 작업 단위로 비동기 작업을 프로파일링하여 실행 시간, 대기 시간, 작업 라이프사이클 이벤트를 캡처한다.
  • 대기 시간을 사용하여 실행기구의 잘못된 사용으로 인한 작업 직렬화와 같은 성능 문제를 탐지하는 핵심 지표로 활용한다.
  • 프로파일링 데이터를 활용해 일반적인 악성 패턴을 탐지하며, 이는 AsyncTask의 execute 대신 executeOnExecutor 사용을 잘못하는 것과 제3자 비동기 작업이 취소되지 않은 경우를 포함한다.
  • 커널이나 프레임워크 수정 없이도 구현 가능한 경량이고 비침습적인 인스트루멘테이션 방법을 사용하여 상용 기기에서도 배포가 가능하도록 한다.

실험 결과

연구 질문

  • RQ1UI 이벤트에 의해 트리거되는 비동기 실행은 어떻게 체계적으로 분류하고 추적할 수 있는가?
  • RQ2소스 코드나 커널 수정 없이도 비동기 작업 성능을 저지력, 호환성 있고 효율적으로 프로파일링할 수 있는 방법은 무엇인가?
  • RQ3특히 대기 시간을 중심으로 비동기 작업 행동을 프로파일링하는 것이 실제 안드로이드 앱에서 성능 저하 요인을 효과적으로 드러내는가?
  • RQ4이러한 프로파일링을 통해 AsyncTask의 잘못된 사용이나 취소되지 않은 제3자 비동기 작업과 같은 일반적인 악성 패턴을 어느 정도 탐지할 수 있는가?
  • RQ5이 도구는 다양한 오픈소스 안드로이드 애플리케이션에서 실제 성능 문제를 얼마나 효과적으로 식별하는가?

주요 결과

  • PersisDroid는 30개의 오픈소스 안드로이드 앱 중 20개에서 잠재적인 성능 문제를 성공적으로 식별하여 실제 적용에서의 강력한 탐지 능력을 입증하였다.
  • 과도한 대기 시간으로 인한 성능 문제를 탐지하였으며, 이는 비동기 실행 메커니즘의 오용으로 인한 작업 직렬화를 시사한다.
  • AsyncTask에서 기본 execute 메서드를 사용하는 대신 executeOnExecutor를 사용하지 않는 등의 일반적인 악성 패턴이 프로파일링을 통해 신뢰성 있게 탐지되었다.
  • AsynHttpClient와 같은 라이브러리에서 취소되지 않은 제3자 비동기 작업이 발견되었으며, 이는 자원 누출과 성능 저하의 주요 원인이 되는 것으로 알려져 있다.
  • 동적 인스트루멘테이션 방식은 저오버헤드와 고호환성을 달성하여 재컴파일 없이도 다양한 상용 안드로이드 기기에서 배포가 가능하다.
  • 프로파일링 데이터를 통해 개발자는 성능 이면을 높은 정밀도로 위치 파악할 수 있으며, 이는 수동 디버깅 노력의 상당한 감소를 가능하게 한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.