]> git.proxmox.com Git - mirror_qemu.git/commit - block/nvme.c
block/nvme: optimize the performance of nvme driver based on vfio-pci
authorLi Feng <lifeng1519@gmail.com>
Thu, 1 Nov 2018 10:38:07 +0000 (18:38 +0800)
committerFam Zheng <fam@euphon.net>
Wed, 9 Jan 2019 01:38:34 +0000 (09:38 +0800)
commit2916405a11d3119cfa367ea73d66e22ea8118382
tree7a8b3d13cd48bbafde0c95b9bbbff196428f3ded
parent147923b1a901a0370f83a0f4c58ec1baffef22f0
block/nvme: optimize the performance of nvme driver based on vfio-pci

When the IO size is larger than 2 pages, we move the the pointer one by
one in the pagelist, this is inefficient.

This is a simple benchmark result:

Before:
$ qemu-io -c 'write 0 1G' nvme://0000:00:04.0/1

wrote 1073741824/1073741824 bytes at offset 0
1 GiB, 1 ops; 0:00:02.41 (424.504 MiB/sec and 0.4146 ops/sec)

 $ qemu-io -c 'read 0 1G' nvme://0000:00:04.0/1

read 1073741824/1073741824 bytes at offset 0
1 GiB, 1 ops; 0:00:02.03 (503.055 MiB/sec and 0.4913 ops/sec)

After:
$ qemu-io -c 'write 0 1G' nvme://0000:00:04.0/1

wrote 1073741824/1073741824 bytes at offset 0
1 GiB, 1 ops; 0:00:02.17 (471.517 MiB/sec and 0.4605 ops/sec)

 $ qemu-io -c 'read 0 1G' nvme://0000:00:04.0/1

read 1073741824/1073741824 bytes at offset 0
1 GiB, 1 ops; 0:00:01.94 (526.770 MiB/sec and 0.5144 ops/sec)

Signed-off-by: Li Feng <lifeng1519@gmail.com>
Message-Id: <20181101103807.25862-1-lifeng1519@gmail.com>
Signed-off-by: Fam Zheng <famz@redhat.com>
block/nvme.c