compressed weaves, and revision.weave
Michael Ellerman
michael at ellerman.id.au
Thu Oct 27 08:00:20 BST 2005
On Thu, 27 Oct 2005 13:10, John A Meinel wrote:
> Michael Ellerman wrote:
> > On Tue, 25 Oct 2005 18:43, John A Meinel wrote:
>
> ...
>
> > For my kernel tree, only 47 revisions.
> >
> > 257M working tree
> >
> > Mainline:
> > 5.3M .bzr/inventory.weave
> > 380K .bzr/revision-store/
> > 283M .bzr
> >
> > Compressed weaves (compressed):
> > 1.1M .bzr/inventory.weave.gz
> > 8.0K .bzr/revision.weave.gz
> > 117M .bzr
> >
> > Which is pretty impressive. Although there's not much history, it's
> > pretty nice to be storing 47 revisions in 45% the size of the working
> > tree.
>
> That is nice to see.
>
> > Having said that, it's a tad on the slow side:
> >
> > concordia ~/src/work/ckexec$ cbzr --profile st
> > 1588655 function calls (1535159 primitive calls) in 18.747 CPU seconds
> >
> > vs mainline:
> >
> > concordia ~/src/work/kexec$ bzr --profile st
> > 1368395 function calls (1314899 primitive calls) in 11.668 CPU seconds
> >
> > cheers
>
> I'm a little surprised to see it take that much longer. How long is it
> if you do "time cbzr st" rather than running --profile.
> I've found that --profile seems to be skewed by mutter() calls.
> Which should be virtually no-ops if BZR_DEBUG is not set.
>
> Otherwise can you attach the actual profile results. I'm curious why you
> would be seeing an extra 200,000 primitive calls. My first guess would
> be that it is all the extra time in Weave() for revisions.weave and the
> mutter() calls.
>
> But also, if we have compressed weaves like this, it makes it even more
> useful to keep the last inventory and revision information in some sort
> of cache, rather than hidden in the weaves.
Actually it doesn't look so bad when you run it a few times, I've got a
fair amount of RAM so I'm probably caching the whole tree.
concordia ~/src/work/ckexec$ time cbzr st
real 0m13.233s
user 0m10.874s
sys 0m1.558s
concordia ~/src/work/ckexec$ time cbzr st
real 0m13.623s
user 0m11.464s
sys 0m1.476s
concordia ~/src/work/ckexec$ time cbzr st
real 0m12.724s
user 0m10.777s
sys 0m1.535s
vs:
concordia ~/src/work/kexec$ time bzr st
real 0m9.465s
user 0m8.349s
sys 0m0.668s
concordia ~/src/work/kexec$ time bzr st
real 0m8.753s
user 0m7.914s
sys 0m0.590s
concordia ~/src/work/kexec$ time bzr st
real 0m8.037s
user 0m7.258s
sys 0m0.577s
(For the record, there are 4 modified and 3 unknown files in the
output, but I cut them out for readability).
concordia ~/src/work/ckexec$ time cbzr --profile st
modified:
arch/powerpc/kernel/prom.c
arch/powerpc/kernel/setup_64.c
arch/powerpc/mm/lmb.c
patches/ftr_early_param-earlier
unknown:
.shelf
ftr_vpa-unregister
test.py
1408745 function calls (1355257 primitive calls) in 12.226 CPU seconds
Ordered by: cumulative time
List reduced from 216 to 20 due to restriction <20>
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 12.226 12.226 commands.py:193(run_argv)
1 0.000 0.000 12.225 12.225 commands.py:501(ignore_pipe)
1 0.036 0.036 12.225 12.225 builtins.py:87(run)
1 0.000 0.000 12.189 12.189 status.py:24(show_status)
1 0.873 0.873 6.954 6.954 delta.py:138(compare_trees)
37096 0.470 0.000 3.990 0.000 inventory.py:553(_read_tree_state)
2 0.011 0.005 2.870 1.435 status.py:102(list_paths)
1 0.131 0.131 2.401 2.401 workingtree.py:322(iter_conflicts)
19715 0.128 0.000 2.208 0.000 workingtree.py:324(<generator expression>)
2 0.404 0.202 2.087 1.044 xml6.py:81(read_inventory)
19715 0.120 0.000 2.080 0.000 workingtree.py:243(list_files)
72015/19715 0.846 0.000 1.960 0.000 workingtree.py:255(descend)
18548 0.216 0.000 1.898 0.000 workingtree.py:218(get_file_sha1)
18548 0.833 0.000 1.496 0.000 hashcache.py:141(get_sha1)
1 0.000 0.000 1.347 1.347 branch.py:1020(basis_tree)
1 0.000 0.000 1.347 1.347 branch.py:996(revision_tree)
1 0.000 0.000 1.347 1.347 branch.py:853(get_revision_inventory)
1 0.000 0.000 1.346 1.346 branch.py:834(get_inventory)
39380 0.483 0.000 1.340 0.000 xml6.py:112(_unpack_entry)
96167 0.800 0.000 1.168 0.000 inventory.py:982(id2path)
real 1m4.840s
user 0m41.982s
sys 0m20.078s
concordia ~/src/work/kexec$ time bzr --profile st
modified:
arch/powerpc/kernel/prom.c
arch/powerpc/kernel/setup_64.c
arch/powerpc/mm/lmb.c
patches/ftr_early_param-earlier
unknown:
.shelf
ftr_vpa-unregister
test.py
1367889 function calls (1314399 primitive calls) in 11.507 CPU seconds
Ordered by: cumulative time
List reduced from 215 to 20 due to restriction <20>
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 11.507 11.507 commands.py:193(run_argv)
1 0.000 0.000 11.507 11.507 commands.py:501(ignore_pipe)
1 0.042 0.042 11.507 11.507 builtins.py:93(run)
1 0.000 0.000 11.463 11.463 status.py:24(show_status)
1 0.790 0.790 5.659 5.659 delta.py:138(compare_trees)
2 0.011 0.005 3.136 1.568 status.py:102(list_paths)
37096 0.474 0.000 3.117 0.000 inventory.py:553(_read_tree_state)
1 0.139 0.139 2.665 2.665 workingtree.py:322(iter_conflicts)
19716 0.128 0.000 2.462 0.000 workingtree.py:324(<generator expression>)
19716 0.257 0.000 2.334 0.000 workingtree.py:243(list_files)
72016/19716 0.884 0.000 2.077 0.000 workingtree.py:255(descend)
2 0.317 0.159 1.923 0.961 xml5.py:116(_unpack_inventory)
1 0.000 0.000 1.476 1.476 branch.py:946(working_tree)
1 0.011 0.011 1.476 1.476 workingtree.py:121(__init__)
39380 0.524 0.000 1.429 0.000 xml5.py:135(_unpack_entry)
1 0.000 0.000 1.177 1.177 branch.py:957(basis_tree)
1 0.000 0.000 1.176 1.176 branch.py:933(revision_tree)
1 0.001 0.001 1.176 1.176 branch.py:790(get_revision_inventory)
1 0.000 0.000 1.175 1.175 branch.py:771(get_inventory)
18548 0.210 0.000 1.077 0.000 workingtree.py:218(get_file_sha1)
real 1m1.275s
user 0m38.901s
sys 0m18.229s
cheers
--
Michael Ellerman
IBM OzLabs
email: michael:ellerman.id.au
inmsg: mpe:jabber.org
wwweb: http://michael.ellerman.id.au
phone: +61 2 6212 1183 (tie line 70 21183)
We do not inherit the earth from our ancestors,
we borrow it from our children. - S.M.A.R.T Person
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20051027/fabc004b/attachment.pgp
More information about the bazaar
mailing list