|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [MirageOS-devel] Parallelizing writing to network devices
On 17 December 2014 at 18:05, Masoud Koleini<masoud.koleini@xxxxxxxxxxxxxxxx> wrote:Thanks Thomas for the great tracing tool! The following is a very simple unikernel with two interfaces, which redirects frames captured on the first interface to the second one: https://github.com/koleini/parallelisation The problem is that in a high packet rate (more than 80'000 pps), switch stops receiving. The goal is to spot the problem and enhance the throughput of Mirage netif. listen calls netif listen function, which only sets receive_callback on the interface (used by poll_thread). It looks that failing poll_thread is not monitored in netif code. I really think the >> operator should be banned...Test environment consists of another vm running a traffic generator and sending frames of a specific pattern (UDP frames of size 100 bytes) over the bridge that connects to the first interface of the unikernel. Unikernel forwards frames by collecting a number of frames from input queue and running the same number of threads that write them to the output interface. Two trace files are uploaded to the repo. The first file is the output of this configuration. This trace shows that each netif write locks until the thread that writes on the front-end connection to the ring is returned (function write_already_locked.) For the second trace, the return of the thread is ignored (commenting out "lwt () = th in" in write_already_locked). This considerably increases switching speed, but after some running time, it looks that after garbage collection, similar problem happens. Thomas and Anil, any idea from given traces, and how it is possible to make the traces more informative? Thanks. On 28/11/14 16:55, Thomas Leonard wrote:On 28 November 2014 at 16:24, Anil Madhavapeddy <anil@xxxxxxxxxx> wrote:On 28 Nov 2014, at 16:03, Masoud Koleini <masoud.koleini@xxxxxxxxxxxxxxxx> wrote: Thanks Anil.- graph the ring utilisation to see if it's always full (Thomas Leonard's profiling patches should help here)Would you please point me out to the profiling patches?See: http://roscidus.com/blog/blog/2014/10/27/visualising-an-asynchronous-monad/ This message and any attachment are intended solely for the addressee and may contain confidential information. If you have received this message in error, please send it back to me, and immediately delete it. Please do not use, copy or disclose the information contained in this message or in any attachment. Any views or opinions expressed by the author of this email do not necessarily reflect the views of the University of Nottingham. This message has been checked for viruses but the contents of an attachment may still contain software viruses which could damage your computer system, you are advised to perform your own checks. Email communications with the University of Nottingham may be monitored as permitted by UK legislation. _______________________________________________ MirageOS-devel mailing list MirageOS-devel@xxxxxxxxxxxxxxxxxxxx http://lists.xenproject.org/cgi-bin/mailman/listinfo/mirageos-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |