Thanks, Nikhil. I will perform the same tests on Arm64 servers. From: nikhil ap <niks3...@gmail.com> Sent: 2018年4月23日 15:24 To: Wei Chen <wei.c...@arm.com> Cc: solo5@lists.h3q.com Subject: Re: [solo5] Improving solo5's network performance
Hi Wei, The changes should be platform agnostic. You should be able to perform the same tests on linux/arm. On Mon, Apr 23, 2018 at 7:34 AM, Wei Chen <wei.c...@arm.com<mailto:wei.c...@arm.com>> wrote: Hi Nikhil, Is there anything we have to do to perform the same tests On Arm64? Regards, Wei Chen From: solo5@lists.h3q.com<mailto:solo5@lists.h3q.com> <solo5@lists.h3q.com<mailto:solo5@lists.h3q.com>> On Behalf Of nikhil ap Sent: 2018年4月20日 22:56 To: solo5@lists.h3q.com<mailto:solo5@lists.h3q.com> Subject: [solo5] Improving solo5's network performance Hi Guys, Summarising the discussions we've had so far and the work I've been doing: * Implemented network interface using shmstream (shared memory) in order to reduce the number of hypercalls and thus reduce the number of VMEntries and VMExits. * Separate IO thread is implemented in ukvm-bin to read/write packets from the shared memory. * IO thread currently supports polling mode and event mode. * Event-driven model is implemented using eventfds and io-thread waits for events using epoll. * The applications could run both the modes without any changes to their APIs. * Currently shmstream mode can be set with --shm option. * Ex: ./ukvm-bin --net=tap100 --shm=poll test_ping_serve.ukvm * However, in case of event-mode, for better performance, the application can chose to notify ukvm-bin after queuing *all* the packets in the shared memory instead of a single packet transmit by using a new solo5 public APIs: solo5_net_queue() and solo5_net_flush(); * Solo5 performance was tested with IncludeOS (IncludeOS had to be modified to address the recent API changes in solo5) and with UDP traffic. * Summarising the results below +--------------------------------------------------+----------------------------------------------------------------------+ | Experiment | PPS with 1300 byte packets as receiver | +--------------------------------------------------+----------------------------------------------------------------------+ | With Qemu and vhost=on | 460k | +--------------------------------------------------+----------------------------------------------------------------------+ | With Qemu and vhost=off | 310k | +--------------------------------------------------+----------------------------------------------------------------------+ | With solo5/ukvm | 160k | +--------------------------------------------------+----------------------------------------------------------------------+ | With solo5/ukvm withseccomp | 440k | +--------------------------------------------------+----------------------------------------------------------------------+ | With solo5/ukvm withshmstream and eventthread | 435k | +--------------------------------------------------+----------------------------------------------------------------------+ | With solo5/ukvm withshmstream and polling thread | 490k | +--------------------------------------------------+----------------------------------------------------------------------+ UDP Performance stats collected after running each test for 30 seconds +---------------------------------------+-------------------+--------------------+---------------------------+ | Model | VMentries/VMexits | CPU usage | +---------------------------------------+-------------------+--------------------+---------------------------+ | Solo5/ukvm today | 8.7 Million | 100% | +---------------------------------------+-------------------+--------------------+---------------------------+ | Solo5 with shmstream and polling | 215K | 200% | +---------------------------------------+-------------------+--------------------+---------------------------+ | Solo5 with shmstream and event-driven | 260K | 160% | +---------------------------------------+-------------------+--------------------+---------------------------+ | Qemu with Vhost | 20 Million | 100% + 50% (Vhost) | +---------------------------------------+-------------------+--------------------+---------------------------+ TODO: Support IO thread with hybrid mode. I.E with both event driven and polling mode. Similar to NAPI. -- Regards, Nikhil IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. -- Regards, Nikhil IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.