Mir

NBS fullscreen overlay benchmark performance is much lower than BufferQueue

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

Bug Description

NBS fullscreen benchmark performance is much lower than BufferQueue.

$ sudo bin/mir_proving_server --nbuffers=0 &
$ sudo env MIR_CLIENT_PERF_REPORT=log glmark2-mir --fullscreen -b texture
=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR: Intel Open Source Technology Center
    GL_RENDERER: Mesa DRI Intel(R) Haswell Desktop
    GL_VERSION: 3.0 Mesa 11.1.2
=======================================================
[texture] <default>:[2016-03-16 16:47:48.337501] perf: : 1270.00 FPS, render time 0.50ms, buffer lag 1.84ms (3 buffers)
[2016-03-16 16:47:49.337541] perf: : 1284.00 FPS, render time 0.44ms, buffer lag 1.88ms (3 buffers)
[2016-03-16 16:47:50.338014] perf: : 1311.00 FPS, render time 0.45ms, buffer lag 1.83ms (3 buffers)
[2016-03-16 16:47:51.338506] perf: : 1299.00 FPS, render time 0.45ms, buffer lag 1.85ms (3 buffers)
[2016-03-16 16:47:52.338721] perf: : 1309.00 FPS, render time 0.45ms, buffer lag 1.84ms (3 buffers)
[2016-03-16 16:47:53.338970] perf: : 1296.00 FPS, render time 0.44ms, buffer lag 1.86ms (3 buffers)
[2016-03-16 16:47:54.339363] perf: : 1300.00 FPS, render time 0.45ms, buffer lag 1.85ms (3 buffers)
[2016-03-16 16:47:55.339693] perf: : 1299.00 FPS, render time 0.44ms, buffer lag 1.86ms (3 buffers)
[2016-03-16 16:47:56.339954] perf: : 1300.00 FPS, render time 0.44ms, buffer lag 1.85ms (3 buffers)
[2016-03-16 16:47:57.340275] perf: : 1306.00 FPS, render time 0.44ms, buffer lag 1.85ms (3 buffers)
 FPS: 1300 FrameTime: 0.769 ms
=======================================================
                                  glmark2 Score: 1300
=======================================================

$ sudo bin/mir_proving_server &
$ sudo env MIR_CLIENT_PERF_REPORT=log glmark2-mir --fullscreen -b texture
=======================================================
    glmark2 2014.03+git20150611.fa71af2d
=======================================================
    OpenGL Information
    GL_VENDOR: Intel Open Source Technology Center
    GL_RENDERER: Mesa DRI Intel(R) Haswell Desktop
    GL_VERSION: 3.0 Mesa 11.1.2
=======================================================
[texture] <default>:[2016-03-16 16:48:06.510089] perf: : 1795.00 FPS, render time 14238.16ms, buffer lag 1.68ms (4 buffers)
[2016-03-16 16:48:07.510343] perf: : 1884.00 FPS, render time 0.44ms, buffer lag 1.67ms (4 buffers)
[2016-03-16 16:48:08.510718] perf: : 1898.00 FPS, render time 0.44ms, buffer lag 1.66ms (4 buffers)
[2016-03-16 16:48:09.511066] perf: : 1894.00 FPS, render time 0.44ms, buffer lag 1.66ms (4 buffers)
[2016-03-16 16:48:10.511537] perf: : 1877.00 FPS, render time 0.44ms, buffer lag 1.68ms (4 buffers)
[2016-03-16 16:48:11.511716] perf: : 1844.00 FPS, render time 0.44ms, buffer lag 1.72ms (4 buffers)
[2016-03-16 16:48:12.511879] perf: : 1862.00 FPS, render time 0.44ms, buffer lag 1.69ms (4 buffers)
[2016-03-16 16:48:13.512307] perf: : 1842.00 FPS, render time 0.45ms, buffer lag 1.71ms (4 buffers)
[2016-03-16 16:48:14.512818] perf: : 1847.00 FPS, render time 0.44ms, buffer lag 1.71ms (4 buffers)
[2016-03-16 16:48:15.513197] perf: : 1854.00 FPS, render time 0.45ms, buffer lag 1.70ms (4 buffers)
 FPS: 1863 FrameTime: 0.537 ms
=======================================================
                                  glmark2 Score: 1863
=======================================================

Related branches

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

Looks related to bug 1557442. In both cases, an insufficient number of buffers are being given to the client.

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

In case it's not obvious already - The need for 4 buffers in fullscreen mode is due to the simultaneous use of bypass/overlays and framedropping (swap interval 0). Both features require triple buffers, and if used together will require quad-buffers to avoid starving or at least stalling the the pipeline (which is the reduced performance you see).

Kevin DuBois (kdub)
Changed in mir:
assignee: nobody → Kevin DuBois (kdub)
status: New → In Progress
Changed in mir:
milestone: none → 0.22.0
Revision history for this message
Kevin DuBois (kdub) wrote :

seems that setting nbuffers == 4 resolves the situation. Working on adding client-side overallocation when encountering buffer pressure.

summary: - NBS fullscreen benchmark performance is much lower than BufferQueue
+ NBS fullscreen overlay benchmark performance is much lower than
+ BufferQueue
Changed in mir:
importance: Undecided → High
Revision history for this message
Mir CI Bot (mir-ci-bot) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 0.22.0

Changed in mir:
status: In Progress → Fix Committed
Changed in mir:
status: Fix Committed → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package mir - 0.22.1+16.04.20160516.2-0ubuntu2

---------------
mir (0.22.1+16.04.20160516.2-0ubuntu2) yakkety; urgency=medium

  [ Dimitri John Ledkov ]
  * Fix FTBFS error: call of overloaded ‘abs(float)’ is ambiguous, by
    including cmath c++ header.

 -- Łukasz 'sil2100' Zemczak <email address hidden> Thu, 19 May 2016 21:58:43 +0200

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

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.