Index | Thread | Search

From:
Stuart Henderson <stu@spacehopper.org>
Subject:
Re: devel/git: used one thread by default
To:
kn@openbsd.org, benoit@openbsd.org, ports@openbsd.org, robert@openbsd.org, claudio@openbsd.org
Date:
Thu, 8 May 2025 10:35:57 +0100

Download raw body.

Thread
  • Stuart Henderson:

    devel/git: used one thread by default

  • On 2025/05/08 10:33, Kirill A. Korinsky wrote:
    > Klemens, Benoit,
    > 
    > rovert@ had noticed that git out of the box uses as many threads as the
    > system has CUPs. claudio@ had pointed that it is quite bad idea and use an
    > example that ld.lld with -Wl,--threads=1 reduces the configure time by 15%
    > and system time by 40%.
    > 
    > So, here the diff which replaces 0 threads to 1 by default where it isn't 1
    > already, and disabled try to use threads in name-hashing.
    > 
    > Are you ok with it?
    
    Certainly using the full number of online CPUs is a poor choice on
    OpenBSD, especially on systems with a large number of cores.
    
    FWIW I showed a shorter diff when this was mentioned (patch online_cpus
    to cap, I picked 4 out of the air, I do think there's some benefit to >1
    in many cases but I didn't do a comparison) - that would also cover
    anywhere else that uses online_cpus (now and future).
    
    Index: patches/patch-thread-utils_c
    ===================================================================
    RCS file: /cvs/ports/devel/git/patches/patch-thread-utils_c,v
    diff -u -p -r1.2 patch-thread-utils_c
    --- patches/patch-thread-utils_c	11 Mar 2022 18:50:06 -0000	1.2
    +++ patches/patch-thread-utils_c	8 May 2025 09:33:12 -0000
    @@ -3,20 +3,22 @@ Use sysconf(_SC_NPROCESSORS_ONLN) to pro
     Index: thread-utils.c
     --- thread-utils.c.orig
     +++ thread-utils.c
    -@@ -25,9 +25,10 @@ int online_cpus(void)
    +@@ -24,10 +24,12 @@ int online_cpus(void)
    + 	return 1;
      #else
      #ifdef _SC_NPROCESSORS_ONLN
    ++#define     MIN(a,b) (((a)<(b))?(a):(b))
      	long ncpus;
     -#endif
      
     -#ifdef GIT_WINDOWS_NATIVE
     +	if ((ncpus = (long)sysconf(_SC_NPROCESSORS_ONLN)) > 0)
    -+		return (int)ncpus;
    ++		return MIN((int)ncpus, 4);
     +#elif defined(GIT_WINDOWS_NATIVE)
      	SYSTEM_INFO info;
      	GetSystemInfo(&info);
      
    -@@ -55,11 +56,6 @@ int online_cpus(void)
    +@@ -55,11 +57,6 @@ int online_cpus(void)
      	if (!sysctl(mib, 2, &cpucount, &len, NULL, 0))
      		return cpucount;
      #endif /* defined(HAVE_BSD_SYSCTL) && defined(HW_NCPU) */
    
    
  • Stuart Henderson:

    devel/git: used one thread by default