space edits
parent
91132af4f3
commit
62207ec3ed
2
main.tex
2
main.tex
|
@ -1,4 +1,4 @@
|
|||
\documentclass[sigconf,anonymous,10pt,review]{acmart}
|
||||
\documentclass[sigconf,10pt,anonymous,review]{acmart}
|
||||
%\documentclass[sigconf,10pt]{acmart}
|
||||
|
||||
\usepackage{todonotes}
|
||||
|
|
|
@ -3,15 +3,15 @@
|
|||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_freqtime_micro.pdf}
|
||||
\bfcaption{Intermittent workloads hurt runtime 2 ways: diretly, by sleeping and indirectly, by inducing slower CPU speeds}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_freqtime_micro.pdf}
|
||||
\bfcaption{Intermittent workloads hurt runtime 2 ways: directly, by sleeping and indirectly, by inducing slower CPU speeds}
|
||||
\label{fig:speed_time_delay}
|
||||
\end{figure}
|
||||
|
||||
%\subsection{The cost and problems of complex speed micromanagement}
|
||||
%\label{complexity_cost}
|
||||
|
||||
Controlling CPU speed on phones stems from a set of fairly intricate subsystems -- the scheduler, idle policy, drivers, as well as the governor iteself.
|
||||
Controlling CPU speed on phones stems from a set of fairly intricate subsystems -- the scheduler, idle policy, drivers, as well as the governor itself.
|
||||
Under common circumstances, they adjust the speed constantly.
|
||||
Despite the complexity, the system often makes bad choices and picks speed that hurt both energy and performance.
|
||||
This is because past CPU utilization -- the bedrock metric of all dynamic governors -- has little to do with the ideal present CPU speed.
|
||||
|
@ -30,7 +30,7 @@ The \schedutil policy sets the CPU speed based on a rolling window of recent run
|
|||
On a phone, workloads typically do not saturate the CPUs but vary constantly in demand.
|
||||
With history-driven dynamic policies such as \schedutil, this triggers constantly changing speeds\cite{nuessle2019benchmarking}.
|
||||
Figure \ref{fig:missed_opportunities} shows how ramp-up already time hurts performance.
|
||||
However,previous studies have additionally noted that intermittent workloads makes this problem significantly worse.\cite{nuessle2019benchmarking}
|
||||
However, previous studies have additionally noted that intermittent workloads makes this problem significantly worse.\cite{nuessle2019benchmarking}
|
||||
Figure \ref{fig:speed_time_delay} illustrates this: We ran the same fixed workload with and without intermittent 5ms sleeps.
|
||||
With no sleep intervals, the top graph shows the workload takes $\sim$7.1s to complete.
|
||||
Adding 1000 5ms sleeps (the bottom graph) induces the governor to keep the speed much lower, hovering around 40\% of maximum throughout the run.
|
||||
|
|
|
@ -3,50 +3,50 @@
|
|||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_jank_allapps.pdf}
|
||||
\bfcaption{Display framedrop proportion for several apps under different CPU policies (10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_jank_allapps.pdf}
|
||||
\bfcaption{Display framedrop for apps under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:jank_allapps}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_energy_allapps.pdf}
|
||||
\bfcaption{Energy usage for several apps under different CPU policies (10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_energy_allapps.pdf}
|
||||
\bfcaption{Energy usage for apps under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:energy_allapps}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_time_per_freq_yt.pdf}
|
||||
\bfcaption{Average time spent per CPU at a given frequency under the default policy for a :30 scripted Youtube interaction (Average of 10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_time_per_freq_yt.pdf}
|
||||
\bfcaption{Average time spent per CPU under the default policy for Youtube (Average of 10 runs, 90\% confidence)}
|
||||
\label{fig:time_per_freq_yt}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_time_per_freq_spot.pdf}
|
||||
\bfcaption{Average time spent per CPU at a given frequency under the default policy for a :30 scripted Spotify interaction (Average of 10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_time_per_freq_spot.pdf}
|
||||
\bfcaption{Average time spent per CPU under the default policy for Spotify (Average of 10 runs, 90\% confidence)}
|
||||
\label{fig:time_per_freq_spot}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_nonidletime_yt.pdf}
|
||||
\bfcaption{CPU non-idle time for a scripted Youtube interaction under different CPU policies (10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_nonidletime_yt.pdf}
|
||||
\bfcaption{CPU non-idle time for Youtube under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:nonidle_yt}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_nonidletime_spot.pdf}
|
||||
\bfcaption{CPU non-idle time for a scripted Spotify interaction under different CPU policies (10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_nonidletime_spot.pdf}
|
||||
\bfcaption{CPU non-idle time for Spotify under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:nonidle_spot}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=\linewidth]{figures/graph_idlejank_heavyload.pdf}
|
||||
\bfcaption{The effect of additional background loads on user experience, for given CPU policies}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_idlejank_heavyload.pdf}
|
||||
\bfcaption{The effect of additional background loads on user experience for given CPU policies}
|
||||
\label{fig:idlejank}
|
||||
\end{figure*}
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_missed_opportunities.pdf}
|
||||
\bfcaption{An example trace of \schedutil's cpu frequency selections for a fixed workload (solid blue). The dotted red line shows a energy/latency optimal frequency choice ($\fenergy$).}
|
||||
\bfcaption{A trace of \schedutil's cpu frequency selections given in blue. The dotted red line shows a energy/latency optimal frequency choice ($\fenergy$).}
|
||||
\label{fig:missed_opportunities}
|
||||
\end{figure}
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/optimize_goal_cpu_speed.pdf}
|
||||
\includegraphics[width=.90\linewidth]{figures/optimize_goal_cpu_speed.pdf}
|
||||
\bfcaption{How CPU speed should flow from the current CPU goal}
|
||||
\label{fig:optimize_goal_cpu_speed}
|
||||
\end{figure}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_u_fixedlen_multicore.pdf}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_u_fixedlen_multicore.pdf}
|
||||
%
|
||||
%\begin{subfigure}{0.45\textwidth}
|
||||
%\centering
|
||||
|
@ -93,7 +93,7 @@ All of the time spent in the areas marked Underperformance represents energy was
|
|||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_time_per_freq_fb.pdf}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_time_per_freq_fb.pdf}
|
||||
\bfcaption{Average time spent per CPU at a given frequency under the default policy for a 25s scripted Facebook interaction (Average of 10 runs, 90\% confidence)}
|
||||
\label{fig:time_per_freq_fb}
|
||||
\end{figure*}
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_oscill_cycles.pdf}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_oscill_cycles.pdf}
|
||||
\bfcaption{Runtime and CPU cyclecount for a fixed compute under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:cycles_time}
|
||||
\end{figure*}
|
||||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_energy_perf_coldstart_spot.pdf}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_energy_perf_coldstart_spot.pdf}
|
||||
\bfcaption{Energy and latency of coldstarting Spotify under different policies (5 runs, 90\% confidence)}
|
||||
\label{fig:coldstart_time_spot}
|
||||
\end{figure*}
|
||||
|
@ -40,16 +40,16 @@ Armed with this knowledge, we realize the \systemname governor: a simple policy
|
|||
|
||||
\begin{figure*}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_nonidletime_fb.pdf}
|
||||
\bfcaption{CPU non-idle time for a scripted Facebook interaction under different CPU policies (10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_nonidletime_fb.pdf}
|
||||
\bfcaption{CPU non-idle time for Facebook under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:nonidle_fb}
|
||||
\end{figure*}
|
||||
|
||||
|
||||
\begin{figure}
|
||||
\centering
|
||||
\includegraphics[width=.95\linewidth]{figures/graph_jank_perspeed_fb.pdf}
|
||||
\bfcaption{Display framedrop proportion for a :30 Facebook interaction under different CPU policies (10 runs, 90\% confidence)}
|
||||
\includegraphics[width=.90\linewidth]{figures/graph_jank_perspeed_fb.pdf}
|
||||
\bfcaption{Display framedrop for Facebook under different CPU policies (10 runs, 90\% confidence)}
|
||||
\label{fig:screendrops_per_freq_fb}
|
||||
\end{figure}
|
||||
|
||||
|
|
Loading…
Reference in New Issue