Commit 1b1ce456c0f9b56f4c9bec032441d2d0865109a7

Authored by Geoffrey Challen
1 parent fc352ee3

New.

certainty.tex
@@ -17,58 +17,44 @@ variety of different adaptation patterns. @@ -17,58 +17,44 @@ variety of different adaptation patterns.
17 The optional \texttt{evaluate} block of a \texttt{maybe} statement allows 17 The optional \texttt{evaluate} block of a \texttt{maybe} statement allows
18 programmers to provide app-specific \textit{a posteriori} evaluation logic. 18 programmers to provide app-specific \textit{a posteriori} evaluation logic.
19 However, in many cases, we expect that \texttt{maybe} statements will be used 19 However, in many cases, we expect that \texttt{maybe} statements will be used
20 -to achieve common objectives such as improving performance or saving energy.  
21 -To streamline application development, our current system evaluates  
22 -\texttt{maybe} statements without a \texttt{evaluate} block by measuring both  
23 -energy and performance. In cases where one alternative optimizes both, that  
24 -alternative will be used---although the decision may still be time-varying  
25 -due to dependence on time-varying factors such as network availability.  
26 -  
27 -\sloppypar{Cases where \texttt{maybe} statements provide an  
28 -energy-performance tradeoff require more investigation. We are exploring  
29 -several options, including collapsing both metrics into a single score by  
30 -computing the energy-delay product (EDP) of each alternative, or allowing  
31 -users to set a per-app preference indicating whether energy or performance  
32 -should determine \texttt{maybe} alternative selection.}  
33 -  
34 -When \texttt{maybe} statements include a \texttt{evaluate} block, their  
35 -custom evaluation logic must merge any relevant factors into a single score,  
36 -although \texttt{evaluate} blocks can still record other relevant information  
37 -to aid in understanding app behavior. Specifically, while the \texttt{score}  
38 -value is used to evaluate the alternative, the entire JSON object returned by  
39 -the \texttt{evaluate} block is recorded for later analysis. Our standard  
40 -energy and performance \texttt{evaluate} block records energy and performance  
41 -separately in the JSON object but combines them as required into a single  
42 -score. Note that because the \texttt{evaluate} block delivers information to  
43 -the developer through the \texttt{maybe} service, as described below,  
44 -\texttt{maybe} statements can be connected with end-to-end app performance  
45 -metrics that would normally not be visible on the device. \texttt{evaluate}  
46 -blocks may also want to query the user directly, and we are exploring ways to  
47 -make this possible.  
48 -  
49 -In some cases we expect that \texttt{evaluate} blocks may need to know which  
50 -alternative was executed to determine the score---for example, if the two  
51 -alternatives produce different quality output. The simplest solution is to  
52 -have each alternative set a variable indicating that it was used, but we  
53 -believe that eventually including some form of labeling syntax for  
54 -\texttt{maybe} alternatives may be beneficial. 20 +to achieve common objectives such as improving performance or saving energy. To
  21 +streamline application development, our current system evaluates \texttt{maybe}
  22 +statements without a \texttt{evaluate} block by measuring both energy and
  23 +performance. In cases where one alternative optimizes both, that alternative
  24 +will be used---although the decision may still be time-varying due to
  25 +dependence on time-varying factors such as network availability. When
  26 +alternatives produce an energy-performance tradeoff we are exploring several
  27 +options, including collapsing both metrics into a single score by computing the
  28 +energy-delay product (EDP) of each alternative, or allowing users to set a
  29 +per-app energy or performance preference.
  30 +
  31 +\texttt{evaluate} blocks can also record other information to aid adaptation.
  32 +While the \texttt{score} value is used to evaluate the alternative, the
  33 +entire JSON object returned by the \texttt{evaluate} block is delivered to
  34 +the developer for later analysis. This allows \texttt{maybe} statements to be
  35 +connected with end-to-end app performance metrics not visible on the device.
  36 +\texttt{evaluate} blocks may also want to query the user directly, and we are
  37 +exploring ways to make this possible.
  38 +
  39 +We expect that some \texttt{evaluate} blocks may need to know which
  40 +alternative was executed to compute a score---for example, if the two
  41 +alternatives produce different quality output. We are exploring the use of
  42 +automatically-generated labels to aid this process.
