我已经获得了一个测试装置设置,可以对64位Linux客户端执行DMA写操作 . 使用4096字节的DMA传输大小,我只能获得大约80MB /秒的吞吐量,这看起来非常低......

在linux guest虚拟机上,我有一个由虚拟设备写入的相关缓冲区设置,一旦收到IRQ,缓冲区就会被求和(以验证数据的完整性) . 然后重复该过程 .

在设备上,我只是使用 pci_dma_write

在运行我的测试时,qemu(在主机上)的CPU使用情况下,固定CPU(或至少一个核心),这对我来说似乎很奇怪 .

思考?我认为可能有更高的带宽,但我不确定 .

编辑:我正在使用以下命令运行: /x86_64-softmmu/qemu-system-x86_64 -enable-kvm -m 1024 -device e1000,netdev=n0,id=nic0 -netdev user,id=n0,hostfwd=tcp::2222-:22 -device dma_demo_device debian8.qcow2 显然我有enable-kvm标志,但是,我不知道这是否可以解释很多差异......