Public bug reported:

This change provides a mechanism to reduce the number of MMIO doorbell writes 
for the NVMe driver. When running in a virtualized environment like QEMU, the 
cost of an MMIO is quite hefy here. The main idea for the patch is provide the 
device two memory location locations:
     1) to store the doorbell values so they can be lookup without the doorbell
        MMIO write
     2) to store an event index.
I believe the doorbell value is obvious, the event index not so much. Similar 
to the virtio specificaiton, the virtual device can tell the driver (guest OS) 
not to write MMIO unless you are writing past this value.
    
FYI: doorbell values are written by the nvme driver (guest OS) and the event 
index is written by the virtual device (host OS).
    
The patch implements a new admin command that will communicate where these two 
memory locations reside. If the command fails, the nvme driver will work as 
before without any optimizations.

** Affects: linux (Ubuntu)
     Importance: Undecided
     Assignee: Tim Gardner (timg-tpi)
         Status: In Progress

** Affects: linux (Ubuntu Xenial)
     Importance: Undecided
     Assignee: Tim Gardner (timg-tpi)
         Status: In Progress

** Affects: linux (Ubuntu Yakkety)
     Importance: Undecided
     Assignee: Tim Gardner (timg-tpi)
         Status: In Progress

** Affects: linux (Ubuntu Zesty)
     Importance: Undecided
     Assignee: Tim Gardner (timg-tpi)
         Status: In Progress

** Also affects: linux (Ubuntu Zesty)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Yakkety)
   Importance: Undecided
       Status: New

** Also affects: linux (Ubuntu Xenial)
   Importance: Undecided
       Status: New

** Changed in: linux (Ubuntu Xenial)
       Status: New => In Progress

** Changed in: linux (Ubuntu Xenial)
     Assignee: (unassigned) => Tim Gardner (timg-tpi)

** Changed in: linux (Ubuntu Yakkety)
       Status: New => In Progress

** Changed in: linux (Ubuntu Yakkety)
     Assignee: (unassigned) => Tim Gardner (timg-tpi)

** Changed in: linux (Ubuntu Zesty)
       Status: New => In Progress

** Changed in: linux (Ubuntu Zesty)
     Assignee: (unassigned) => Tim Gardner (timg-tpi)

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/1637565

Title:
  nvme: improve performance for virtual Google NVMe devices

Status in linux package in Ubuntu:
  In Progress
Status in linux source package in Xenial:
  In Progress
Status in linux source package in Yakkety:
  In Progress
Status in linux source package in Zesty:
  In Progress

Bug description:
  This change provides a mechanism to reduce the number of MMIO doorbell writes 
for the NVMe driver. When running in a virtualized environment like QEMU, the 
cost of an MMIO is quite hefy here. The main idea for the patch is provide the 
device two memory location locations:
       1) to store the doorbell values so they can be lookup without the 
doorbell
          MMIO write
       2) to store an event index.
  I believe the doorbell value is obvious, the event index not so much. Similar 
to the virtio specificaiton, the virtual device can tell the driver (guest OS) 
not to write MMIO unless you are writing past this value.
      
  FYI: doorbell values are written by the nvme driver (guest OS) and the event 
index is written by the virtual device (host OS).
      
  The patch implements a new admin command that will communicate where these 
two memory locations reside. If the command fails, the nvme driver will work as 
before without any optimizations.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1637565/+subscriptions

-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : kernel-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to