[x265] [PATCH] Performance: Balance # threads per pool for non-NUMA machines with > 64 vCPUs

Steve Borho steve at borho.org
Mon Aug 24 15:25:40 CEST 2015


On 08/24, pradeep at multicorewareinc.com wrote:
> # HG changeset patch
> # User pradeep
> # Date 1440406873 -19800
> #      Mon Aug 24 14:31:13 2015 +0530
> # Node ID cf6210f6f5cbbeec441f7eee3d8abf82208942fd
> # Parent  f63273fa3137fef2f6898c686b68ee12608acd31
> Performance: Balance # threads per pool for non-NUMA machines with > 64 vCPUs
> 
> By default, each thread pool may have up to 64 threads. In the case of a CPU that
> has > 64 threads without NUMA support, we end up creating the first pool with 64
> threads and the other pool with a few stray threads significantly affecting performance.
> This fix balances the threads out in that case.
> 
> diff -r f63273fa3137 -r cf6210f6f5cb source/common/threadpool.cpp
> --- a/source/common/threadpool.cpp	Thu Aug 20 11:13:25 2015 +0530
> +++ b/source/common/threadpool.cpp	Mon Aug 24 14:31:13 2015 +0530
> @@ -307,6 +307,16 @@
>          numPools = X265_MAX(p->frameNumThreads / 2, 1);
>      }
>  
> +    // In the case that numa is disabled and we have more CPUs than 64,
> +    // balance the # threads created across thread pools
> +    if ((numNumaNodes==1) && (numPools > 1))
> +    {
> +        int threads = cpusPerNode[0];
> +        for (int i = 0; i < numPools; i++)
> +            cpusPerNode[i] = threads / numPools;
> +        cpusPerNode[0] += (threads % numPools) ;
> +    }

other than w/s nits this seems fine.

>      ThreadPool *pools = new ThreadPool[numPools];
>      if (pools)
>      {
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel

-- 
Steve Borho


More information about the x265-devel mailing list