Haai,

Just to make a more-or-less general point (or two)...

"Otto Moerbeek" <o...@drijf.net> wrote:
> On Fri, Mar 27, 2020 at 09:03:40PM +0000, Stefmorino wrote:
>
>> I have tested many applications, the behavior is the same in all of them, but
>> I'll talk about OpenMW (an open-source game engine for morrowind) since I 
>> have
>> the most useful information about how this program is threaded. By default,
>> OpenMW uses 4 threads (cited here:
>> https://openmw.readthedocs.io/en/stable/reference/modding/settings/cells.html),
>> one for main/generic processing, one for graphics, one for audio, and one for
>> preloading terrain.
>>[snip]
>>
>> Is it a lock (spin is at 0)? A placeholder? A limitation of how Ryzen SMP is
>> implemented?
>[snip]
>
> Wild guess: it could be that you program actually does not do real
> threading, but userland threading.

"Fibering", in other words.

> Check with top -H if it really
> creates threads. You should see multiple threads having the same PID.
> or all thraeds are using a resource that cannot be shared.

Likely the latter. It's always funny, isn't it... A coder thinks "hey,
I want a multi-threading 'cause its 1337, I'll just neatly run these
subsystems within seperate threads and I'm done!".

The fact that such is a frequently a naive proposition should be clear
to the more clueful reader. Games tend to be heavy on global state, and
are more likely to benefit from a multi-process model w/ carefully
thought-out boundaries, than from a shared-everything thread model.
While that need not be the case here, mestrongly suspects it is. Take
heed, and measure. Always measure.

Take care,

         --zeurkous.

> -Otto

-- 
Friggin' Machines!

Reply via email to