more results, added more latency spike details

This commit is contained in:
aj 2020-05-15 00:42:46 +01:00
parent 458fe19136
commit 93f6a93454
7 changed files with 449 additions and 59 deletions

View File

@ -3121,7 +3121,7 @@ status open
\begin_inset Graphics \begin_inset Graphics
filename ../media/LiveScanArchitecture.png filename ../media/LiveScanArchitecture.png
lyxscale 50 lyxscale 50
width 70col% width 65col%
\end_inset \end_inset
@ -3396,7 +3396,7 @@ status open
\begin_inset Graphics \begin_inset Graphics
filename /home/andy/uni/dissertation/media/calibration.png filename /home/andy/uni/dissertation/media/calibration.png
lyxscale 30 lyxscale 30
width 20col% width 15col%
\end_inset \end_inset
@ -5006,6 +5006,13 @@ name "fig:new-client-server-packet"
\end_layout \end_layout
\begin_layout Standard
The client has had a text box added to the UI in order to allow an integer
source ID to be added.
This value is clamped between 0 and 127 to fit within the allowed range
and is then attached to each frame delivery as described above.
\end_layout
\begin_layout Subsection \begin_layout Subsection
Source Synchronisation Source Synchronisation
\begin_inset CommandInset label \begin_inset CommandInset label
@ -5729,6 +5736,29 @@ noprefix "false"
be considered a complete multi-source presentation layer. be considered a complete multi-source presentation layer.
\end_layout \end_layout
\begin_layout Standard
Currently there is no way to negotiate source IDs with a newly connected
source.
It is the responsibility of each client of a source to select the same
ID.
It is also feasible for a new source to select an occupied ID without challenge
resulting in the server merging both sources together.
This would likely result in the two holograms flickering in the same space
and scatter calculated statistics.
Although attempts could be made to identify clients by IP address, this
would prove ineffective in many situations including IP addresses behind
carrier-grade NAT, those using IPv6 addressing or co-located sources.
Co-located sources could occur at a hypothetical studio utilising the
\noun on
LiveScan3D
\noun default
suite.
One alternative could be for the client to use an alphanumeric identifier
which would be mapped to the integer source ID during connection.
This handshake would then theoretically allow easier implementation of
further validation including authentication methods like passwords.
\end_layout
\begin_layout Standard \begin_layout Standard
The use of a source ID transmitted alongside each frame provides flexibility The use of a source ID transmitted alongside each frame provides flexibility
in that processing can be decoupled from the network infrastructure itself. in that processing can be decoupled from the network infrastructure itself.
@ -5800,6 +5830,60 @@ As a whole, the design of the multi-source developments was intended to
the application. the application.
\end_layout \end_layout
\begin_layout Subsection
Summary
\end_layout
\begin_layout Standard
Within this section the multi-source developments made throughout the
\noun on
LiveScan
\noun default
suite have been presented.
The suite is now capable of supporting multi-source experiences from client
to mobile AR application.
The viewfinder display at the server also provides an interactive space
to view all connected sources.
The limitations of the mobile AR application have been described, notably
the lack of individual touch interaction.
Two concepts of synchronisation have been introduced,
\emph on
active
\emph default
and
\emph on
passive
\emph default
sync.
A method of
\emph on
passive
\emph default
sync will be investigated in section
\begin_inset CommandInset ref
LatexCommand ref
reference "sec:Frame-Rate-Throttling"
plural "false"
caps "false"
noprefix "false"
\end_inset
.
\emph on
Stale
\emph default
sources were defined as sources that have not transmitted any frames within
a set time interval in order to remove them from display.
Finally, the global
\noun on
KinectSettings
\noun default
object was redefined as a per-source object, the main advantage of which
being to allow multi-view sources.
\end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Newpage newpage \begin_inset Newpage newpage
\end_inset \end_inset
@ -6294,6 +6378,31 @@ Android
device. device.
\end_layout \end_layout
\begin_layout Subsection
Summary
\end_layout
\begin_layout Standard
Within this section, efforts made to extend compatibility of the mobile
AR application to iOS devices have been presented.
The goal of migrating the AR SDK from
\noun on
Google's ARCore
\noun default
to
\noun on
Unity's ARFoundation
\noun default
was successful and the app would likely function correctly on
\noun on
Android
\noun default
.
However, the app does not display holograms on iOS due to the included
shader being incompatible.
The app still functions as a useful network debugging tool.
\end_layout
\begin_layout Standard \begin_layout Standard
\begin_inset Newpage newpage \begin_inset Newpage newpage
\end_inset \end_inset
@ -6313,6 +6422,8 @@ name "sec:Frame-Rate-Throttling"
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Operating a server in the cloud could incur long latencies between client
frame capture and display whether at the server or user experience.
As discussed in the evaluations for the As discussed in the evaluations for the
\noun on \noun on
LiveScan LiveScan
@ -6327,14 +6438,13 @@ noprefix "false"
\end_inset \end_inset
), the inclusion of buffers can add to the total effective delay of frames ), the inclusion of buffers can also add to the total effective delay of
from capture to presentation as they propagate through each. frames from capture to presentation as they propagate through each, specificall
This effect is exacerbated when operating across long distances such as y the transmission buffer of the client.
between cloud locations.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
A proposed hypothesis for reducing this delay was to limit the transmitted A proposed hypothesis for reducing this delay is to limit the transmitted
frame rate. frame rate.
It follows that this would reduce the population of each buffer and reduce It follows that this would reduce the population of each buffer and reduce
the time that each frame spent within each. the time that each frame spent within each.
@ -6342,8 +6452,13 @@ A proposed hypothesis for reducing this delay was to limit the transmitted
\begin_layout Standard \begin_layout Standard
This was implemented based on further work by Selinis introducing the concept This was implemented based on further work by Selinis introducing the concept
of a dynamic step calculated from a provided FPS and latency requirement of a
representing the percentage of frames dropped by the client. \emph on
dynamic step
\emph default
.
This step is calculated from an FPS and latency requirement and represents
the percentage of frames to be probabilistically dropped by the client.
This step is transmitted in the header of each frame request theoretically This step is transmitted in the header of each frame request theoretically
allowing the system to dynamically respond to changes in network conditions. allowing the system to dynamically respond to changes in network conditions.
This step relied on global statistics calculated about the This step relied on global statistics calculated about the
@ -6388,8 +6503,8 @@ Implement a moving average scheme on successive subsets of latencies from
\end_layout \end_layout
\begin_layout Itemize \begin_layout Itemize
Allow either an FPS or delay requirement to be provided as well as a combination Allow either an FPS or delay requirement to be provided as well as the existing
of the two in order to the prioritisation of either. combination of the two in order to facilitate the prioritisation of either.
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection
@ -6408,7 +6523,7 @@ KinectServer
\noun on \noun on
SourceStat SourceStat
\noun default \noun default
objects were used. objects was used.
This object collects the FPS, bandwidth and average latencies for each This object collects the FPS, bandwidth and average latencies for each
source allowing simple retrieval and update when iterating through sockets. source allowing simple retrieval and update when iterating through sockets.
\end_layout \end_layout
@ -6535,8 +6650,8 @@ Step Calculation & Use
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
In order to function as a proof-of-concept for future investigations a simple In order to function as a proof-of-concept for future investigations, a
method for calculating the frame drop rate was used. simple method for calculating the frame drop rate was used.
The step began at 0% and was incremented or decremented linearly depending The step began at 0% and was incremented or decremented linearly depending
on the source's latency or FPS with respect to the provided requirements, on the source's latency or FPS with respect to the provided requirements,
an interval of 5% was used. an interval of 5% was used.
@ -6561,7 +6676,7 @@ noprefix "false"
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Each frame the client generates a random number between 0 and 1 and compares Each frame, the client generates a random number between 0 and 1 and compares
this to the step. this to the step.
If this random number is greater than the step then this frame is transmitted, If this random number is greater than the step then this frame is transmitted,
otherwise it is dropped. otherwise it is dropped.
@ -6583,8 +6698,7 @@ The following outlines the methods used to investigate the effect of limiting
client transmission frame rates in order to control the effective display client transmission frame rates in order to control the effective display
latency between a client and server. latency between a client and server.
Similar control methods could be implemented between server and user experience Similar control methods could be implemented between server and user experience
device with similar expected results, however it should be noted that doing device with similar expected results.
both could effectively square the proportion of frames dropped.
Both test environments are presented and the validity of each is discussed. Both test environments are presented and the validity of each is discussed.
\end_layout \end_layout
@ -6733,7 +6847,7 @@ name "fig:body-bandwidth-variation"
The small scale of the controlled LAN environment does not inherently incur The small scale of the controlled LAN environment does not inherently incur
long latencies between nodes and as such does not naturally present a valid long latencies between nodes and as such does not naturally present a valid
environment for these investigations. environment for these investigations.
To test such a scenario full-scene transmissions were used in order to To test such a scenario, full-scene transmissions were used in order to
saturate the available bandwidth. saturate the available bandwidth.
The connection between nodes also included a WiFi connection which limited The connection between nodes also included a WiFi connection which limited
the available bandwidth to around 100Mbps. the available bandwidth to around 100Mbps.
@ -6846,7 +6960,8 @@ The frame drop rate or step,
\end_inset \end_inset
, is defined as the proportion of frames to probabilistically drop at the , is defined as the proportion of frames to probabilistically drop at the
client, this was transformed into an expected frame rate ( client.
This was transformed into an expected frame rate (
\begin_inset Formula $\upsilon_{E}$ \begin_inset Formula $\upsilon_{E}$
\end_inset \end_inset
@ -6866,8 +6981,8 @@ The frame drop rate or step,
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
This allows comparison between the calculated live FPS and what the frame This allows comparison between the live FPS and what the frame drop rate
drop rate should ideally be inducing in this value. should ideally be inducing in this value.
The The
\noun on \noun on
Kinect Kinect
@ -7106,8 +7221,8 @@ name "fig:Latency-and-FPS1"
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Generally, the lowering of the frame drop proportion induces the latency Generally, the lowering of the frame drop proportion beyond a critical value
to begin increasing at a fairly linear rate. induces the latency to begin increasing at a fairly linear rate.
This can be seen in figure This can be seen in figure
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
@ -7135,8 +7250,8 @@ noprefix "false"
\end_inset \end_inset
). ).
Conversely, increasing the step beyond a critical value causes a peak in Conversely, increasing the step causes a peak in the latency before inducing
the latency before inducing the value to begin dropping. the value to begin dropping.
There is a noticeable lag in response, changes in latency are offset in There is a noticeable lag in response, changes in latency are offset in
time from the reception of a changed drop rate. time from the reception of a changed drop rate.
Additionally an initial spike in latency can be seen despite having a 50% Additionally an initial spike in latency can be seen despite having a 50%
@ -7162,6 +7277,8 @@ Looking to the FPS chart, the frame rate drops in response to an increase
\end_inset \end_inset
). ).
From here, the frame drop proportion or step is presented through the previousl
y defined expected frame rate.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -7232,7 +7349,7 @@ yellow
green green
\color inherit \color inherit
). ).
As the latency fell past the requirement, the expected frame rate rose As the latency falls past the requirement, the expected frame rate rises
back to the maximum, each latency spike has an associated frame rate drop. back to the maximum, each latency spike has an associated frame rate drop.
\end_layout \end_layout
@ -7416,7 +7533,7 @@ noprefix "false"
\begin_layout Standard \begin_layout Standard
Many of the induced frame rate drops display a lag in responding to a latency Many of the induced frame rate drops display a lag in responding to a latency
increase, three latency spikes can be seen presented individually in figure increase, six latency spikes can be seen presented individually in figure
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
@ -7428,16 +7545,35 @@ noprefix "false"
\end_inset \end_inset
. .
While the extent of the lag varies, in the first two of these details there While the extent of the lag varies, in the figures
can be seen to be roughly 10 seconds between the expected rate intersecting \begin_inset CommandInset ref
the actual FPS and the induced drop. LatexCommand ref
reference "fig:a-1"
plural "false"
caps "false"
noprefix "false"
\end_inset
and
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:c-2"
plural "false"
caps "false"
noprefix "false"
\end_inset
there can be seen to be roughly 10 seconds between the expected rate intersecti
ng the actual FPS and the induced drop.
Additionally, in these cases the expected frame rate has already started Additionally, in these cases the expected frame rate has already started
increasing before the actual frame rate properly responds. increasing before the actual frame rate properly responds.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Worth noting, however, is the difference in behaviour as the expected frame Worth noting is the difference in lag when the expected frame rate increases
rate increases as opposed to when it is decreasing. as opposed to when it is decreasing.
Visible in much of figure Visible in much of figure
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
@ -7448,7 +7584,7 @@ noprefix "false"
\end_inset \end_inset
and the first two charts of figure and figure
\begin_inset CommandInset ref \begin_inset CommandInset ref
LatexCommand ref LatexCommand ref
reference "fig:lag-spike-details" reference "fig:lag-spike-details"
@ -7458,8 +7594,17 @@ noprefix "false"
\end_inset \end_inset
is that the lag in frame rate decrease is not as visible when frame rates is that the lag in frame rate decrease is generally not visible when the
increase and the actual value more closely follows the expected value. frame rate increases, the actual value more closely follows the expected
value.
\end_layout
\begin_layout Standard
As a whole, in general the observed frame rate can be seen initially to
drop with the expected value before flattening and peaking at a similar
time to latency.
Latency and frame rate in many cases drop at similar times before the FPS
then rises in line with the expected value.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -7468,13 +7613,21 @@ wide false
sideways false sideways false
status open status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout \begin_layout Plain Layout
\noindent \noindent
\align center \align center
\begin_inset Graphics \begin_inset Graphics
filename ../media/graphs/FPSLagSmall.png filename ../media/graphs/FPSLagSmall.png
lyxscale 30 lyxscale 30
width 55col% width 50col%
\end_inset \end_inset
@ -7482,25 +7635,227 @@ status open
\end_layout \end_layout
\begin_layout Plain Layout \begin_layout Plain Layout
\noindent \begin_inset Caption Standard
\align center
\begin_inset Graphics \begin_layout Plain Layout
filename ../media/graphs/FPSLagSmall2.png \begin_inset CommandInset label
lyxscale 30 LatexCommand label
width 55col% name "fig:a-1"
\end_inset \end_inset
\end_layout \end_layout
\end_inset
\end_layout
\end_inset
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout \begin_layout Plain Layout
\noindent \noindent
\align center \align center
\begin_inset Graphics \begin_inset Graphics
filename ../media/graphs/FPSLagSmall3.png filename ../media/graphs/FPSLagSmall3.png
lyxscale 30 lyxscale 30
width 55col% width 50col%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:b-3"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Graphics
filename ../media/graphs/FPSLagSmall2.png
lyxscale 30
width 50col%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:c-2"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Graphics
filename ../media/graphs/FPSLagSmall5.png
lyxscale 30
width 50col%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:d-5"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\end_layout
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Graphics
filename ../media/graphs/FPSLagSmall4.png
lyxscale 30
width 50col%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:e-4"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset
\begin_inset Float figure
wide false
sideways false
status open
\begin_layout Plain Layout
\noindent
\align center
\begin_inset Graphics
filename ../media/graphs/FPSLagSmall6.png
lyxscale 30
width 50col%
\end_inset
\end_layout
\begin_layout Plain Layout
\begin_inset Caption Standard
\begin_layout Plain Layout
\begin_inset CommandInset label
LatexCommand label
name "fig:f-6"
\end_inset
\end_layout
\end_inset
\end_layout
\end_inset \end_inset
@ -7737,22 +8092,45 @@ LAN Premise Validation
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
The lag in latency response could be attributed to a couple of influencing Key in understanding figures
factors. \begin_inset CommandInset ref
A small effect could be posed by the nature of a moving average partially LatexCommand ref
representing previous values when iterating. reference "fig:Local-Dynamic"
This adds plural "false"
\emph on caps "false"
friction noprefix "false"
\emph default
to each successive result and an inherent lag when the data swings. \end_inset
Ultimately the latency in delay is closely related to the delay in FPS
response, discussed in this section. and
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:lag-spike-details"
plural "false"
caps "false"
noprefix "false"
\end_inset
is noting that the latency values measure the time between a frame being
queued at the client and it being received at the server.
An increase in latency suggests that frames are not able to be delivered
to the server at a rate higher than they are being produced and as such
the transmission buffer at the client is filling.
While it may at first appear odd that the observed frame rate peaks as
latency peaks, this can be explained by attributing this to the time where
the network conditions are alleviating and the transmission buffer is emptying.
Hence, the point at which the latency peaks is not the point at which the
network is being stressed most which would be just beforehand when the
latency is increasing.
With an empty buffer, the latency drops and the frame rate falls to the
expected value, more able to match it with the less contested network condition
s.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
Following the implementation of a dynamic step, the latency was no longer Following the implementation of a dynamic step, the latency is no longer
unbounded and instead oscillated as the frame rate increased and decreased. unbounded and instead oscillates as the frame rate increases and decreases.
As a result, the system can be seen to dynamically drop frames in order As a result, the system can be seen to dynamically drop frames in order
to maintain a constant latency in adverse network conditions. to maintain a constant latency in adverse network conditions.
This allows the system to keep up when the amount of frames being produced This allows the system to keep up when the amount of frames being produced
@ -7795,7 +8173,19 @@ Another contributor to this spike could be a delay in delivering new drop
Although the rate moved in real-time at the server, sometimes this did Although the rate moved in real-time at the server, sometimes this did
not appear to be the case at the client. not appear to be the case at the client.
As particular strain was put on the connection, specifically as the latency As particular strain was put on the connection, specifically as the latency
increased, the ability to deliver new drop rates appeared to be compromised. increased, the ability to deliver new drop rates appeared to be compromised,
this would explain why the lag was seen more as the latency increased and
less so when the latency is low (figure
\begin_inset CommandInset ref
LatexCommand ref
reference "fig:lag-spike-details"
plural "false"
caps "false"
noprefix "false"
\end_inset
).
As this is included in the header of each request it was concluded that As this is included in the header of each request it was concluded that
requests were being queued at the server unable to be transmitted over requests were being queued at the server unable to be transmitted over
the socket busy receiving frames. the socket busy receiving frames.
@ -7817,7 +8207,7 @@ With the employed method of controlling transmission latency, representative
\begin_layout Standard \begin_layout Standard
The need to deliver a step from the server to each client created an initial The need to deliver a step from the server to each client created an initial
spike in latency in both environments but was more pronounced in the cloud. spike in latency in both environments but was more pronounced in the cloud.
The previously mentioned issues with rapidly delivering new frame drop The previously mentioned issues with promptly delivering new frame drop
rates was more pronounced in this scenario. rates was more pronounced in this scenario.
\end_layout \end_layout

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

After

Width:  |  Height:  |  Size: 114 KiB

BIN
media/graphs/FPSLagSmall4.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
media/graphs/FPSLagSmall5.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
media/graphs/FPSLagSmall6.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.