diff options
author | Shawn Pearce <spearce@spearce.org> | 2013-04-08 18:11:30 -0700 |
---|---|---|
committer | Shawn Pearce <spearce@spearce.org> | 2013-04-10 11:34:50 -0700 |
commit | d0a533762586ce331a8f967042fa209c847c3c8d (patch) | |
tree | c7b6fb0a3ca76e3c1b08dfdb430ca1c706477e47 /org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java | |
parent | 5d446f410d7044fba165ad3deee7ac83864f0e96 (diff) | |
download | jgit-d0a533762586ce331a8f967042fa209c847c3c8d.tar.gz jgit-d0a533762586ce331a8f967042fa209c847c3c8d.zip |
Steal work from delta threads to rebalance CPU load
If the configuration wants to run 4 threads the delta search work
is initially split somewhat evenly across the 4 threads. During
execution some threads will finish early due to the work not being
split fairly, as the initial partitions were based on object count
and not cost to inflate or size of DeltaIndex.
When a thread finishes early it now tries to take 50% of the work
remaining on a sibling thread, and executes that before exiting.
This repeats as each thread completes until a thread has only 1
object remaining.
Repacking Blink, Chromium's new fork of WebKit (2.2M objects 3.9G):
[pack]
reuseDeltas = false
reuseObjects = false
depth = 50
threads = 8
window = 250
windowMemory = 800m
before: ~105% CPU after 80%
after: >780% CPU to 100%
Change-Id: I65e45422edd96778aba4b6e5a0fd489ea48e8ca3
Diffstat (limited to 'org.eclipse.jgit/src/org/eclipse/jgit/transport/BasePackPushConnection.java')
0 files changed, 0 insertions, 0 deletions