All of lore.kernel.org
 help / color / mirror / Atom feed
* [uml-devel] UML Performance improvement patchset
@ 2014-09-04 19:00 anton.ivanov
  2014-09-04 19:00 ` [uml-devel] [PATCH v3 01/10] Epoll based interrupt controller anton.ivanov
                   ` (10 more replies)
  0 siblings, 11 replies; 15+ messages in thread
From: anton.ivanov @ 2014-09-04 19:00 UTC (permalink / raw)
  To: user-mode-linux-devel


Patch dependencies:

[PATCH v3 01/10] Epoll based interrupt controller

Full redesign of the existing UML poll based controller. The old
poll controller incurs huge penalties for IRQ sharing and many devices
setup due to the device list being walked twice.

Additionally, the current controller has no notion of true Edge, 
Level and Write completion IRQs. 

This patch fixes the list walking bottleneck and adds all of 
the above alowing for UML to be scaled to 100s of devices 
(tested with 512+ network devices).

[PATCH v3 02/10] Remove unnecessary 'reactivate' statements

As a result of adding true Edge/Level semantics in the epoll 
controller there is no need to do the "reactivate fd" any more.

This one is an enhancement of 1 and depends on it.

[PATCH v3 03/10] High performance networking subsystem

This patchset adds vector IO ops for xmit and receive. Xmit
is optional (as it depends on a 3.0+ host), receive is always on.

The result is that UML can now hit 1G+ rates for transports
which have been enabled to use these. Presently this patchset
is kept as "legacy" as possible without leveraging the possibility
to do a true write completion poll from the new IRQ controller. 
This further performance improvement will be submitted separately.

This patch has been tested extensively only with patchsets 1 and 2.

[PATCH v3 04/10] L2TPv3 Transport Driver for UML

This is an implementation of the Ethernet over L2TPv3 protocol
leveraging both the epoll controller and the high perf vector IO.
It has been extensively tested to interop versus a set of
other implementations including Linux kernel, our port of the
same concept to QEMU/KVM, routers, etc.

Depends on 3.

[PATCH v3 05/10] GRE transport for UML

Same as L2TPv3 for GRE. Depends on 3

[PATCH v3 06/10] RAW Ethernet transport for UML

True raw driver (note - all TSO/GSO options in the NIC must
be turned off). Breaks through the 1G barrier with a vengeance
and CPU to spare. Depends on 3.

[PATCH v3 07/10] Performance and NUMA improvements for ubd

This is a well known issue/fix, qemu has the same one. If you 
do not use pwrite you can kill a machine on cache sync with 
ease. This patch is independent of the others.

[PATCH v3 08/10] Minor performance optimization for ubd

Obvious minor optimization, independent of the others.

[PATCH v3 09/10] Better IPC for UBD

Obvious optimization, independent of the others. Pipe has a 
very short queue which has 4k granularity. It is a bad IPC
for passing a lot of small chunks one at a time as used in UBD.

[PATCH v3 10/10] High Resolution Timer subsystem for UML

This version of the patch applies only to the epoll controller. 
Otherwise, the patch with minimal modifications can be applied to
stock UML. It fixes UML as far as its use for network appliance 
on all counts - TCP performance, QoS, traffic shaping, etc.

The patch is not pretty (I would have preferred to kill itimer
completely). It however does what it says on the tin and has been
doing it in testing for 2 years or so now.

Enjoy

--

A.R. Ivanov

anton.ivanov@kot-begemot.co.uk
antivano@cisco.com


------------------------------------------------------------------------------
Slashdot TV.  
Video for Nerds.  Stuff that matters.
http://tv.slashdot.org/
_______________________________________________
User-mode-linux-devel mailing list
User-mode-linux-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-devel


^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2014-09-20 18:18 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-04 19:00 [uml-devel] UML Performance improvement patchset anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 01/10] Epoll based interrupt controller anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 02/10] Remove unnecessary 'reactivate' statements anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 03/10] High performance networking subsystem anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 04/10] L2TPv3 Transport Driver for UML anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 05/10] GRE transport " anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 06/10] RAW Ethernet " anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 07/10] Performance and NUMA improvements for ubd anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 08/10] Minor performance optimization " anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 09/10] Better IPC for UBD anton.ivanov
2014-09-04 19:00 ` [uml-devel] [PATCH v3 10/10] High Resolution Timer subsystem for UML anton.ivanov
2014-09-04 19:14 ` [uml-devel] UML Performance improvement patchset Richard Weinberger
2014-09-04 20:46   ` Anton Ivanov (antivano)
2014-09-15  6:09   ` Anton Ivanov (antivano)
2014-09-20 18:17   ` Anton Ivanov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.