CC Pablo, testpmd maintainer Pablo, This patchset looks really valuable to improve performance debugging. Would you have time to dig into a review please?
2016-05-05 18:46, Zhihong Wang: > This patch enables vhost/virtio pmd performance loopback test in testpmd. > All the features are for general usage. > > The loopback test focuses on the maximum full-path packet forwarding > performance between host and guest, it runs vhost/virtio pmd only without > introducing extra overhead. > > Therefore, the main requirement is traffic generation, since there's no > other packet generators like IXIA to help. > > In current testpmd, io-fwd is the ideal candidate to perform this loopback > test because it's the fastest possible forwarding engine: Start testpmd > io-fwd in host with 1 vhost pmd port, and start testpmd io-fwd in the > connected guest with 1 corresponding virtio pmd port, and these 2 ports > form a forwarding loop, packets received by the host vhost pmd port are > forwarded to the guest virtio pmd port, and packets received by the guest > virtio pmd port are sent to the host vhost pmd port. > > As to traffic generation, "start tx_first" injects a burst of packets into > the loop, which is the ideal way to do that. > > However 2 issues remain: > > 1. If only 1 burst of packets are injected in the loop, there will > almost definitely be empty rx operations, e.g. When guest virtio pmd > port send burst to the host, then it starts the rx immediately, it's > likely the packets are still being forwarded by host vhost pmd port > and haven't reached the guest yet. > > We need to fill up the ring to keep all pmds busy. > > 2. io-fwd doesn't provide retry mechanism, so if packet loss occurs, > there won't be a full burst in the loop. > > To address these issues, this patch: > > 1. Add an io_retry-fwd in testpmd to prevent most packet losses. > > 2. Add parameter to enable configurable tx_first burst number. > > Other related improvements include: > > 1. Handle all rxqs when multiqueue is enabled: Current testpmd forces a > single core for each rxq which causes inconvenience and confusion. > > 2. Show topology at forwarding start: "show config fwd" also does this, > but show it directly can reduce the possibility of mis-configuration. > > 3. Add throughput information in port statistics display for "show port > stats (port_id|all)". > > Finally there's documentation update.