Merge eats memory

Michael Ellerman michael at ellerman.id.au
Fri Jun 3 04:12:29 BST 2005


On Wed, 1 Jun 2005 17:29, Michael Ellerman wrote:
> On Wed, 1 Jun 2005 01:28, John A Meinel wrote:
> > John A Meinel wrote:
> > Do you have this repository somewhere we can get at it. I would be
> > interested in profiling it a little bit if possible.
>
> It's pretty easy to reproduce though. You just pull Linus' git repository,
> then bzr init; bzr add .; bzr ci -m "Import everything".

Actually you don't need git at all.

Just using a tar ball of the kernel (or probably any large tree) is enough to 
see the behaviour.

This is from merging a 30K patch between two kernel trees (no .git), it took 
about 8m44s.

The last entry in the refs log (attached) comes out as:

Refcount	Class
-------------------------------------------------------
55319		bzrlib.merge.SourceFile
55317		bzrlib.inventory.InventoryEntry
134		bzrlib.commands.Command
48		exceptions.Exception
34		random.Random
32		bzrlib.changeset.ChangesetEntry
28		bzrlib.changeset.ChangeUnixPermissions
27		threading._Verbose
26		exceptions.StandardError
20		bzrlib.tree.Tree

The destination tree is 339M, 17,361 source files. The source tree is 340M 
17,363 source files.

So perhaps the merge code is keeping a SourceFile instance for each source 
file in both trees, and one for the merged result? Same for InventoryEntries?

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 --------------
<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.branch.Branch'>:exceptions.Warning:<class 'threading.Thread'>:<class 'bzrlib.tree.Tree'>:<class 'sets.BaseSet'>:
133:47:33:26:25:18:17:16:16:15:

bzrlib.inventory.InventoryEntry:<class 'bzrlib.merge.SourceFile'>:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55316:36881:134:48:34:27:26:20:18:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:exceptions.Warning:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:<class 'bzrlib.changeset.ChangesetEntry'>:
55319:55317:134:48:34:27:26:20:19:18:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:
55319:55317:134:48:34:27:26:20:20:19:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:
55319:55317:134:48:34:27:26:20:20:19:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:
55319:55317:134:48:34:27:26:20:20:19:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.store.ImmutableStore'>:
55319:55317:134:48:34:27:26:22:20:19:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.tree.Tree'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:
55319:55317:134:48:34:27:26:23:20:19:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:26:23:20:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:26:23:20:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:26:24:21:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:26:24:21:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:<class 'bzrlib.changeset.ChangesetEntry'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:26:26:22:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:27:26:23:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'threading._Verbose'>:<class 'bzrlib.changeset.ChangesetEntry'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:26:26:23:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:28:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:28:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:28:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:27:27:26:24:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:29:27:26:25:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:28:27:26:25:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:28:27:26:25:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:28:27:26:25:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:29:27:26:25:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:31:27:27:26:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:32:28:27:26:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:32:28:27:26:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:31:28:27:26:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:31:28:27:26:20:

<class 'bzrlib.merge.SourceFile'>:bzrlib.inventory.InventoryEntry:<class 'bzrlib.commands.Command'>:exceptions.Exception:<class 'random.Random'>:<class 'bzrlib.changeset.ChangesetEntry'>:<class 'bzrlib.changeset.ChangeUnixPermissions'>:<class 'threading._Verbose'>:exceptions.StandardError:<class 'bzrlib.tree.Tree'>:
55319:55317:134:48:34:32:28:27:26:20:

-------------- 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/20050603/6bc19b77/attachment.pgp 


More information about the bazaar mailing list