Mir

[regression] Latency for fullscreen interval 0 clients (e.g. games and benchmarks) increased with the introduction of nested passthrough

Bug #1651638 reported by Daniel van Vugt
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Kevin DuBois
0.25
Triaged
Medium
Unassigned
mir (Ubuntu)
Undecided
Unassigned

Bug Description

Nested fullscreen interval 0 clients in Mir 0.25.0 had higher latency than interval 1 nested fullscreen clients.

I've reproduced this a couple of times and it is concerning:

Mir 0.25:
   Interval 0: 81ms <-- regression
   Interval 1: 64ms <-- improvement

Mir 0.24:
   Interval 0: 70ms
   Interval 1: 96ms

It's the obvious green spike in this chart:
https://docs.google.com/spreadsheets/d/1RbTVDbx04ohkF4-md3wAlgmxbSI1DttstnT6xdcXhZQ/pubchart?oid=1566479835&format=interactive

Although this regression appears to be resolved in the 0.26 series (lp:mir) it's serious enough that we should look into finding what the cause was so that Mir 0.25.1 can get the same fix.

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

I'm particularly concerned because this suggests series 0.25 has messed up the mailbox dropping algorithm somehow (again).

description: updated
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Using blind bisection I found the revision that fixed it. Rather obvious when you read the comment now...

------------------------------------------------------------
revno: 3827 [merge]
author: Kevin DuBois <email address hidden>
committer: Tarmac
branch nick: development-branch
timestamp: Thu 2016-11-17 08:45:49 +0000
message:
  Have the host and nested-server agree on the swapinterval operation of a nested-client during passthrough. If the nested-client is using swapinterval 0, the nested-server has to tell the host not to queue up buffers in the host server. If the host server starts queueing up buffers, then the spare buffers the nested-client needs for swapinterval0 operation end up queueing in the host server.

  Approved by mir-ci-bot, Alexandros Frantzis, Cemil Azizoglu.
------------------------------------------------------------

Changed in mir:
milestone: 0.25.1 → 0.26.0
assignee: nobody → Kevin DuBois (kdub)
status: New → Fix Committed
tags: added: nested
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Also found where the regression occurred. Unfortunately latency for interval 0 was slightly better before the regression (70ms vs 81ms)...

------------------------------------------------------------
revno: 3746 [merge]
author: Kevin DuBois <email address hidden>
committer: Tarmac
branch nick: development-branch
timestamp: Mon 2016-10-10 07:49:38 +0000
message:
  nested: optimize fullscreen client surfaces by passing their buffers through the nested server to the host server without composing.
  (LP: #1262116). Fixes: https://bugs.launchpad.net/bugs/1262116.

  Approved by Daniel van Vugt, Cemil Azizoglu, mir-ci-bot.
------------------------------------------------------------

summary: - Nested fullscreen interval 0 clients in Mir 0.25.0 had higher latency
- than interval 1
+ [regression] Nested passthrough made latency for interval 0 clients
+ higher
tags: added: regression
summary: - [regression] Nested passthrough made latency for interval 0 clients
- higher
+ [regression] Nested passthrough made latency for fullscreen interval 0
+ clients (e.g. games and benchmarks) higher
summary: [regression] Nested passthrough made latency for fullscreen interval 0
- clients (e.g. games and benchmarks) higher
+ clients (e.g. games and benchmarks) higher than without nested
+ passthrough
summary: - [regression] Nested passthrough made latency for fullscreen interval 0
- clients (e.g. games and benchmarks) higher than without nested
- passthrough
+ [regression] Latency for fullscreen interval 0 clients (e.g. games and
+ benchmarks) increased with the introduction of nested passthrough
description: updated
Revision history for this message
Launchpad Janitor (janitor) wrote :
Download full text (7.2 KiB)

This bug was fixed in the package mir - 0.26.0+17.04.20170126.3-0ubuntu1

---------------
mir (0.26.0+17.04.20170126.3-0ubuntu1) zesty; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.26.0 (https://launchpad.net/mir/+milestone/0.26.0)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI bumped to 43
      . mircommon ABI unchanged at 7
      . mirplatform ABI unchanged at 14
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI unchanged at 11
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI unchanged at 6
      . mircore ABI unchanged at 1
    - Enhancements:
      . New/improved toolkit APIs: MirInputConfig and related functions,
        MirWindow and related functions, DisplayConfig and related functions,
        MirScreencastSpec and related functions,
      . Support for configuring input configuration
      . Introduce toolkit extension mechanism for platform specific APIs.
      . Toolkit extensions for: mesa_drm_auth, set_gbm_device and
        window_coordinate_translation
      . Screencasting to a specific MirBuffer.
      . Add DisplayConfigurationController::base_configuration() so downstreams
        can get the base configuration. (Weirdly they can already set it.).
      . x11 platform: allow adjustable scale parameter.
      . Added EDID support: client API, server logging and in mirout.
      . mirout: Add newer attributes only available in the new display
        config API: scaling factor, subpixel arrangement and form factor.
      . mirout: Log the orientation and logical size of each output too.
      . Replace the mir::Server-overridable Reports with Observers.
      . Add xkbcommon to mirclient.pc Requires.private.
      . Deprecate legacy toolkit APIs that will be removed in Mir 1.0
      . Introduced 'client-side vsync', which dramatically reduces latency
        from the client to the screen (particularly for nested servers like
        Unity8).
    - Bugs fixed:
      . [performance] Restore support for better-than-triple buffering by
        default. (LP: #1240909)
      . Frame rate is artificially low on Diamondville Intel Atom systems due
        to aggressive power management (LP: #1388490)
      . [testsfail] failure in CI in
        AndroidInputReceiverSetup.slow_raw_input_doesnt_cause_frameskipping
        (LP: #1394369)
      . [trusted prompt sessions] Can't open two prompt sessions at the same
        time (LP: #1494197)
      . Changing scale, formFactor or DPI in display configuration causes
        renderer teardown/recreate unnecessarily (LP: #1556142)
      . [testsfail] ApplicationNotRespondingDetection.failure_to_pong_is_
        noticed (LP: #1570327)
      . CI failure in TestClientInput.receives_one_touch_event_per_frame
        (LP: #1570698)
      . Mir-on-X mouse input is jerky/stuttery compared to Mir-on-KMS
        (LP: #1576600)
      . [regression] Two fingers in mir_proving_server now resizes/moves app
        windows (two finger apps unusable) (LP: #1586311)
      . Pointer/cursor input lag in unity8 session (LP: #1591328)
      . PointerConfinement.test_we_update_our_confined_region_on_a_resize
      ...

Read more...

Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers