On Thu, Feb 27, 2020 at 2:27 PM james <gar...@verizon.net> wrote:
>
> On 2/26/20 7:08 PM, William Kenworthy wrote:
> > Hi,
> >
> >  ��� due to space considerations on my laptop I have moved portage 
> > onto a
> > network share (moosfs, mfsmounted) - slower but works fine.� However,
> > being a laptop trying to update/install when out and about is both very
> > slow and network intensive through a vpn - again, it works but is even
> > slower to the point of not always being practical
> >
> > Is there a way to localise/speedup portage scanning parts of the
> > update/install process?
>
>
> A simpler, much less sophisticated update, what I do is
> use emerge -f option to 'fetch only' option first. The selectively
> update; or you can use a usb-3.1+ device for fast easy upgrades, due to
> laptop limitations, but the communications data channel limitations
> leave you at the mercy of the available wireless bandwidth characteristics.

So, a few thoughts here:

1.  Definitely make sure you're splitting out distfiles.  Any new
install does this already, but mixing up the tree and distfiles is
mixing very different types of data with different requirements.
2.  Consider whether you REALLY need to share all this stuff.  The
whole tree isn't THAT big, so it might be easier to just locally sync.
If network bandwidth is an issue, consider setting up a local mirror
so that you sync (and fetch distfiles) within your network when
available, and then just sync directly from the internet when you're
remote.
3.  If you REALLY need that portage tree to be on the network,
consider keeping just the metadata directory local.  That can be
generated on-demand or synced, but either way it needs to be updated
anytime the repo itself is updated.  Generally with rsync we
distribute both together.  I suspect that having local metadata will
cut down on your network IO when you're doing dep resolution/etc.
4.  Squashfs was mentioned.  In theory that is a nice compact
solution.  In practice you might find it to be a pain to update since
it is read-only.  But you could update your network tree, then create
a squashfs and stick that on your network, and then sync the squashfs
file for local mounting.

I'm not sure how well moosefs performs for this sort of thing in
general.  I personally use lizardfs to store large multimedia files
and it works fine, but streaming multi-GB multimedia that ends up
getting buffered is a very different access pattern than sourcing a
bazillion ebuild scripts.  I'd be interested in how you're liking
moosefs for this sort of thing in general.  For accessing tons of
little files I think all your latencies matter, but in particular you
want low latency to your master server as that is going to end up
limiting every read/open you perform.  You might be able to play with
the cache settings on the client side, though at least in lizardfs
I've found some of those to be buggy - they're generally passed as
mount options.

In the past I've had one main Gentoo box sync its repo from the web,
and had other hosts in the LAN either bind-mount this (containers), or
sync this over the network.  Likewise I generally share my main host
distfiles as a mirror which is preferentially used by all my other
hosts - you don't get a 100% hit rate and the main host won't get a
copy of missed files, but it probably cuts down on 80+% of the network
fetching as long as the main host does its fetches before the other
hosts do.  If the main host lacks a distfile then the MIRRORS setting
has a regular Gentoo mirror listed next.

Honestly, unless you're running a completely private repo for whatever
reason I would not try to go remotely mounting your repo over the
internet from your moosefs server.  I bet you could fetch anything
needed faster from a regular internet mirror in that case, and if
portage could use mirrors seamlessly over internet latencies chances
are we'd all be doing that already.  Pretty much every distro
maintains a local repo on every host for this reason.

-- 
Rich

Reply via email to