Nic Driver performance

Alexander Tarasikov alexander.tarasikov at ...9...
Sat May 18 15:40:12 CEST 2013


2013/5/18 Norman Feske <norman.feske at ...1...>

> Hi Alexander,
>
> Hello Norman!
Thank you for your comprehensive email which answered many questions I had
about Genode current state!


>
> In short, the system executes a CPU-bounded workload spends a lot of
> time in the idle thread, which is a contradiction. On CPU-bounded work
> loads, the idle thread should never be selected by the scheduler. For
> your tests, you may check how much time was spent in the idle thread via
> the Fiasco.OC kernel debugger (use 'lp', select the idle thread). As
> long as we see the idle thread being scheduled, we should not look too
> much into micro-optimizing any code paths.
>

Do you have a proposed solution? Like, modifying Fiasco.OC scheduler
to be completely timer-driven and preemptive?


>
> In short, we think that there is not much to gain (in terms of
> performance) from distributing I/O bounded work to multiple CPU threads.
>
>
This is very nice! I didn't quite like the packet_stream interface from the
start,
because in traditional monolithic kernels we're used to static allocate-once
memory blocks, but even the current Genode block I/O implementation
does not show severe performance degradation, so debugging and
profiling is the best way to judge implementations.


>
> Fortunately, I can report that there is work under way to equip Genode
> with a tracing infrastructure, which will allow us to gather traces
> about RPCs (including the actual RPC function names), contended locks,
> and signals. The new facility is currently developed by Josef Söntgen
> (cnuke at GitHub). We plan to include it in Genode 13.08.
>
>
This sounds very promising. I tried porting gprof, but as I didn't take my
time
to properly study how it is implemented, I did not finish that. Maybe we'll
try
doing it as a Summer School task at Ksys Labs. My investigations left me
with
the following conclusions
1. You need to enable the freebsd libc-gprof (easy task, a couple makefiles
and header symlinks)
2. Implement the "profil" and "mcount" functions
I think we can rely on the POSIX emulation layer for writing the gmon.out
So, we could probably use gprof for some apps. Does it sound like a nice
idea?

While searching for more info, today I've found the following link about
gprof.
http://sourceware.org/binutils/docs/gprof/Implementation.html


> Cheers
> Norman
>
> --
> Dr.-Ing. Norman Feske
> Genode Labs
>
> http://www.genode-labs.com · http://genode.org
>
> Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
> Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
>
>
> ------------------------------------------------------------------------------
> AlienVault Unified Security Management (USM) platform delivers complete
> security visibility with the essential security capabilities. Easily and
> efficiently configure, manage, and operate all of your security controls
> from a single console and one unified framework. Download a free trial.
> http://p.sf.net/sfu/alienvault_d2d
> _______________________________________________
> Genode-main mailing list
> Genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
>



-- 
Regards, Alexander
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20130518/0315efaf/attachment.html>


More information about the users mailing list