Failure to saturate bandwidth downloading lp:bzr
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Bazaar |
Confirmed
|
High
|
John A Meinel | ||
Breezy |
Triaged
|
High
|
Unassigned |
Bug Description
Now that we've upgraded to --2a, I decided to just start from scratch, and create a new repo, populate it from the official conversion, and then copy my extra revisions into it.
So:
bzr init-repo --2a --no-trees bzr
cd bzr
bzr branch lp:bzr bzr.dev
I expected it to saturate my network link while it downloaded ~30-40MB of data, and then be done in about 2 minutes.
Instead, I'm seeing very choppy downloads, as shown in the attachment.
Note that I'm downloading via lp: which should be 'bzr+ssh', so it should be streaming from the remote side.
I'm using bzr.dev, though, so maybe we are running into a version compatibility thing?
If I do a quick breakin, I do see:
c:\users\
-> for kind, stream in self._get_
c:\users\
-> for bytes in byte_stream:
c:\users\
-> self._read_more()
Which looks like it is streaming as expected.
tags: | added: 2a hpss |
Changed in brz: | |
status: | New → Triaged |
importance: | Undecided → High |
tags: | added: bzr-format |
I brought this up a bit in Mooloolaba. As a guess, I'm thinking that the pack-on-the-fly code may be slowing down the fetch. Even worse, it may be interacting poorly with the Nagle algorithm, so that once the pack has completed, the TCP auto-negotiation has decided that it shouldn't send as much content.
It is also possible that we have some server side issues, where we aren't keeping the write buffer full. However, I would suspect the source side before I suspect the target side.
In contrast I'm uploading a picture of network throughput for iterating over 'get_stream()' from Babune to my machine. Note that it is *completely* flat. Something is throttling, though, as it transferred at a steady 100kB/s when I should have at least 300kB/s of download bandwidth.
I'll try a few more tests, including checking to see what the throttling issue is, what 'branch' looks like from babune, and whether 'get_stream()' from launchpad is also as flat.