Hi,<br><br>First thanks for all these details, they are quite interesting and I will take some time to investigate a bit ;-)<br><br>1)<br>so I ran&nbsp; a bzr branch -r1 with -Dphss... and my bzr has been stuck there for a few hours now :<br>
<br>28.885&nbsp;&nbsp;&nbsp;&nbsp; result:&nbsp;&nbsp; (&#39;ok&#39;,)<br>29.783&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80504 body bytes read<br>29.806&nbsp; hpss call w/readv: &#39;readv&#39;, &#39;/home/autobzr/deployBZR/.bzr/repository/indices/c43cd46c0973a8d886552c0f4b8e4e5f.tix&#39;<br>
29.806&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5 bytes in readv request<br>30.171&nbsp;&nbsp;&nbsp;&nbsp; result:&nbsp;&nbsp; (&#39;readv&#39;,)<br>30.364&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 975 body bytes read<br>30.376&nbsp; hpss call w/readv: &#39;readv&#39;, &#39;/home/autobzr/deployBZR/.bzr/repository/indices/f65de233ce31cbdace7370611f49937c.tix&#39;<br>
30.377&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7 bytes in readv request<br>30.609&nbsp;&nbsp;&nbsp;&nbsp; result:&nbsp;&nbsp; (&#39;readv&#39;,)<br>31.419&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 65536 body bytes read<br>31.432&nbsp; hpss call:&nbsp;&nbsp; &#39;get&#39;, &#39;/home/autobzr/deployBZR/.bzr/repository/indices/f65de233ce31cbdace7370611f49937c.tix&#39;<br>
31.432&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (to bzr+ssh://deploy.sgf.in.iz/home/autobzr/deployBZR/GameBZR-Live-Temporary/)<br>32.445&nbsp;&nbsp;&nbsp;&nbsp; result:&nbsp;&nbsp; (&#39;ok&#39;,)<br>60.013&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5903449 body bytes read<br>62.310&nbsp; hpss call w/readv: &#39;readv&#39;, &#39;/home/autobzr/deployBZR/.bzr/repository/packs/f65de233ce31cbdace7370611f49937c.pack&#39;<br>
62.312&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 11675 bytes in readv request<br><br><br>Not sure why it s still stuck like that...<br>The progress bar is stuck as well at :<br>\ [=============================&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ] Copying content texts 3/5<br>
<br>any possibility to get more logs out of it ?<br><br><br>2) I have bzr 1.8 installed everywhere, but as these repositories are big, so I ll give that a try as a last resort ( it might take some time... )<br><br>3) I guess that would be quite efficient since one of my problem is latency... however I wish there was an easy way to configure that without touching the code ;-) but I ll give it a try to check if I see any improvement when I get some time.<br>
<br>4) Last time I tried sftp it was really slower than bzr+ssh ( one the same repositories that I am working with right now ), so I ll think I ll pass that one...<br><br>5) mmm interesting I ll give it a try too if it comes down to smart bazaar being not so smart in my case ;-)<br>
<br>So any idea aobut 1) ??<br><br>Thanks a lot for the help ;-)<br><br>--<br>Alex<br><br><div class="gmail_quote">2008/10/28 John Arbash Meinel <span dir="ltr">&lt;<a href="mailto:john@arbash-meinel.com">john@arbash-meinel.com</a>&gt;</span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">-----BEGIN PGP SIGNED MESSAGE-----<br>
Hash: SHA1<br>
<div><div></div><div class="Wj3C7c"><br>
Asmodehn Shade wrote:<br>
&gt; Hi *,<br>
&gt;<br>
&gt; Alright I recently updated to bzr 1.8.<br>
&gt;<br>
&gt; I have repository of a few gigs size ( because of the size of the files<br>
&gt; in it ) with usually around 100 revisions in each branch.<br>
&gt;<br>
&gt; I need to branch from one place to another ( usually quite far away =<br>
&gt; high latency ) or merge differences.<br>
&gt; However it appears to be quite slow.<br>
&gt;<br>
&gt; Despite the bandwidth limitation and the time needed to transfer big<br>
&gt; files anyway, for some reasons it s much slower than scp for example.<br>
&gt; Also despite the big bandwidth ( few Mbps ) available the transfer rate<br>
&gt; can go down to 1Kbps and stay there for quite a long time...<br>
&gt;<br>
&gt; I am using bzr+ssh ( the fastest protocol I could find... ) the<br>
&gt; repository format is whatever the default is (on 1.5 ) when you &quot;bzr<br>
&gt; init-repo&quot;<br>
&gt;<br>
&gt; So I was wondering if someone here had advise on how I can make the<br>
&gt; overall branching / pulling / merging operations faster if possible...<br>
&gt; using more bandwidth or something else...<br>
&gt;<br>
&gt; Thanks for your advice ;-)<br>
&gt;<br>
&gt; --<br>
&gt; Alex<br>
<br>
</div></div>So there are a few possibilities with what could be happening. If you<br>
can help debug further, doing runs with &quot;-Dhpss&quot; will add extra debug<br>
information in &quot;.bzr.log&quot; (use bzr --version to find this file). That<br>
will record what commands we are issuing, along with some timing<br>
information.<br>
<br>
As a guess, I would say we are likely to be slow during index<br>
operations. Where we are probing for more information to see what we<br>
need to do next.<br>
<br>
I know Andrew Bennetts has a patch out that should help some cases. (For<br>
push/pull we need to find out what one side has that the other doesn&#39;t.<br>
We were doing it &quot;one-revision&quot; at a time, and Andrew updated that to<br>
make several requests per round trip.)<br>
<br>
That landed in bzr.dev as:<br>
3795 Canonical.com Patch Queue Manager 2008-10-27 [merge]<br>
 &nbsp; &nbsp; Reduce round-trips when pushing to an existing repo by using the<br>
 &nbsp; &nbsp; &nbsp; get_parent_map RPC more,<br>
 &nbsp; &nbsp; &nbsp; and batching calls to it in _walk_to_common_revisions. (Andrew<br>
 &nbsp; &nbsp; &nbsp; Bennetts)<br>
