numam-dpdk/lib/librte_vhost
Maxime Coquelin c16915b871 vhost: improve dirty pages logging performance
This patch caches all dirty pages logging until the used ring index
is updated.

The goal of this optimization is to fix a performance regression
introduced when the vhost library started to use atomic operations
to set bits in the shared dirty log map. While the fix was valid
as previous implementation wasn't safe against concurrent accesses,
contention was induced.

With this patch, during migration, we have:
1. Less atomic operations as only a single atomic OR operation
per 32 or 64 (depending on CPU) pages.
2. Less atomic operations as during a burst, the same page will
be marked dirty only once.
3. Less write memory barriers.

Fixes: 897f13a1f7 ("vhost: make page logging atomic")
Cc: stable@dpdk.org

Suggested-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
2018-05-17 14:19:05 +02:00
..
fd_man.c vhost: fix typo in comment 2018-05-14 22:31:03 +01:00
fd_man.h vhost: fix dead lock on closing in server mode 2018-05-14 22:29:59 +01:00
iotlb.c vhost: remove pending IOTLB entry if miss request failed 2018-02-05 19:56:04 +01:00
iotlb.h vhost: remove pending IOTLB entry if miss request failed 2018-02-05 19:56:04 +01:00
Makefile vhost/crypto: fix build without cryptodev 2018-04-17 12:36:40 +02:00
meson.build vhost/crypto: add public function implementation 2018-04-14 00:43:30 +02:00
rte_vdpa.h vhost: support selective datapath 2018-04-14 00:40:21 +02:00
rte_vhost_crypto.h vhost/crypto: add public function implementation 2018-04-14 00:43:30 +02:00
rte_vhost_version.map lib: clear experimental version tag in linker scripts 2018-05-14 03:37:28 +02:00
rte_vhost.h vhost: deprecate unsafe GPA translation API 2018-04-23 17:12:13 +02:00
socket.c vhost: fix crash on closing in client mode 2018-05-14 22:30:48 +01:00
vdpa.c vhost: support selective datapath 2018-04-14 00:40:21 +02:00
vhost_crypto.c vhost/crypto: handle virtually non-contiguous buffers 2018-05-17 12:29:05 +02:00
vhost_user.c vhost: retranslate vring addr when memory table changes 2018-05-14 22:31:50 +01:00
vhost_user.h vhost/crypto: add user message structure 2018-04-14 00:43:30 +02:00
vhost.c vhost: check all range is mapped when translating GPAs 2018-04-23 16:04:30 +02:00
vhost.h vhost: improve dirty pages logging performance 2018-05-17 14:19:05 +02:00
virtio_crypto.h vhost: add virtio crypto header file 2018-04-14 00:43:30 +02:00
virtio_net.c vhost: improve dirty pages logging performance 2018-05-17 14:19:05 +02:00