git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] pack-objects: don't use too many threads with few objects

From
Nicolas Pitre <nico@cam.org>
Date
Dec 13, 2008, 20:06 UTC
Message-ID
<alpine.LFD.2.00.0812131456040.30035@xanadu.home>
In-Reply-To
<20081213133238.GA6718@sigill.intra.peff.net>

If there are few objects to deltify, they might be split amongst threads so that there is simply no other objects left to delta against within the same thread. Let's use the same 2*window treshold as used for the final load balancing to allow extra threads to be created.

This fixes the benign t5300 test failure.
Signed-off-by: Nicolas Pitre <nico@cam.org>
---
On Sat, 13 Dec 2008, Jeff King wrote:
Show 8 quoted lines
> On Thu, Dec 11, 2008 at 03:36:47PM -0500, Nicolas Pitre wrote:
> 
> > ... and display the actual number of threads used when locally 
> > repacking.  A remote server still won't tell you how many threads it 
> > uses during a fetch though.
> 
> Hrm. I have no idea how, but this patch reliably causes t5300 to fail on
> my FreeBSD test box ("next" is broken, bisection pointed to 43cc2b42).
diff --git a/builtin-pack-objects.c b/builtin-pack-objects.c
index 619e597..e851534 100644
--- a/builtin-pack-objects.c
+++ b/builtin-pack-objects.c
@@ -1620,6 +1620,10 @@ static void ll_find_deltas(struct object_entry **list, unsigned list_size,
 	for (i = 0; i < delta_search_threads; i++) {
 		unsigned sub_size = list_size / (delta_search_threads - i);
 
+		/* don't use too small segments or no deltas will be found */
+		if (sub_size < 2*window && i+1 < delta_search_threads)
+			sub_size = 0;
+
 		p[i].window = window;
 		p[i].depth = depth;
 		p[i].processed = processed;
Previous: Nicolas PitreNext: Jeff King
Message 6 of 11 in “autodetect number of CPUs by default when using threads”
  1. autodetect number of CPUs by default when using threadsNicolas Pitre, Dec 11, 2008
  2. Junio C HamanoDec 11, 2008
  3. Nicolas PitreDec 12, 2008
  4. Jeff KingDec 13, 2008
  5. Nicolas PitreDec 13, 2008
  6. pack-objects: don't use too many threads with few objectsNicolas Pitre, Dec 13, 2008
  7. Jeff KingDec 14, 2008
  8. Mike RalphsonDec 15, 2008
  9. Junio C HamanoDec 16, 2008
  10. Jeff KingDec 16, 2008
  11. Nicolas PitreDec 16, 2008

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.