CSense: A stream-processing toolkit for robust and high-rate mobile sensing applications

This paper presents CSense - a stream-processing toolkit for developing robust and high-rate mobile sensing application in Java. CSense addresses the needs of these systems by providing a new programming model that supports flexible application configuration, a high-level concurrency model, memory management, and compiler analyses and optimizations. Our compiler includes a novel flow analysis that optimizes the exchange of data across components from an application-wide perspective. A mobile sensing application benchmark indicates that flow analysis may reduce CPU utilization by as much as 45%. Static analysis is used to detect a range of programming errors including application composition errors, improper use of memory management, and data races. We identify that memory management and concurrency limit the scalability of stream processing systems. We incorporate memory pools, frame conversion optimizations, and custom synchronization primitives to develop a scalable run-time. CSense is evaluated on Galaxy Nexus phones running Android. Empirical results indicate that our run-time achieves 19 times higher steam processing rate compared to a realistic baseline implementation. We demonstrate the versatility of CSense by developing three mobile sensing applications.

[1]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[2]  Michael D. Ernst,et al.  Practical pluggable types for java , 2008, ISSTA '08.

[3]  Alec Wolman,et al.  MAUI: making smartphones last longer with code offload , 2010, MobiSys '10.

[4]  Octav Chipara,et al.  AudioSense: Enabling real-time evaluation of hearing aid technology in-situ , 2013, Proceedings of the 26th IEEE International Symposium on Computer-Based Medical Systems.

[5]  Insik Shin,et al.  SymPhoney: a coordinated sensing flow execution engine for concurrent mobile sensing applications , 2012, SenSys '12.

[6]  Ryan Newton,et al.  XStream: a Signal-Oriented Data Stream Management System , 2008, 2008 IEEE 24th International Conference on Data Engineering.

[7]  David E. Culler,et al.  The nesC language: A holistic approach to networked embedded systems , 2003, PLDI.

[8]  Robert Stephens,et al.  A survey of stream processing , 1997, Acta Informatica.

[9]  Zhigang Liu,et al.  The Jigsaw continuous sensing engine for mobile phone applications , 2010, SenSys '10.

[10]  David W. McDonald,et al.  Activity sensing in the wild: a field trial of ubifit garden , 2008, CHI.

[11]  Qing Guo,et al.  Balancing energy, latency and accuracy for mobile sensor data classification , 2011, SenSys.

[12]  Ryan Newton,et al.  Design and evaluation of a compiler for embedded stream programs , 2008, LCTES '08.

[13]  Youngki Lee,et al.  SeeMon: scalable and energy-efficient context monitoring framework for sensor-rich mobile environments , 2008, MobiSys '08.

[14]  Qiang Li,et al.  Auditeur: a mobile-cloud service platform for acoustic event detection on smartphones , 2013, MobiSys '13.

[15]  Ramesh Govindan,et al.  Odessa: enabling interactive perception applications on mobile devices , 2011, MobiSys '11.

[16]  Jie Liu,et al.  SpeakerSense: Energy Efficient Unobtrusive Speaker Identification on Mobile Phones , 2011, Pervasive.

[17]  Chenyang Lu,et al.  Reliable clinical monitoring using wireless sensor networks: experiences in a step-down hospital unit , 2010, SenSys '10.

[18]  Ling Bao,et al.  Activity Recognition from User-Annotated Acceleration Data , 2004, Pervasive.

[19]  Youngki Lee,et al.  Orchestrator: An active resource orchestration framework for mobile context monitoring in sensor-rich mobile environments , 2010, 2010 IEEE International Conference on Pervasive Computing and Communications (PerCom).

[20]  William Thies,et al.  StreamIt: A Language for Streaming Applications , 2002, CC.

[21]  Philip Levis,et al.  The nesC language: a holistic approach to networked embedded systems , 2003, SIGP.