[PATCH v5 0/3] Split gvt lock into per-logic locks

colin.xu at intel.com colin.xu at intel.com
Thu Apr 5 08:27:36 UTC 2018


From: Colin Xu <colin.xu at intel.com>

The patch set splits out 3 small locks from the original big gvt lock:
  - gtt_lock is used to protect the gvt global gtt oos lists.
  - vgpu_lock protects per-vGPU data and logic, especially the vGPU 
    trap emulation path.
  - sched_lock protects gvt scheudler structure, context schedule logic 
    and vGPU's schedule data.

While the 3 new locks are used, the origianl gvt lock will be rarely used. 
One usage example is to protect the available vGPU list.

V5: 
  - Rebase to latest gvt-staging.
  - Use vcpu_lock for intel_vgpu_page_track_handler instead of gvt->lock.
V4: Rebase to latest gvt-staging. Add missing protection.
V3: update to latest code base
V2: fix 2 places lock scope error

Performance comparison on Kabylake platform.
  - Configuration:
    Host: Ubuntu 16.04.
    Guest 1 & 2: Ubuntu 16.04.

glmark2 score comparison:
  - Configuration:
    Host: glxgears.
    Guests: glmark2.
+--------------------------------+-----------------+
| Setup                          | glmark2 score   |
+--------------------------------+-----------------+
| unified lock, iommu=on         | 58~62 (avg. 60) |
+--------------------------------+-----------------+
| unified lock, iommu=igfx_off   | 57~61 (avg. 59) |
+--------------------------------+-----------------+
| per-logic lock, iommu=on       | 60~68 (avg. 64) |
+--------------------------------+-----------------+
| per-logic lock, iommu=igfx_off | 61~67 (avg. 64) |
+--------------------------------+-----------------+

lock_stat comparison:
  - Configuration:
    Stop lock stat immediately after boot up.
    Boot 2 VM Guests.
    Run glmark2 in guests.
    Start perf lock_stat for 20 seconds and stop again.
  - Legend: c - contentions; w - waittime-avg
+------------+-----------------+-----------+---------------+------------+
|            | gvt_lock        |sched_lock | vgpu_lock     | gtt_lock   |
+ lock type; +-----------------+-----------+---------------+------------+
| iommu set  | c     | w       | c  | w    | c    | w      | c   | w    |
+------------+-------+---------+----+------+------+--------+-----+------+
| unified;   | 20697 | 839     |N/A | N/A  | N/A  | N/A    | N/A | N/A  |
| on         |       |         |    |      |      |        |     |      |
+------------+-------+---------+----+------+------+--------+-----+------+
| unified;   | 21838 | 658.15  |N/A | N/A  | N/A  | N/A    | N/A | N/A  |
| igfx_off   |       |         |    |      |      |        |     |      |
+------------+-------+---------+----+------+------+--------+-----+------+
| per-logic; | 1553  | 1599.96 |9458|429.97| 5846 | 274.33 | 0   | 0.00 |
| on         |       |         |    |      |      |        |     |      |
+------------+-------+---------+----+------+------+--------+-----+------+
| per-logic; | 1911  | 1678.32 |8335|445.16| 5451 | 244.80 | 0   | 0.00 |
| igfx_off   |       |         |    |      |      |        |     |      |
+------------+-------+---------+----+------+------+--------+-----+------+

Pei Zhang (3):
  drm/i915/gvt: Use gtt_lock to protect gtt list
  drm/i915/gvt: Use vgpu_lock to protect per vgpu access
  drm/i915/gvt: Use sched_lock to protect gvt scheduler logic.

 drivers/gpu/drm/i915/gvt/display.c      | 35 ++++++++++++----------
 drivers/gpu/drm/i915/gvt/gtt.c          |  7 +++++
 drivers/gpu/drm/i915/gvt/gvt.c          |  7 ++---
 drivers/gpu/drm/i915/gvt/gvt.h          | 18 +++++++++++
 drivers/gpu/drm/i915/gvt/handlers.c     |  4 +++
 drivers/gpu/drm/i915/gvt/mmio.c         | 12 ++++----
 drivers/gpu/drm/i915/gvt/page_track.c   |  5 ++--
 drivers/gpu/drm/i915/gvt/sched_policy.c | 41 +++++++++++++++++++++----
 drivers/gpu/drm/i915/gvt/scheduler.c    | 17 ++++++-----
 drivers/gpu/drm/i915/gvt/vgpu.c         | 53 +++++++++++++++++----------------
 10 files changed, 130 insertions(+), 69 deletions(-)

-- 
2.16.3



More information about the intel-gvt-dev mailing list