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.

Reply via email to