<br>
There are other possibilities...<br>
<br>
1) You may consider issuing &quot;bzr pack&quot; on the repository. This will<br>
collapse all of the history (so far) into a single pack file + index.<br>
This can make things faster (in general looking something up in an index<br>
is O(log N) so having M indexes is M * log N, rather than log (M*N).<br>
<br>
We do a certain amount of packing automatically (we check after every<br>
commit/push/pull). The automatic algorithm isn&#39;t very aggressive, as you<br>
don&#39;t really want to redo your whole repository every commit.<br>
<br>
2) We have a better index format written if you want to test it. I would<br>
make a copy of your existing repository, and then do &quot;bzr upgrade<br>
- --development2&quot;. I believe all clients will need to be bzr 1.7 or greater.<br>
<br>
The index format is stable, and we are mostly tuning the code before we<br>
make it a public &amp; stable repository format. For instance, the old index<br>
code had logic to allow it to prefetch extra data, and I just landed the<br>
code to do so for the new index code. In many cases the new format is<br>
sufficiently better that even without prefetching it was faster (often<br>
significantly so).<br>
<br>
If you are interested, we certainly would be interested in getting<br>
feedback of how well it performs for you.<br>
<br>
3) Speaking of &#39;prefetch&#39;, you could tune the prefetch algorithm a<br>
little bit. Probably the value in question comes from:<br>
bzrlib/transport/remote.py<br>
<br>
Around line 304 there should be:<br>
<br>
def recommended_page_size(self):<br>
 &nbsp; &nbsp;&quot;&quot;&quot;Return the recommended page size for this transport.&quot;&quot;&quot;<br>
 &nbsp; &nbsp;return 64 * 1024<br>
<br>
You could play around with that value and see if larger values work<br>
better for you.<br>
<br>
For example, you could set it to 64MB (64 * 1024 * 1024) instead of<br>
64kB. That would likely cause the prefetch code to just always read the<br>
whole index with every request, rather than just reading a little bit at<br>
a time.<br>
<br>
4) It is possible that &#39;sftp://&#39; might be faster than &#39;bzr+ssh://&#39; for<br>
some operations. Mostly because of the prefetch code, which is what<br>
Andrew was working on. For push specifically, we would be issuing a<br>
bunch of &quot;do you have revision X&quot; requests, which the remote would<br>
respond with &quot;no&quot;. When using sftp:// we are reading the remote index,<br>
so we actually get back &quot;no, but I have these 50 random revisions&quot;.<br>
(Interestingly, if remote does have the revision, then it responds with<br>
&quot;yes, *and* I have these 50 ancestors as well&quot;.)<br>
<br>
5) I think someone commented that you can actually do<br>
&quot;nosmart+bzr+ssh://&quot; which turns of the smart-protocol requests, but<br>
retains the better file-access behavior from bzr+ssh. (sftp has a<br>
problem that to read a little bit from a file, you have to issue an<br>
&#39;open + read + close&#39;, while bzr+ssh can do the whole request with a<br>
single &#39;read&#39; request.)<br>
<br>
So you *might* try doing the same action with &quot;nosmart+bzr+ssh://&quot; and<br>
see if that changes things.<br>
<br>
John<br>
=:-&gt;<br>
-----BEGIN PGP SIGNATURE-----<br>
Version: GnuPG v1.4.9 (Cygwin)<br>
Comment: Using GnuPG with Mozilla - <a href="http://enigmail.mozdev.org" target="_blank">http://enigmail.mozdev.org</a><br>
<br>
iEYEARECAAYFAkkHcYYACgkQJdeBCYSNAAN/fQCfYurUef81d29+go8Y2RXv74G9<br>
SqYAoK6vjijG/qU+bahBCs/8+4qI6pdN<br>
=mvv1<br>
-----END PGP SIGNATURE-----<br>
</blockquote></div><br>