From 62207ec3edea86f09f125ec198fb1d64b9f6c9a0 Mon Sep 17 00:00:00 2001 From: Lukasz Ziarek Date: Fri, 25 Aug 2023 16:59:01 -0400 Subject: [PATCH] space edits --- main.tex | 2 +- sections/dynamic.tex | 8 ++++---- sections/evaluation.tex | 28 ++++++++++++++-------------- sections/introduction.tex | 2 +- sections/regimes.tex | 2 +- sections/unjustified.tex | 4 ++-- sections/wasted.tex | 12 ++++++------ 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/main.tex b/main.tex index 43cf1d3..ecc227c 100644 --- a/main.tex +++ b/main.tex @@ -1,4 +1,4 @@ -\documentclass[sigconf,anonymous,10pt,review]{acmart} +\documentclass[sigconf,10pt,anonymous,review]{acmart} %\documentclass[sigconf,10pt]{acmart} \usepackage{todonotes} diff --git a/sections/dynamic.tex b/sections/dynamic.tex index eeb5286..1b1e7c8 100644 --- a/sections/dynamic.tex +++ b/sections/dynamic.tex @@ -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. diff --git a/sections/evaluation.tex b/sections/evaluation.tex index fea80cc..3b8af18 100644 --- a/sections/evaluation.tex +++ b/sections/evaluation.tex @@ -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*} diff --git a/sections/introduction.tex b/sections/introduction.tex index 637ec02..4fb3aa2 100644 --- a/sections/introduction.tex +++ b/sections/introduction.tex @@ -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} diff --git a/sections/regimes.tex b/sections/regimes.tex index a1317de..25565b0 100644 --- a/sections/regimes.tex +++ b/sections/regimes.tex @@ -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} diff --git a/sections/unjustified.tex b/sections/unjustified.tex index 461b527..82a6de5 100644 --- a/sections/unjustified.tex +++ b/sections/unjustified.tex @@ -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*} diff --git a/sections/wasted.tex b/sections/wasted.tex index 6d22367..565ff0f 100644 --- a/sections/wasted.tex +++ b/sections/wasted.tex @@ -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}