master
Geoffrey Challen 2015-06-18 19:22:04 -04:00
parent 7bce2a2fbc
commit 3964f8282f
14 changed files with 110 additions and 9 deletions

View File

@ -1,3 +1,9 @@
@misc{nexus5,
author = {{Wikipedia}},
title = "{Nexus 5}",
howpublished =
{\texttt{http://en.wikipedia.org/wiki/Nexus\_5}}
}
@misc{phones,
key = {One In Every 5 People In The World Own A Smartphone},
title = {{O}ne {I}n {E}very 5 {P}eople {I}n {T}he {W}orld {O}wn {A} {S}martphone},

View File

@ -24,6 +24,9 @@ Website: \texttt{http://odin.cse.buffalo.edu/research/}
}
\input{.xxxnote}
\newcommand{\PhoneLab}{\textsc{PhoneLab}}
\hyphenation{Phone-Lab}
\begin{document}
\pagestyle{plain}

View File

@ -55,7 +55,7 @@ for f in files:
real_inputs = []
for possible_input in inputs:
name, ext = os.path.splitext(possible_input)
if name[0] != "." and ext == '':
if not (name[0] == '.' and ext == ''):
possible_input += '.tex'
real_inputs.append(possible_input)
toprocess += real_inputs

View File

@ -1,10 +1,42 @@
\subsection{PhoneLab}
PhoneLab~\cite{phonelab} is a large, programmable smartphone testbed deployed at the the University at Buffalo. PhoneLab provides researchers with limited access to deploy experiments to participants' smartphones, and provides participants with incentives to participate in these experiments. As of June 2015, PhoneLab had 290 total participants, all of whom were using Nexus 5 smartphones running an instrumented branch of Android 4.4.4. The age of these participants vary between 18-70 with a majority of them between 21-40. The gender distribution is approximately 50-50. Participating smartphones log experimental results, which are collected by a centralized service every 24 hours, where they are made available to authorized researchers.
% These logs are then studied and analysed to obtain results such as the ones this script talks about.
\PhoneLab{}~\cite{phonelab} is a public smartphone platform testbed operated
at the University at Buffalo (UB). Approximately 200~UB students, faculty,
and staff use instrumented LG Nexus~5 smartphones~\cite{nexus5} as their
primary device and receive discounted service in return for providing data to
smartphone experiments. \PhoneLab{} participants are balanced between genders
and distributed across ages, and thus representative of the broader
smartphone user population. \PhoneLab{} smartphones run a modified version of
the Android Open Source Platform (AOSP) 4.4.4 "KitKat" including
instrumentation and logging developed in collaboration with the mobile
systems community. Participating smartphones log experimental results which
are uploaded to a centralized server when the device is charging.
\subsection{Data Collection and Analysis}
Our trace data-set is drawn from log data collected by PhoneLab. 11 PhoneLab participants willingly released\footnote{\url{https://phone-lab.org/static/experiment/sample_dataset.tgz}} complete trace data for their phone for the month of March 2015, a period of 31 days. The publicly released trace data includes a log of all statements evaluated by SQLite\footnote{All features are documented at \url{https://phone-lab.org/experiment/data/}}, as well as the calling application and statement run time. Personally identifying information has been stripped out, and prepared statement arguments are only provided as hash values. Of the eleven participants, seven had phones that were participating in the SQLite experiment every day for the full month. The remaining phones were active for 1, 3, 14, and 19 days respectively. A total of 254 phone/days of data were collected. The collected data includes 45,399,550 SQL statements. Of these, we were unable to interpret 308,752 statements (representing slightly over half a percent of the trace) due to a combination of data corruption and the use of unusual SQL syntax. Results presented in this paper are based on the 45,090,798 queries that we were able to successfully parse.
We instrumented the \PhoneLab{} AOSP platform image to log SQLite activity by
modifying the SQLite source code and distributing the updated binary library
as an over-the-air (OTA) platform update to \PhoneLab{} participants.
%
Our logging recorded each SQL statement that was executed, along with its
resulting runtime and the number of rows returned as appropriate.
%
All current \PhoneLab{} instrumentation including our SQLite logging
statements are documented at \url{https://phone-lab.org/experiment/data/}.
%
To protect participant privacy, our instrumentation removes as much
personally-identifying information as possible and well as recording prepared
statement arguments only as hash values.
Our trace data-set is drawn from publicly-available data provided by
11~\PhoneLab{} developers who willingly
released\footnote{\url{https://phone-lab.org/static/experiment/sample_dataset.tgz}}
complete trace data for their phones for March, 2015. Of the eleven
participants, seven had phones that were participating in the SQLite
experiment every day for the full month, with the remaining phones were
active for 1, 3, 14, and 19 days. A total of 254 phone/days of data were
collected including 45,399,550 SQL statements. Of these, we were unable to
interpret 308,752 statements (representing slightly over half a percent of
the trace) due to a combination of data corruption and the use of unusual SQL
syntax. Results presented in this paper that include SQL interpretation are
based on the 45,090,798 queries that we were able to successfully parse.

View File

@ -13,9 +13,10 @@
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__All_Apps__All_Queries__AllRowcountCDFGraph.pdf}
\caption{}
\label{fig-overview-rowcount}
\end{subfigure}%
\caption{\textbf{Summary Statistics for Android SQLite Queries.}}
\caption{\textbf{Summary Statistics for Android SQLite Queries}}
\label{fig-overview}
@ -26,7 +27,7 @@ during our study. We examine how often queries arrive, how long they run, and
how many rows they return---all important inputs into desiging the TPC-Mobile
embedded database benchmark.
Figure~\ref{fig-overview} shows query interarrival times, run times, and
Figure~\ref{fig-overview} shows query interarrival times, runtimes, and
returned row counts (for \texttt{SELECT} statements) for all users,
applications, and non-informational query types (\texttt{SELECT},
\texttt{UPDATE}, \texttt{INSERT}, \texttt{DELETE}) included in our dataset.
@ -42,4 +43,63 @@ that use multiple separate databases, which is not yet captured by our
analysis. \XXXnote{However, our logging is also done above any locking
performed by SQLite, and so this may demonstrate that there are many cases
where multiple application threads are issuing overlapping queries in
parallel.}
parallel, even if the queries are eventually serialized before results are
returned.} Figure~\ref{fig-overview-interarrival} also shows that there are
clearly a large number of periodic queries generated at around 0.1~Hz.
The runtime CDF shown in Figure~\ref{fig-overview-runtime} shows while
overall query runtimes show variation over several orders of magnitude, a
large fraction of queries are executed in between 100~and~1000~$\mu$s.
Further investigation into the small fraction of extremely slow queries may
discover areas for database or application improvement. Finally, the row
count CDF shown in Figure~\ref{fig-overview-rowcount} shows that 80\% of
queries return only one row, indicating that many applications seem to be
using the SQLite database almost as a key-value store.
\begin{figure*}[t]
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__All_Apps__All_Queries__ByTypePreviousQueryCDFGraph.pdf}
\caption{}
\label{fig-app-interarrival}
\end{subfigure}%
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__All_Apps__All_Queries__ByTypeNextQueryCDFGraph.pdf}
\caption{}
\label{fig-app-runtime}
\end{subfigure}%
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__All_Apps__All_Queries__ByTypeRuntimeCDFGraph.pdf}
\caption{}
\label{fig-app-rowcount}
\end{subfigure}%
\caption{\textbf{By-Type Statistics for Android SQLite Queries}}
\label{fig-app}
\end{figure*}
\begin{figure*}[t]
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__Top_10__All_Queries__ByAppPreviousQueryCDFGraph.pdf}
\caption{}
\label{fig-type-interarrival}
\end{subfigure}%
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__Top_10__All_Queries__ByAppRuntimeCDFGraph.pdf}
\caption{}
\label{fig-type-runtime}
\end{subfigure}%
\begin{subfigure}[t]{0.33\textwidth}
\includegraphics[width=\textwidth]{./graphs/activity/All_Devices__Top_10__All_Queries__ByAppRowcountCDFGraph.pdf}
\caption{}
\label{fig-type-rowcount}
\end{subfigure}%
\caption{\textbf{Summary Statistics for Android SQLite Queries}}
\label{fig-type}
\end{figure*}