From: Thomas Pietrzak Date: Tue, 9 Nov 2021 10:54:38 +0000 (+0100) Subject: figure lagmeter X-Git-Tag: first-full-draft~112 X-Git-Url: https://git.thomaspietrzak.com/?a=commitdiff_plain;h=82c1421778bdfe58825595f5f4c26247ba75c645;p=hdr.git figure lagmeter --- diff --git a/figures/lagmeter.tex b/figures/lagmeter.tex new file mode 100644 index 0000000..59beec6 --- /dev/null +++ b/figures/lagmeter.tex @@ -0,0 +1,88 @@ +%!TEX root = ../hdrmain.tex + +\begin{figure}[htb] + \centering + \definecolor{cellred}{rgb} {0.98,0.17,0.15} + \definecolor{cellblue}{rgb} {0.17,0.60,0.99} + \definecolor{celldarkred}{rgb} {0.68,0.15,0.13} + \definecolor{celldarkblue}{rgb} {0.15,0.40,0.69} + % + \newcommand{\labelcell}[2]{ + \node[minimum width=1.0cm, minimum height=.75cm,text width=3.0cm, align=center, outer sep=0, column sep=0cm](#1) {\textbf{#2}}; + } + \newcommand{\bluecell}[3]{ + \node[minimum width=1.2cm, minimum height=1.2cm,fill=cellblue, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2}; + } + \newcommand{\redcell}[3]{ + \node[minimum width=1.2cm, minimum height=1.2cm,fill=cellred, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2}; + } + \newcommand{\darkbluecell}[3]{ + \node[minimum width=1.2cm, minimum height=1.2cm,fill=celldarkblue, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2}; + } + \newcommand{\darkredcell}[3]{ + \node[minimum width=1.2cm, minimum height=1.2cm,fill=celldarkred, text=white,text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2}; + } + \newcommand{\dashedcell}[3]{ + \node[minimum width=1.2cm, minimum height=1.2cm,dashed, text=black, draw=black, text width=1.2cm, align=center, rounded corners=1mm, outer sep=0](#3) at (#1) {#2}; + } + %\tikzexternalenable + \begin{tikzpicture} + \scriptsize + \begin{scope}[x=1mm, y=1mm] + + %\node[anchor=south west] () at (0, 55) {Device}; + %\draw[very thick] (0,55) -- (170,55); + + \redcell{15,65}{User action}{} + \dashedcell{30,65}{HID sent}{mousehid} + \darkbluecell{125,65}{Sytem response}{} + + \draw[fill=black!10, rounded corners=2mm] (0,0) rectangle (170,55); + + \node[anchor=south west] () at (0, 10) {Host computer}; + \draw[very thick] (0,10) -- (170,10); + + \bluecell{45,20}{Raw HID received}{rawhidreceived1} + \draw[ultra thick] (45,8) -- (45,12); + \node[anchor=north] () at (45, 8) {piezo}; + \dashedcell{60,20}{HID received}{hosthid} + \draw[ultra thick] (60,8) -- (60,12); + \node[anchor=north] () at (60, 8) {libpointing}; + \dashedcell{75,20}{Low-level event}{} + \draw[ultra thick] (75,8) -- (75,12); + \node[anchor=north] () at (75, 8) {system}; + \dashedcell{90,20}{Event delivered}{} + \draw[ultra thick] (90,8) -- (90,12); + \node[anchor=north] () at (90, 8) {toolkit}; + \dashedcell{105,20}{Window repaint}{} + \draw[ultra thick] (105,8) -- (105,12); + \node[anchor=north] () at (105, 8) {repaint}; + \dashedcell{120,20}{Screen update}{} + \draw[ultra thick] (120,8) -- (120,12); + \node[anchor=north] () at (120, 8) {screen}; + \darkbluecell{160,20}{Raw HID received}{rawhidreceived2} + \draw[ultra thick] (160,8) -- (160,12); + \node[anchor=north] () at (160, 8) {photodiode}; + + \node[anchor=south west] () at (0, 35) {Arduino}; + \draw[very thick] (0,35) -- (170,35); + + \bluecell{20,45}{Piezo trigger}{} + \draw[ultra thick] (20,33) -- (20,37); + \node[anchor=north] () at (20, 33) {piezo}; + \bluecell{35,45}{Raw HID sent}{rawhidsent1} + \darkbluecell{135,45}{Photo-diode trigger}{} + \draw[ultra thick] (135,33) -- (135,37); + \node[anchor=north] () at (135, 33) {photodiode}; + \darkbluecell{150,45}{Raw HID sent}{rawhidsent2} + + \path[-{Stealth[length=2mm, width=1.5mm]}, dashed, to path={-| (\tikztotarget)}] (mousehid) edge (hosthid); + \path[-{Stealth[length=2mm, width=1.5mm]}, dashed, to path={-| (\tikztotarget)}] (rawhidsent1) edge (rawhidreceived1); + \path[-{Stealth[length=2mm, width=1.5mm]}, dashed, to path={-| (\tikztotarget)}] (rawhidsent2) edge (rawhidreceived2); + + \end{scope} + \end{tikzpicture} + %\tikzexternaldisable + \caption[LagMeter measurement process.]{LagMeter measurement process.} + \label{fig:lagmeter} +\end{figure} diff --git a/tex/3-input.tex b/tex/3-input.tex index 2bde8cb..30b16f1 100644 --- a/tex/3-input.tex +++ b/tex/3-input.tex @@ -311,24 +311,23 @@ It is a methodology and study about the latency of touch-based interactive syste Every interactive system has a delay between the moment users perform an action and when the system produces a response. This delay is refered to as \defword{end-to-end latency}. This latency is known to cause performance and usability issues~\cite{deber15,jota13,teather09,waltemate16}. -Therefore, there are research studies about strategies to mitigate these effects or reduce latency~\cite{nancel18}. +Therefore, there are research studies about strategies to mitigate these effects or reduce latency~\cite{cattan15,nancel18}. In order to reduce latency or its effects, it is importantto measure it, and understand the contribution of each part of the system to it. -There are many possible sources of latency: the input and output, the software and hardware, the device and the host. -Typical latency measurement methods used high-speed cameras~\cite{ng12,steed08,teather09}. -The method is simple, but it is difficult to make many measurements and it is impossible to slice the latency between the several steps of the process. +There are many possible sources of latency: input and output, software and hardware, device and host. +Typical latency measurement methods consisted in counting frames on videos made with a high-speed camera~\cite{ng12,steed08,teather09}. +This method is simple, but tedious. +It is difficult to make large series of measurements and it is impossible to identify the main sources of latency. +Other methods enable repetitive measures, but they are adapted to specific input types~\cite{casiez15,deber16}. +Therefore, we created the LagMeter: a latency measurement tool that facilitates repetitive measures, and enables the slicing of latency between several parts of the interactive system~\cite{casiez17}. +It measures the end-to-end latency between any tap-based input (keyboard, mouse, touchpad, touchscreen, …) and the resulting change on the screen. -%Any interactive system exhibits some delay between a user’s action and the corresponding system response, known as the end-to-end latency. This latency is caused by many factors pertaining to the input device, the operating system (e.g. de- vice drivers, control and communication policies), the soft- ware toolkits and application used, as well as the output de- vice. Depending on its amount and variation over time (jit- ter), the end-to-end latency can degrade the action-perception loop, impact user performance and make the system feel less responsive and interactive. + +%Any interactive system exhibits some delay between a user’s action and the corresponding system response, known as the end-to-end latency. This latency is caused by many factors pertaining to the input device, the operating system (e.g. device drivers, control and communication policies), the soft- ware toolkits and application used, as well as the output device. Depending on its amount and variation over time (jitter), the end-to-end latency can degrade the action-perception loop, impact user performance and make the system feel less responsive and interactive. %Latency has long been known to affect performance and user perception in indirect pointing tasks, Virtual Reality and touch interactions [1, 8–10, 12, 13, 16, 21]. While today’s touchscreens show latencies ranging from 50 to 200 ms [14], it is known that users can perceive touchscreen latency as low as 2 ms [14] and that performance for dragging tasks degrades above 25 ms [10]. In indirect interaction, latencies above 50 ms are noticed and affect performance [8, 9]. %Considering the importance of latency in interactive systems, it is essential to measure and report it, to assess how it af- fects users or the results of an experiment. Until recently, its measure has been a tedious process based on the use of external cameras [11, 14, 15, 18–21] but methods have been proposed to ease the process through interactive tools [2, 6] or repeated measures [3, 7]. These tools can be used to try to reduce latency but it can be a trial and error process without the understanding of the influence of each part of a system. In addition, none of the measurement tools allows to measure end-to-end latency while a user interacts with the system, and existing tools are limited to specific technologies. - -Latency \cite{casiez17} - -previous work on latency measurement: -camera, counting frames -hammer time… -mouse casiez 2016 +\input{figures/lagmeter.tex} Our method is usable with any tap-based input: keyboard, mouse, touchpad, touchscreen. Slicing of latency with software probes.