04.06.2025 14:52, Stuart Henderson пишет: > claudio noticed that at least 'git checkout' still spawns a lot of > threads; does this seem more reasonable?
So git limits itself to #define MAX_PARALLEL (20) threads and you just add a first cap to what we can reasonably run at most - makes sense. With 7.7-stable, I see 21 'git checkout ...' in top(1) on this box: hw.machine=sparc64 hw.ncpuonline=16 Haven't tested the patch there, but pretty sure there will be one proc and 16 additional threads in top, which, I guess, is quite similar to what claudio runs into. It might make sense to limit this further, but your clamp additional clamp is certainly OK with me, thanks. > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/devel/git/Makefile,v > diff -u -p -r1.287 Makefile > --- Makefile 19 May 2025 14:23:44 -0000 1.287 > +++ Makefile 4 Jun 2025 11:51:02 -0000 > @@ -3,7 +3,7 @@ COMMENT-svn = subversion interoperabilit > COMMENT-x11 = graphical tools > > V = 2.49.0 > -REVISION = 1 > +REVISION = 2 > DISTNAME = git-${V} > CATEGORIES = devel > > Index: patches/patch-preload-index_c > =================================================================== > RCS file: patches/patch-preload-index_c > diff -N patches/patch-preload-index_c > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-preload-index_c 4 Jun 2025 11:51:02 -0000 > @@ -0,0 +1,12 @@ > +Index: preload-index.c > +--- preload-index.c.orig > ++++ preload-index.c > +@@ -124,6 +124,8 @@ void preload_index(struct index_state *index, > + trace2_region_enter("index", "preload", NULL); > + > + trace_performance_enter(); > ++ if (threads > online_cpus()) > ++ threads = online_cpus(); > + if (threads > MAX_PARALLEL) > + threads = MAX_PARALLEL; > + offset = 0; >