Messages in this thread | | | Date | Thu, 04 Jun 1998 22:29:13 +0100 | From | Jose Orlando Pereira <> | Subject | Re: Solaris Doors API for Linux |
| |
Jason Lango wrote: > What makes Doors interesting and innovative is that the API allows for > certain speed optimizations: The kernel can control the allocation of > threads in the server process, keeping it roughly proportional to the > number of client requests at any one time. Also, large amounts of > data may be passed efficiently by mapping the underlying physical > pages between processes (the pages are mapped copy-on-write).
Quite nice.
We used similar optimizations with similar results in a project sometime ago (see: http://gsd.di.uminho.pt/~jop/docs/extabs.ps.gz), where we developed a similar IPC primitive, albeit without the a nice general purpose API like "doors".
However, after implementing virtual copy, we found out that most of the round-trip overhead for small messages was attributable to the scheduler, so we arranged that when sending a request, the remaining timeslice of the client was explicitly provided to the server, avoiding the cost of selecting the process to schedule. (This was done in a function called sleep_on_and_wakeup, with two wait_queues as parameters.) This wass possible because the client would forcibly block waiting for the answer after sending the request, which I believe also happens with doors.
Have you considered something like this? I don't have the figures here, but I remember that it was a big win. It also was a long time ago (Linux 1.1), so I don't know if the same would happen now...
-- Jose Orlando Pereira * mailto:jop@di.uminho.pt * http://gsd.di.uminho.pt/~jop *
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu
| |