Re: Solaris Doors API for Linux

Jose Orlando Pereira (mesjop@di.uminho.pt)
Thu, 04 Jun 1998 22:29:13 +0100


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