Mir

NBS fullscreen overlay benchmark performance is much lower than BufferQueue

Bug #1557962 reported by Daniel van Vugt on 2016-03-16
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Kevin DuBois
mir (Ubuntu)
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

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
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) on 2016-03-22
Changed in mir:
assignee: nobody → Kevin DuBois (kdub)
status: New → In Progress
Changed in mir:
milestone: none → 0.22.0
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
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
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  Edit
Everyone can see this information.

Other bug subscribers