Re: [RFC] Add num_available_processors

From: Date: Sun, 25 May 2025 10:07:50 +0000
Subject: Re: [RFC] Add num_available_processors
References: 1 2  Groups: php.internals 
Request: Send a blank email to [email protected] to get a copy of this message
On 24 May 2025, at 20:48, Rob Landers <[email protected]> wrote:
> 
> On Sat, May 24, 2025, at 19:37, Daniel Kesselberg wrote:
>> 
>> 
>> Hi everyone,
>> 
>> I'm happy to share my first RFC :) It proposes adding a small function 
>> to retrieve the number of available processors; a feature that's 
>> commonly found in other programming languages and one that I believe 
>> would be a useful addition to PHP.
>> 
>> The related PR has already received a bit of early traction, and now 
>> that the RFC is complete, I'm looking forward to your feedback!
>> 
>> RFC: https://wiki.php.net/RFC/num_available_processors
>> Patch: https://github.com/php/php-src/pull/11137
>> 
>> Best
>> Daniel
>> 
> 
> Looks good!
> 
> My main question is: what is this actually counting? In the RFC it mentions "available
> processing units" ... which means, what? What counts as a "processing unit"? Are we
> talking about CPU Threads/cores; NPU cores; TPM cores; clocks? GPS? GPU? ... a modern computer has
> many "processing units" for different purposes and workloads. I’m assuming this is CPU
> Threads, not physical cores? I will refer to CPU Threads as "Logical Cores" so we all
> don’t get confused since most of us here are programmers and saying "thread" has a
> different meaning.
> 
> Secondly, how is it counting "available"? If I assign PHP to a specific CPU affinity
> mask (say one logical core), will it return 1, or the total number of logical cores available on my
> machine? I would expect it to be 1, since PHP only has access to 1, but I can also see the logic in
> returning the total number.
> 
> — Rob


Hi Daniel,

I agree with Rob that "processor" is a bit too ambiguous. I'd use the phrase
"cpu_core" instead. Yes, technically that's not entirely accurate when
hyper-threading is used, but in most cases it's not trivial to distinguish physical cores from
logical cores anyway, and "cpu_cores" provides the most understandable abstraction for the
vast majority of use cases: deciding how many parallel processes one should use for optimal use of
the CPU.

Also, is it really necessary to add "available" as a disambiguator? In other words: are
there future plans to add a function that provides the "total" or "unavailable"
number of processors? If not, I'd just drop the "available" part.

Finally, from a quick search in php-src there doesn't seem to be any existing function name
that starts with num_. For the sake of consistency with the existing PHP functions, and
similar functionality in other languages, I suggest suffixing the function name with
_count instead.

So, to wrap this all up, I'd like to respectfully propose the following function name instead:

    cpu_core_count()

Alwin


Thread (14 messages)

« previous php.internals (#127452) next »