55 43
56 If a \texttt{maybe} alternative throws an error, the system will bypass the 44 If a \texttt{maybe} alternative throws an error, the system will bypass the
57 \texttt{evaluate} block and give it the worst possible score. By integrating 45 \texttt{evaluate} block and give it the worst possible score. By integrating
58 -a form of record-and-replay~\cite{gomez2013reran}, it may also be possible to  
59 -roll back the failed alternatives changes and retry another alternative.  
60 -\texttt{maybe} is intended to enable adaptation, not avoid errors, but the  
61 -existence of other alternatives provides our system with a way to work around  
62 -failures caused by uncertainty. Resistance to errors may also encourage  
63 -developers to use \texttt{maybe} statements to prototype alternatives to  
64 -existing well-tested code. 46 +a form of record-and-replay~\cite{gomez2013reran}, it may be possible to roll
  47 +back the failed alternative and retry another. \texttt{maybe} is intended to
  48 +enable adaptation, not avoid errors, but the existence of other alternatives
  49 +provides a way to work around failures caused by uncertainty. Fault tolerance
  50 +may also encourage developers to use \texttt{maybe} statements to prototype
  51 +alternatives to existing well-tested code.
65 52
66 A final question concerns when a \texttt{maybe} alternative should be 53 A final question concerns when a \texttt{maybe} alternative should be
67 -evaluated. In some cases it may be appropriate for \textit{a posteriori}  
68 -evaluation to happen immediately after execution. In others, it may be  
69 -necessary to continue executing the same alternative over a period of time to  
70 -perform a fair comparison. As described previously, \texttt{evaluate} blocks  
71 -can indicate explicitly whether or not to continue evaluating the 54 +evaluated. Some alternatives may require evaluation immediately after
  55 +execution. Others may require repeated execution over a longer period of time
  56 +to perform a fair comparison. As described previously, \texttt{evaluate}
  57 +blocks can indicate explicitly whether or not to continue evaluating the
