On 16.09.2019 20:07, Leyne, Sean wrote:
Roman,

From: Roman Simakov <[email protected]>
Sent: Monday, September 16, 2019 7:51 AM

I guess it would be interesting alternative for spinlock
(https://kernelnewbies.org/Linux_5.3)
1.6. Power efficient userspace waiting with the umwait x86 instructions

More description is here:
https://lwn.net/Articles/790920/
It is a shame that:

- will only be available on new Intel Tremont micro-architecture CPUs, whenever 
they ship
- will not be available for AMD CPUs, the new ROME/EPYC 2 CPUs are kicking 
Intel's offering
- will not be available via Windows API for some time

I think it is worthy to create a JIRA ticket for this issue, but believe that 
it should not be implemented until Windows API support is available at the very 
least.

That's not completely true - we can provide OS-specific implementations for various classes, particular for syncs we always do it - critical section in windows and mutex in posix are 2 different things from API calls POV. Cumrently we have:

class Spinlock : public Mutex

and nothing prevents to keep this current (IMHO not efficient) way for windows in case of no API.

Need to detect CPU type on the fly and select one or other way to work with spinlock may be a bit more problematic (we need to do it in runtime) but must say I also do not see something tragic with it.


The articles don't mention what if applications would need to detect if umwait 
is implemented/active, and implement alternate logic if not, or will OSs need 
to have a default implementation for incompatible CPUs.

IMHO application - doing that in OS kills performance benefits of umwait. May be C-runtime library may help us with it...





Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to