harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gregory Shimansky (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-3231) [threading] There is a performance improvement if using "initial-exec" tls model on em64t linux.
Date Tue, 27 Feb 2007 19:29:05 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-3231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12476322
] 

Gregory Shimansky commented on HARMONY-3231:
--------------------------------------------

Then I don't understand it how it is going to work. Not all modules are loaded before the
VM starts, actually none of them are loaded except for launcher, which should have initial-exec
by default. From man gcc:

       -ftls-model=model
           Alter the thread-local storage model to be used.  The model argument should be
           one of "global-dynamic", "local-dynamic", "initial-exec" or "local-exec".

           The default without -fpic is "initial-exec"; with -fpic the default is
           "global-dynamic".

Since launcher is compiled without -fpic (correct me if I am wrong), it has initial-exec already.
All the shared libraries are compiled with -fpic, so they don't have initial-exec. But from
your words they cannot have initiale-exec TLS model since they are loaded via dlopen.

> [threading] There is a performance improvement if using "initial-exec" tls model on em64t
linux.
> ------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3231
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3231
>             Project: Harmony
>          Issue Type: Improvement
>          Components: DRLVM
>         Environment: linux-em64t
>            Reporter: Rustem Rafikov
>         Attachments: initial-exec-em64t.diff
>
>
> Hi All, 
> The attached patch changes tls model to initial-exec for linux-em64t (instead of general-dynamic
by default). This allows avoiding of __tls_addr_get calls to obtain the address of a thread-local
variable. Initial-exec can be used when all modules are loaded before a program starts working
but may not be loaded at runtime with dlopen(). 
> The attached patch gives us up to 10% boost on specjbb2005 @ lnx64(and more on thread
intensive benchmarks).
> --bwR

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message