Greetings, My name is Will Benton and I'm a CS grad student at Wisconsin. I've been reading l-a-d and l-a-u for a while, but have only posted a couple of times IIRC. I apologize if this message is a little long -- but please read and reply; there may be something in it for you in a few months.
Some colleagues and I are investigating the benefits of evolving kernels in various application domains; we felt that an obvious user domain was audio processing. Our first step is to make static improvements to the kernel which will benefit particular classes of applications, to determine whether or not enabling improvements of these types dynamically (or whether a more general safe kernel extension/dynamic improvement mechanism) is useful. The kinds of improvements we're going to investigate at first are comparatively simple: zero-copying I/O, a fast path to the kernel (shared page or similar), "macro-system-calls" (i.e. pushing application logic across the kernel boundary to reduce copying and context switch overhead), and dynamically specialized system calls. With that said, I have a couple of questions for the group: 1. Where are the biggest kernel bottlenecks in the applications and libraries you're developing? 2. What are some good applications to play with? I'm looking for a user application with serious latency and/or throughput requirements that some of these techniques might improve. (I realize throughput is not as big an issue as latency.) If the application keeps some profile statistics, so much the better. Since our techniques will cross the application/kernel boundary, a vanilla latency/throughput benchmark is not useful -- but an application is. What's in it for you? Glad you asked. When we're done, we'll publish our results and code, (hopefully) resulting in a better high-performance Linux! Thanks, Will Benton -- Will Benton | "Die richtige Methode der Philosophie w�re eigentlich [EMAIL PROTECTED] | die: Nichts zu sagen, als was sich sagen l��t...."
