Cores of different performance vs. time spent creating threads: Windows Dev Kit 2023 example

From: Mark Millard <marklmi_at_yahoo.com>
Date: Wed, 10 May 2023 02:19:53 UTC
First some context that reaches an oddity that seems to
be involved in the time to create threads . . .

The Windows Dev Kit 2023 (WDK23 abbrevation here) boot reports:

CPUs (cores) 0..3: cortex-a78c (the slower cores)
CPUs (cores) 4..7: cortex-x1c  (the faster cores)

Building a kernel explicitly via involving -mcpu= use
gets the following oddity relative to cpu numbering
when the kernel is used:

-mcpu=cortex-x1c or -mcpu=cortex-a78c:
    Benchmarking tracks that number/performance pairing.
    
-mcpu=cortex-a72:
    The slower vs. faster gets swapped number blocks.

So, for -mcpu=cortex-a72 , 0..3 are the faster cores.

This sets up for the following . . .

But I also observe (a relative comparison of contexts
via some benchmark-like activity):

-mcpu=cortex-x1c or -mcpu=cortex-a78c based kernel:
    threads take more time to create
    
-mcpu=cortex-a72 based kernel:
    threads take less time to create

The difference is not trivial for the activity involved
for this WDK23 context.

If there is a bias as to which core(s) are involved in part
of thread creation generally, it would appear to be important
that the bias to be to the more performant cores (for what the
activity involves). The above suggests that such is possibly
not necessarily the case for FreeBSD as is. BIG/little (and
analogous?) cause this to become more relevant.

Does this hypothesis about what type of thing is going on
fit with how FreeBSD actually works?

As stands, I'm going to experiment with the WDK23 using
a cortex-a72 targeted kernel but a cortex-x1c/cortex-a78c
targeted world for my general operation of the WDK23.


Note: While the benchmark results allow seeing in plots
what traces back to thread creation time contributions,
the benchmark itself does not directly measure that time.
It is more like, the average work rate for a time changes
based on the fraction of the time involved in the thread
creations for each given problem size. The actual definition
of work here involves a mathematical quantity for a
mathematical problem (that need not be limited to computers
doing the work).

The benchmark results are more useful for discovering that
there is something to potentially investigate than to
actually do an investigation with.

===
Mark Millard
marklmi at yahoo.com