From mboxrd@z Thu Jan 1 00:00:00 1970 To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> In-reply-to: Your message of "Mon, 20 Apr 2009 16:33:41 EDT." References: <5d375e920904200758m1a1a96den579673e107b57b19@mail.gmail.com> <7c22175ab60f8a5ae2cf894d462b29e5@9netics.com> <3e1162e60904201118u18e8846bkbfec62e561a15a91@mail.gmail.com> <3e1162e60904201155l2b29c0b7ge248c36f82f7324@mail.gmail.com> <3e1162e60904201317v4d50be85x4597a1a6a3123959@mail.gmail.com> From: Bakul Shah Date: Tue, 21 Apr 2009 00:38:25 -0700 Message-Id: <20090421073825.48A935B24@mail.bitblocks.com> Subject: Re: [9fans] Plan9 - the next 20 years Topicbox-Message-UUID: ec39a1ce-ead4-11e9-9d60-3106f5b1d025 On Mon, 20 Apr 2009 16:33:41 EDT erik quanstrom wrote: > let's take the path /sys/src/9/pc/sdata.c. for http, getting > this path takes one request (with the prefix http://$server) > with 9p, this takes a number of walks, an open. then you > can start with the reads. only the reads may be done in > parallel. > > given network latency worth worring about, the total latency > to read this file will be worse for 9p than for http. Perhaps one can optimize for the common case by extending 9p a bit: use special values for certain parameters to allow sending consecutive Twalk, (Topen|Tcreate), (Tread|Twrite) without waiting for intermeditate R messages. This makes sense since the time to prepare /process a handful of messages is much shorter than roundtrip latency. A different performance problem arises when lots of data has to be fetched. You can pipeline data requests by having multiple outstanding requests. A further refinement would to use something like RDMA -- in essence the receiver tells the sender where exactly it wants the data delivered (thus minimizing copying & processing). You can very easily extend the model to have data chunks delivered to different machines in a cluster. This is like separating a very high speed "data plane" (with little or no processing) from a low speed "control plane" (with lots of processing) in a modern switch/router.