On 2015/2/9 10:57, Xu, Qian Q wrote: > Haifeng, > No matter mergeable =0 or 1, I have not met the issue that the vhost-user > crash when start VM. Have u changed the code? As you said below, vhost-switch > will notify guest after sending every packet, yes, it's the current code, and > Huawei, Xie will plan to optimize it in future. Is the crash caused by > changing code or any other step? > What do you want for the vhost-user, changing the notification mechanism? > Thx. By the way, sth means something. >
Yes,I have modify the code for compile errors(I replace it with memset(&msgh, 0, sizeof msgh)). The issue is failed to mmap(memory size not align to hugepage's size).I guess this is qemu's bug. In file included from /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/virtio-net.c:34: /usr/include/linux/vhost.h:33: error: expected specifier-qualifier-list before ?pid_t? == Build lib/librte_port cc1: warnings being treated as errors /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-?.c: In function ?read_fd_message?: /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c:141: error: missing initializer /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c:141: error: (near initialization for ?msgh.msg_namelen?) /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c: In function ?send_fd_message?: /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c:213: error: missing initializer /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c:213: error: (near initialization for ?msgh.msg_namelen?) /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c: In function ?vserver_new_vq_conn?: /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c:276: error: missing initializer /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/vhost-net-user.c:276: error: (near initialization for ?vdev_ctx.fh?) make[5]: *** [vhost_user/vhost-net-user.o] Error 1 make[5]: *** Waiting for unfinished jobs.... cc1: warnings being treated as errors /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/virtio-net-user.c: In function ?user_set_mem_table?: /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/virtio-net-user.c:104: error: missing initializer /mnt/sdc/linhf/dpdk-vhost-user/dpdk/lib/librte_vhost/vhost_user/virtio-net-user.c:104: error: (near initialization for ?tmp[0].mapped_address?) > -----Original Message----- > From: Linhaifeng [mailto:haifeng.lin at huawei.com] > Sent: Saturday, February 07, 2015 12:27 PM > To: Xu, Qian Q; Xie, Huawei > Cc: lilijun; liuyongan at huawei.com; dev at dpdk.org > Subject: Re: [dpdk-dev] [PATCH] vhost: notify guest to fill buffer when there > is no buffer > > > > On 2015/2/6 13:54, Xu, Qian Q wrote: >> Haifeng >> Are you using the latest dpdk branch with vhost-user patches? I have never >> met the issue. >> When is the vhost sample crashed? When you start VM or when you run sth in >> VM? Is your qemu 2.2? How about your memory info? Could you give more >> details about your steps? >> >> > > I have knew why you never met the issue.Because vhost-switch will notify > guest after send every packets(performance is not every well). > > static inline int __attribute__((always_inline)) virtio_tx_local(struct > vhost_dev *vdev, struct rte_mbuf *m) { > ... > ret = rte_vhost_enqueue_burst(tdev, VIRTIO_RXQ, &m, 1/*you cant try to > fill with rx_count*/); > .. > > } > >> >> -----Original Message----- >> From: Linhaifeng [mailto:haifeng.lin at huawei.com] >> Sent: Friday, February 06, 2015 12:02 PM >> To: Xu, Qian Q; Xie, Huawei >> Cc: lilijun; liuyongan at huawei.com; dev at dpdk.org >> Subject: Re: [dpdk-dev] [PATCH] vhost: notify guest to fill buffer >> when there is no buffer >> >> >> >> On 2015/2/4 9:38, Xu, Qian Q wrote: >>> 4. Launch the VM1 and VM2 with virtio device, note: you need use qemu >>> version>2.1 to enable the vhost-user server's feature. Old qemu such as >>> 1.5,1.6 didn't support it. >>> Below is my VM1 startup command, for your reference, similar for VM2. >>> /home/qemu-2.2.0/x86_64-softmmu/qemu-system-x86_64 -name us-vhost-vm1 >>> -cpu host -enable-kvm -m 2048 -object >>> memory-backend-file,id=mem,size=2048M,mem-path=/mnt/huge,share=on >>> -numa node,memdev=mem -mem-prealloc -smp 2 -drive >>> file=/home/img/dpdk1-vm1.img -chardev >>> socket,id=char0,path=/home/dpdk-vhost/vhost-net -netdev >>> type=vhost-user,id=mynet1,chardev=char0,vhostforce -device >>> virtio-net-pci,mac=00:00:00:00:00:01, -nographic >>> >>> 5. Then in the VM, you can have the same operations as before, send packet >>> from virtio1 to virtio2. >>> >>> Pls let me know if any questions, issues. >> >> Hi xie & xu >> >> When I try to start VM vhost-switch crashed. >> >> VHOST_CONFIG: read message VHOST_USER_SET_MEM_TABLE >> VHOST_CONFIG: mapped region 0 fd:19 to 0xffffffffffffffff sz:0xa0000 >> off:0x0 >> VHOST_CONFIG: mmap qemu guest failed. >> VHOST_CONFIG: read message VHOST_USER_SET_VRING_NUM >> VHOST_CONFIG: read message VHOST_USER_SET_VRING_BASE >> VHOST_CONFIG: read message VHOST_USER_SET_VRING_ADDR >> run_dpdk_vhost.sh: line 19: 1854 Segmentation fault >> ${RTE_SDK}/examples/vhost/build/app/vhost-switch -c 0x300 -n 4 --huge-dir >> /dev/hugepages -m 2048 -- -p 0x1 --vm2vm 2 --mergeable 0 --zero-copy 0 >> >> >> > > -- > Regards, > Haifeng > > > . > -- Regards, Haifeng