diff --git a/design.tex b/design.tex index 2286663..c01d677 100644 --- a/design.tex +++ b/design.tex @@ -1,21 +1,32 @@ \section{design} -A QoE-centric OS must continuously prioritize resources based on their -effect on QoE. Doing so requires the OS to both quantify QoE and understand -which tasks contribute to it. Given the multi-threaded nature of modern apps, -the complexity of the systems they run on, and the operating system's vantage -point, this is a challenging task. Unlike approaches like -AppInsight~\cite{appinsight-osdi2012} that requires app instrumentation, or -QoE Doctor~\cite{qoe-doctor-imc14} which involves human intervention, using QoE -to do continuous resource prioritization for all apps on all devices requires -the ability to measure QoE on unmodified apps and without developer -participation. +To meet smartphone users' expectations, it is necessary to design systems +that can accurately measure and understand QoE, and make decisions based on QoE. +% +A QoE-centric OS must continuously prioritize resources based on their effect +on QoE, which requires the OS to not only quantify QoE, but understand which +tasks contribute to it. +% +Given the multi-threaded nature of modern apps, the complexity of the systems +they run on, and the operating system's vantage point, this is a challenging +task. +% +Unlike approaches like AppInsight~\cite{appinsight-osdi2012} that requires app +instrumentation, or QoE Doctor~\cite{qoe-doctor-imc14} which involves human +intervention, using QoE to do continuous resource prioritization for all apps +on all devices requires the ability to measure QoE on unmodified apps and +without developer participation. -% Task prioritization -As principle, if a user is waiting for something, priority should -be given to any task that contributes to that end. - -%Network prioritization... - -%I/O prioritization... - -%New approaches... +As principle, if a user is waiting for something, priority should be given to +any task that contributes to that end. This priority must extend across +multiple shared components, namely CPUs, disks, networks, batteries. +% +To achieve this goal, the OS must be designed in such a way that gives it +the visiblity it currently lacks into how its actions will affect QoE. +% +To further improve QoE for apps that use the network, this visibility should +extend past the device and into the network so priority decisions can be made +by the network to improve QoE. +% +The design of QoE-centric operating systems may require deep and fundamental +changes in order to measure QoE, understand its effect on various components, +and use that information as feedback to improve it. diff --git a/introduction.tex b/introduction.tex index 7c043b2..1f6f28e 100644 --- a/introduction.tex +++ b/introduction.tex @@ -16,8 +16,8 @@ While modern operating systems such as Android make decisions based on policies meant to improve QoE, it is unclear that these static policies always result in the right decisions. For example, Android uses two mechanisms to control the underlying task scheduling in Linux: thread priority and control groups (cgroup). -Background threads - any thread running in another app, or low priority threads -running in the foreground app - are placed in a cgroup that receives a very +Background threads -- any thread running in another app, or low priority threads +running in the foreground app -- are placed in a cgroup that receives a very limited share of the processor, \( \approx \) 5\% on Nexus 5 running stock Android 5.1.1. Furthermore, the scheduler considers priority for tasks withing the same cgroup. However, thread priorities can be set by app developers both