72 alternative, and we are determining how to make a similar choice available to 58 alternative, and we are determining how to make a similar choice available to
73 \texttt{maybe} statements without \texttt{evaluate} blocks. In addition, 59 \texttt{maybe} statements without \texttt{evaluate} blocks. In addition,
74 \texttt{evaluate} blocks can store state across multiple alternative 60 \texttt{evaluate} blocks can store state across multiple alternative
conclusion.tex
1 -\vspace*{-0.05in}  
2 \section{Conclusion} 1 \section{Conclusion}
3 \label{sec-conclusion} 2 \label{sec-conclusion}
4 3
@@ -8,7 +7,6 @@ development time and for that uncertainty to be resolved through later @@ -8,7 +7,6 @@ development time and for that uncertainty to be resolved through later
8 testing and adaptation. We are in the process of building a prototype of the 7 testing and adaptation. We are in the process of building a prototype of the
9 \texttt{maybe} system for Android smartphones. 8 \texttt{maybe} system for Android smartphones.
10 9
11 -\vspace*{-0.05in}  
12 \section*{Acknowledgments} 10 \section*{Acknowledgments}
13 11
14 Students and faculty working on the \texttt{maybe} project are supported by 12 Students and faculty working on the \texttt{maybe} project are supported by
@@ -19,5 +17,3 @@ and @@ -19,5 +17,3 @@ and
19 \href{http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1423215}{1423215}. 17 \href{http://www.nsf.gov/awardsearch/showAward.do?AwardNumber=1423215}{1423215}.
20 The \texttt{maybe} team thanks the anonymous reviewers and our shepherd, 18 The \texttt{maybe} team thanks the anonymous reviewers and our shepherd,
21 Mahadev Satyanarayanan, for their feedback. 19 Mahadev Satyanarayanan, for their feedback.
22 -  
23 -\vspace*{-0.05in}  
discussion.tex
@@ -5,44 +5,33 @@ @@ -5,44 +5,33 @@
5 5
6 We have yet to determine how natural programmers will find the \texttt{maybe} 6 We have yet to determine how natural programmers will find the \texttt{maybe}
7 statement. Encouragingly, \texttt{maybe} statements are similar to the 7 statement. Encouragingly, \texttt{maybe} statements are similar to the
8 -ubiquitous \texttt{if-else} statement, and in many cases can be used to  
9 -directly replace \texttt{if-else} statements that attempt runtime adaptation.  
10 -To coordinate the adaptation of multiple code paths a single \texttt{maybe}  
11 -variable---such as the policy string in Figure~\ref{fig-maybeexamples}---can  
12 -be used to control multiple \texttt{if-else} statements. 8 +ubiquitous \texttt{if-else} statement, and in many cases can directly replace
  9 +\texttt{if-else} statements that attempt runtime adaptation. To coordinate
  10 +the adaptation of multiple code paths a single \texttt{maybe} variable can be
  11 +used to control multiple \texttt{if-else} statements.
13 12
14 -While \texttt{maybe} is a powerful programming tool, it is important that it  
15 -be used sparingly. If objective dependencies exist between \texttt{maybe}  
16 -statements, the overall configuration space may expand exponentially,  
17 -complicating post-deployment adaptation process. Compile-time analysis may be  
18 -required to detect dependencies between \texttt{maybe} statements and  
19 -encourage programmers to limit their use of \texttt{maybe} if to ensure that  
20 -downstream optimization remains feasible. 13 +Overuse of the \texttt{maybe} statement may cause problems. If dependencies
  14 +exist between \texttt{maybe} statements, the overall configuration space may
  15 +expand exponentially, complicating post-deployment adaptation. Compile-time
  16 +analysis may be required to detect dependencies between \texttt{maybe}
  17 +statements and encourage programmers to limit their use of \texttt{maybe} to
  18 +ensure that downstream optimization remains feasible.
21 19
22 -\texttt{maybe} statements should not be used when adaptation is not  
23 -app-specific and can be refactored into a library. As an example, an app  
24 -should not use \texttt{maybe} to decide which network interface to use when  
25 -attempting to achieve a common objective, such as maximizing throughput. This  
26 -choice would be better refactored into a dedicated library, which might use  
27 -its own internal \texttt{maybe} statements. Not only is the resulting  
28 -codebase smaller, but the total number of \texttt{maybe} statements that the  
29 -system has to test is reduced. 20 +\texttt{maybe} statements should not be used when adaptation can be
  21 +refactored into a library. As an example, an app should not use
  22 +\texttt{maybe} to decide which network interface to use when attempting to
  23 +achieve a common objective, such as maximizing throughput. This adaptation
  24 +should be refactored into a dedicated library, which might use its own
  25 +\texttt{maybe} statements. Not only is the resulting codebase smaller, but
  26 +the total number of \texttt{maybe} statements to test is reduced.
30 27
31 However, the \texttt{maybe} statement represents a fundamentally different 28 However, the \texttt{maybe} statement represents a fundamentally different
32 -approach from attempts to enable runtime adaptation that rely on libraries.  
33 -As a code organization strategy, the benefits that libraries provide in terms  
34 -of reduced duplication and more powerful interfaces are orthogonal and  
35 -complementary to the \texttt{maybe} statement. However, a large amount of  
36 -code including adaptation logic remains app specific and cannot be refactored  
37 -into a library.  
38 -  
39 -More importantly, library development still requires development-time  
40 -certainty. Despite the fact that library developers are more likely to be  
41 -experts at the type of adaptation the library performs, we still believe that  
42 -even the most skilled programmers are not capable of anticipating all  
43 -possible sources of uncertainty and will benefit from being able to express  
44 -structured uncertainty. \texttt{maybe} allows all developers---including both  
45 -app and library writers---to shed the burden of producing a single certain  
46 -approach and instead write uncertain code containing the flexibility needed  
47 -required to enable powerful data-driven approaches to post-deployment  
48 -adaptation. 29 +approach to runtime adaptation than systems that rely on libraries because
  30 +library development still requires development-time certainty. While library
  31 +developers are more likely to be experts at the type of adaptation their
  32 +library performs, we still believe that even the most skilled programmers
  33 +will benefit from being able to express structured uncertainty.
  34 +\texttt{maybe} allows all developers---including both app and library
  35 +writers---to shed the burden of producing a single certain approach and
  36 +instead write uncertain code containing the flexibility required to enable
  37 +powerful data-driven approaches to post-deployment adaptation.
related.tex
@@ -7,21 +7,20 @@ programming with uncertain data, rather than the runtime adaptation enabled @@ -7,21 +7,20 @@ programming with uncertain data, rather than the runtime adaptation enabled
7 by \texttt{maybe}. 7 by \texttt{maybe}.
8 8
9 Aspect oriented programming (AOP)~\cite{aop} aims to increase modularity 9 Aspect oriented programming (AOP)~\cite{aop} aims to increase modularity
10 -through the separation of cross-cutting concerns. The programmer can express  
11 -cross-cutting concerns in stand alone modules, or aspects. Aspects are  
12 -composed of advice, which specifies a computation to be performed as well as  
13 -points in the program at which that computation should be performed.  
14 -Fundamentally, the goals of AOP and the \texttt{maybe} statement differ, with  
15 -AOP focusing on modularity and \texttt{maybe} focused on increasing runtime  
16 -flexibility in the face of uncertainty. 10 +through the separation of cross-cutting concerns. The programmer expresses
  11 +cross-cutting concerns in stand alone modules, or aspects, which specify a
  12 +computation to be performed as well as points in the program at which that
  13 +computation should be performed. Fundamentally, the goals of AOP and the
  14 +\texttt{maybe} statement differ, with AOP focusing on modularity and
  15 +\texttt{maybe} focused on enabling adaptation by expressing uncertainty.
17 16
18 -\texttt{maybe} shares similaries with language-based approaches to managing 17 +\texttt{maybe} shares similaries with language-based approaches to adapting
19 energy consumption such as Eon~\cite{sensys07-eon} and 18 energy consumption such as Eon~\cite{sensys07-eon} and
20 Levels~\cite{sensys07-levels}. However, these approaches still require 19 Levels~\cite{sensys07-levels}. However, these approaches still require
21 -programmers to express certainty by associating code with particular energy  
22 -states, rather than allowing the \texttt{maybe} system to determine which  
23 -energy states are appropriate. \texttt{maybe} can also enable adaptation  
24 -driven by goals other than energy management. 20 +programmers to express certainty by associating code with energy states,
  21 +rather than allowing the \texttt{maybe} system to determine which energy
  22 +states are appropriate. \texttt{maybe} can also enable adaptation driven by
  23 +goals other than energy management.
25 24
26 Attempts to enable more adaptive mobile systems date back to systems such as 25 Attempts to enable more adaptive mobile systems date back to systems such as
27 Odyssey~\cite{odyssey-sosp97}. However, a taxonomy of approaches to enabling 26 Odyssey~\cite{odyssey-sosp97}. However, a taxonomy of approaches to enabling
@@ -30,3 +29,16 @@ the focus of early efforts on incorporating adaptation into libraries that @@ -30,3 +29,16 @@ the focus of early efforts on incorporating adaptation into libraries that
30 could be used by multiple apps. As we have pointed out previously, while 29 could be used by multiple apps. As we have pointed out previously, while
31 adaptation libraries are useful, \texttt{maybe} statements can make them more 30 adaptation libraries are useful, \texttt{maybe} statements can make them more
32 powerful by allowing programmers to express uncertainty. 31 powerful by allowing programmers to express uncertainty.
  32 +
  33 +Recent approaches that allow mobile devices to effectively offload
  34 +computation by automating client-cloud partitioning are also related to the
  35 +\texttt{maybe} statement. Systems such as Tactics~\cite{tactics-mobisys03}
  36 +and MAUI~\cite{FIXME} used a variety of approaches to enabling this form of
  37 +adaptation but are narrowly-focused on harnessing opportunities for remote
  38 +execution. While \texttt{maybe} statements can enable simple decisions about
  39 +whether to offload portions of an app, the \texttt{maybe} approach is not yet
  40 +rich enough to consider how much of the execution should be performed
  41 +remotely or deal with server failures. At present \texttt{maybe} focuses on
  42 +single-device adaptation, but we are interested in exploring the ability to
  43 +use uncertainty to distribute computation between multiple devices as future
  44 +work.