On Mon, Oct 3, 2016 at 6:54 AM Chris McGee <[email protected]> wrote:

> Lately, I’m looking at the “iounit.” Initially, I had thought of it as a
> way to give the size of a file on Topen. After some testing I realized that
> the network subsystem in plan9 is expecting the iounit to be large enough
> to write commands into a /net/tcp ctl file. With a small iounit, the
> network subsystem truncates the commands, such as “connect xyz|1234” to
> match the size of the iounit.
>
> So, what is this mysterious iounit? Is there another man page or plan9
> document that describes it in more detail?
>

Given that there are comments like this:

/* ample room for Twrite/Rread header (iounit) */

paired with an old message from Mr. Quanstrom below, I suspect the
value is "as large as your network / disk can manage, but at least as large
as the protocol overhead".  But that's just a WAG.

---------- Forwarded message ---------
From: erik quanstrom <[email protected]>
Date: Sat, Nov 16, 2013 at 6:45 PM
Subject: [9fans] simple gofast trick
To: <[email protected]>


this is a one-liner.  here's a little demo:

        chula; sed 's:8192:64*1024:g' </sys/src/cmd/cat.c > fatcat.c && tmk
fatcat.c
        6c -FVTw fatcat.c
        6l -o 6.fatcat fatcat.6
        chula; cat /bin/gs>/dev/null;for(i in cat 6.fatcat)time $i /bin/gs
> /dev/null
        0.00u 0.01s 0.41r        cat /bin/gs
        0.00u 0.00s 0.23r        6.fatcat /bin/gs

the trick is only to increase IOUNIT to 48k in both file server and cpu
server.

this works since the mtu of the network is 1500 bytes and the Rread messages
are up to 48k + 9p overhead, the network layer has multiple outstanding
messages and overlapping acks at the network layer much of the time, even
though the mount driver continues keeping a single outstanding message
per system call.

- erik

Reply via email to