Consider Adding Thread Affinity

David Holmes david.holmes at oracle.com
Mon Nov 30 23:15:32 UTC 2020


On 1/12/2020 2:53 am, Suminda Sirinath Salpitikorala Dharmasena wrote:
> This mainly aims to prevent cache misses as:
> - previously cached values of the thread may be in the cache
> - threads which share data can be targeted at a given core for better data
> locality
> - ensure threads are planned based on locks are common/shared
> resource usage which is known to the programmer than OS
> 
> I believe this is an important feature to consider for performance.

Are you talking about virtual threads or regular (carrier) threads?

General thread affinity has been raised in the past but it is a highly 
sensitive operation in relation to performance and extremely easy to 
misuse (hurting not only the performance of your own application but 
potentially the whole machine). Further to support thread affinity you 
also need a way to expose detailed CPU topology information (sockets, 
processors, cores) that does not presently exist in Java and which was 
considered too machine/hardware specific to be considered a good 
candidate for a portable Java API. With virtualized environments of 
various forms, thread affinity is even harder to use.

Also note that the system/OS scheduler will itself try to address 
low-level cache affinity when making scheduling decisions.

Cheers,
David
-----

> Suminda
> 
> 
> On Mon, 30 Nov 2020 at 21:22, Ron Pressler <ron.pressler at oracle.com> wrote:
> 
>> Hi.
>>
>> We have no concrete plans for doing so, but can you, perhaps, explain the
>> use-case and why it’s important?
>>
>> — Ron
>>
>>
>> On 27 November 2020 at 14:17:07, Suminda Sirinath Salpitikorala Dharmasena
>> (sirinath1978m at gmail.com) wrote:
>>
>> Hello,
>>
>> Is it possible to consider adding thread affinity to the Thread API?
>>
>> Suminda
>>
>>


More information about the loom-dev mailing list