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 on 2016-12-21
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.

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
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
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
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