Hi,

On 07/04/2017 11:49 AM, Maxime Coquelin wrote:
This first RFC, which targets v17.11,  adds support for
VIRTIO_F_IOMMU_PLATFORM feature, by implementing device IOTLB in the
vhost-user backend. It improves the guest safety by enabling the
possibility to isolate the Virtio device.

It makes possible to use Virtio PMD in guest with using VFIO driver
without enable_unsafe_noiommu_mode parameter set, so that the DPDK
application on guest can only access memory its has been allowed to,
and preventing malicious/buggy DPDK application in guest to make
vhost-user backend write random guest memory. Note that Virtio-net
Kernel driver also support IOMMU.

The series depends on Qemu's "vhost-user: Specify and implement
device IOTLB support" [0], available upstream and which will be part
of Qemu v2.10 release.

Performance-wise, even if this RFC has still room for optimizations,
no performance degradation is noticed with static mappings (i.e. DPDK
on guest) with PVP benchmark:
        Traffic Generator: Moongen (lua-trafficgen)
        Acceptable Loss: 0.005%
        Validation run time: 1 min
        Guest DPDK version/commit: v17.05
        QEMU version/commit: master (6db174aed1fd)
        Virtio features: default
        CPU: Intel(R) Xeon(R) CPU E5-2667 v4 @ 3.20GHz
        NIC: 2 x X710
        Page size: 1G host/1G guest
        Results (bidirectional, total of the two flows):
         - base: 18.8Mpps
         - base + IOTLB series, IOMMU OFF: 18.8Mpps
         - base + IOTLB series, IOMMU ON: 18.8Mpps

It seems that I did a mistake when benchmarking with IOMMU on.
Actually, with this RFC, the result is 14.5Mpps, which is a noticeable
performance degradation.

Next revision fixing this issue is coming soon, performance is recovered
to 18.8Mpps.

Cheers,
Maxime

Reply via email to