This is Venkada Ramanujam. I am doing projects on fixing TCP IP stack
related issues on Genode.
-Aim is to fix as much as possible problems in TCP IP stack in Genode and,
to compare TCP IP stack performance on linux with the Genode.
I need details about Genode TCP IP stack and earlier version's problems and
how the problems solved. Kindly send me the details.
From: Norman Feske <norman.feske@ge...> - 2013-08-09 09:05:04
welcome to the mailing list! It is good to hear that you'd like to help
out with improving TCP/IP on Genode. For TCP/IP we are using the lwIP
stack. You can find it as package of the 'libports' repository.
For working on performance improvements, you need to get a profound
understanding of the software stack, which is quite complex:
* Device-driver level (operation of the NIC driver)
* Communication of network packets from the driver to the TCP/IP stack
* Inner working of lwIP
* Interaction between lwIP and the C runtime
* Application-performance benchmark
This list does not even cover topics that are important across all those
places, in particular the implementation of Genode's base libraries
(such as the C++ runtime, or memcpy) as well as the behavior of the
kernel (e.g., latency of inter-process communication depending on the
kernel's scheduling policy).
To optimize performance, two intermediate steps are needed, the
provision of a useful benchmark and tooling that helps to find suitable
attack points for optimization. We have addressed the former point
(benchmarking) recently. You can find a suite of ready-to-use low-level
benchmarks in libports, and you can find a port of netperf in the ports
repository. The latter point (tooling) is more tricky. Without knowing
where the bottlenecks are, you have to optimize by chance. Given the
complexity of the software stack, chances are low to hit the real hot
spot this way. For this reason, there is current work under way to equip
Genode with a high-performance event tracing framework, which will
enable us to gather traces of events across the while software stack.
So what is a good point to start? I'd recommend you to explore the
benchmarks that we already have, get them running, and compare your
results with those of Linux.
Alternatively, you may consider adding functionality. For example, right
now, we are using IPv4 only. It would be interesting to look at enabling
IPv6 as well (which seems to be principally supported by lwIP).
Dr.-Ing. Norman Feske
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