Threadpool uses main thread affinity when created.
During startup the main thread is pinned to a single core by engine_pin()
when we use --pin
. I believe this is to stop it from taking a slot
that any pinned runners will use and to make sure that any memory that is touched starts in the NUMA domain of main thread, so
the thought was that we didn't want that to migrate around (could be no longer needed if interleave is the default memory
placement policy), anyway, what this means is that any threadpools created and used during start up, i.e. before engine_config()
is
called will be restricted to the affinity mask of the main thread, i.e. this single core. Clearly not as expected. Can only
see one of these in the read functions of the various IO types at present.
Need to do something about this...