As we continue to push to reduce latency in our protocol, we thought we’d share how we measure the input latency during our testing. The set up is a bit expensive, but you’re welcome to follow these instructions to test the latency on your own set up. It’s very important to note that every system will be different. Graphics cards, network conditions, and settings all have an impact on the performance of input latency. Probably the biggest culprit for input latency will be VSync, but as you know, VSync removes tearing. Your GPU and the game engine will have an impact as well. It’s important to test the latency of directly inputting the mouse click to the game on your gaming PC. This is your baseline and should be subtracted from the final results with Parsec. Finally, please remember that your ping to the server will have an impact. If you’re testing this on the WAN, please factor in your ping into the calculation. Although if it’s on the WAN, good luck because it will take a really complicated to sync everything!
In a previous blog post (warning this one is long), I detailed how humans perceive latency and different factors that change our perception of lag. Following up on that post, we wanted to demonstrate how we’re measuring lag introduced by the Parsec streaming protocol beyond just image capture, encode, stream, and render, which was measured at just 8 milliseconds in another test.
Setting Up The Input Latency Test
- 2x 240Hz monitors (these were the cheapest we could find and well reviewed)
- 1x host with high performance CPU/GPU similar to 6700K and GTX 1070
- 1x client with Nvidia 10 series GTX 1050 TI or better
- Sony RX100 IV (or any camera capable of recording at 1000FPS) + Tripod
- Gigabit networking/Switch
- Makey Makey Board
- Old game that is capable of running above 240Hz on host
- MPC-HC or other video player capable of displaying one frame at a time
- Win 10 with latest drivers on host & client
- FRAPS running on client machine
Checks Before Beginning Testing
- Verify that both displays are set up exactly the same
- Verify that VSYNC is disabled on client Parsec connection
- Verify FRAPS is running on client machine
- Verify that CS:Source (or other game) is not running in VSYNC mode
- Verify that CS:Source (or other game) is running at minimum / low graphical settings
- Ensure you are playing on local multiplayer match without any other players
- Verify that FRAPS is reporting +240FPS from the Parsec client when connected to host in game
- Verify that your local network is not compromised by other non-essential items like a WIFI access point or other network devices
- Verify camera is set to PAL region to obtain 1000FPS
Testing And Analyzing The Input Latency Test
Analyzing The Footage
Analyzing footage is quite simple and just involves playing back video in MPC-HC, finding the first frame where the LED light is fully illuminated and then counting until you see the first frame of the animation on the client machine. In the instance below, there was 23 frames between the LED of the Makey Makey being fully illuminated, and the client showing the first frame of the shooting animation. Without Parsec, the direct input to the hardware took 16 frames to render the gunshot. This demonstrates Parsec adding just 7 milliseconds of input lag on the local connection.
Establishing A Baseline
It’s important that you also do the same tests with the Makey Makey plugged directly into the host, and record the time it takes between the LED fully illuminated and the first frame of animation on the host display. This will mean you are able to establish baseline latency for a direct USB connection to a gaming PC.
Making Sure The Data Is Consistent
We have noticed that with our testing equipment, there is sometimes latency spikes caused by the host, regardless of whether the mouse is connected directly or via a Parsec client. When testing the Parsec client latency (Makey Makey plugged into client) please additionally make note of the frame that the animation begins on the host machine. If you find there is a large round trip latency between client input and first animation frame on client, there also likely a delay in the host processing that input.
Results Of The Input Lag Testing
Your measurement of Parsec input latency should be:
C-H = Parsec Protocol Latency
C= Parsec Client Input Latency, H= Host direct connection Latency
For our test, C was 23 milliseconds, H was 16 milliseconds, giving a total additional input latency of 7 milliseconds.