9front - general discussion about 9front
 help / color / mirror / Atom feed
From: ori@eigenstate.org
To: unobe@cpan.org, 9front@9front.org
Subject: Re: 9P2000.s vs 9P2020 vs. ? (Was Re: [9front] Slow cp, support for 9P2000.s)
Date: Sun, 17 May 2020 17:23:41 -0700	[thread overview]
Message-ID: <A797820D911FCFC5EF38156F3CD8E7AC@eigenstate.org> (raw)
In-Reply-To: <133678F3-1EA1-446D-9313-F10F23C84936@cpan.org>

> Since there's no existing discussion I can see, and IRC isn't meant for
> searching for answers to questions, is there anyone willing to summarize
> the state of solving problems like streaming for 9P?

Nothing that we're satisfied with at the moment, though there's
thoughts on providing early acks on writes, and io agents to do
bring at least some of the io logic closer to the data, instead
of shouting across the internet for every transaction.

> If Aiju remembers correctly, there were two things where 9P2000.s was found wanting:
> 1) it breaks the syscall interface; and
> 2) it forces 9P to run over TCP.
>
> FWIW, I finally finished reading through all of John's thesis,
> rather than just skimming, and I think John did a nice review of
> the previous work done in this area and presenting why he chose
> the solution he did.  His solution used TCP, but from his
> write-up, I don't see a technical reason why another transport
> protocol[1] could not be used.  That would leave only breaking
> the syscall interface.
> 
> Does breaking the syscall interface mean that it's merely adding a
> syscall? Or does it mean something else?

Yes -- any program that would want to take advantage of it needs
to be touched.  And would need heuristics: a 9p roundtrip is
still fewer roundtrips than a TCP handshake, so using it blindly
would slow things down when handling small files.  We also, by
design, make no distinction between remote and local files, so
there would need to be more guesswork here.

It also doesn't help with, for example, walking a directory
heirarchy, so things like browsing a mail archive over 9p will
remain painfully slow.

Finally, if we want an ad-hoc solution like this, we can do it
entirely in userspace, with a TCP server sitting on a remote
server, and a local 9p server that opens a TCP connection to
that server and streams the whole file, providing it locally.
I don't think this would be very hard to write, and would
probably give the benefits of streams, without needing any
changes to the existing code. (Thinking about this, it may
actually be worth writing.)

So. in short: This is a big hole in the abstractions provided
by 9p, and it doesn't solve the problem completely.

> Right now hget(1) is an rc script that uses webfs(4).  So if
> I'm at a terminal far away and am using webfs provided by the
> server I'm connected to, hget would be slow for a large file
> because the file would be transferred over 9P. It's no better
> than Plan 9's implementation, but no worse either.
> 
> [1] https://en.wikipedia.org/wiki/Category:Transport_layer_protocols



  parent reply	other threads:[~2020-05-18  0:23 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-24  2:58 Slow cp, support for 9P2000.s Romano
2020-04-24  4:28 ` [9front] " aiju
2020-04-24  7:50   ` Romano
2020-04-24 11:36     ` aiju
2020-04-24 12:01       ` Jens Staal
2020-04-24 12:13         ` hiro
2020-04-24 12:32           ` Jens Staal
2020-04-24 12:38             ` rgl
2020-04-24 15:21               ` hiro
2020-05-13  8:26       ` 9P2000.s vs 9P2020 vs. ? (Was Re: [9front] Slow cp, support for 9P2000.s) Romano
2020-05-18  0:07         ` Roman Shaposhnik
2020-05-18  0:18           ` Romano
2020-05-18  0:23         ` ori [this message]
2020-05-18  9:10           ` hiro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=A797820D911FCFC5EF38156F3CD8E7AC@eigenstate.org \
    --to=ori@eigenstate.org \
    --cc=9front@9front.org \
    --cc=unobe@cpan.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).