adventures in high latency

9p on a >200ms link is not the smoothest of experiences. Everything works, but everything is slow.

On these latencies, attempting to drawterm directly to sdf and do everything there will prove painful. Every click, every keypress, will need a full roundtrip. Instead, running 9front locally and using drawterm to connect to the local 9front instance, and then using rcpu and rimport to 9p.sdf.org will provide a usable experience.

rcpu -u cosa -h 9p.sdf.org is just like ssh. I can run rio in there, but that's just as slow as running drawterm directly.

rimport -s sdf -u cosa 9p.sdf.org / /n/sdf/ (where cosa is my username on 9p.sdf.org, but not on my local vm) lets me mount the remote filesystem on /n/sdf. The -s sdf part is optional but will put a special file on /srv to let other processes mount it too with just mount /srv/sdf /n/sdf.

Then if I want to run things like com and bboard, I need /usr/sdf and its /bin, so:

mkdir -p /usr/sdf
bind -a /n/sdf/usr/sdf /usr/sdf
bind -a /usr/sdf/bin /bin

and then I can bboard -r on a rio window that doesn't lag! Note that the program will run on my local machine, but it will read the files from the remote /usr/sdf, so that part will still be slow. This also means that I can't run the amd64 binaries, since my machine is ARM64!

The sdflink script does something similar, but it uses 9fs instead of rimport, which won't work for me.

screenshot of desktop, showing a bunch of open windows in rio, and rio running in a sdf rcpu