[10] RFR(S) 8183262: noexecstack check in os::dll_load on Linux is too expensive

Vladimir Kozlov vladimir.kozlov at oracle.com
Fri Jun 30 17:34:27 UTC 2017


Thank you, Ioi

Vladimir

On 6/30/17 10:27 AM, Ioi Lam wrote:
> Hi Vladimir,
> 
> The changes look good. thanks for fixing this.
> 
> - Ioi
> 
> 
> On 6/30/17 10:07 AM, Vladimir Kozlov wrote:
>> webrev: http://cr.openjdk.java.net/~kvn/8183262/webrev/
>> https://bugs.openjdk.java.net/browse/JDK-8183262
>>
>> To load AOT library we use os::dll_load() method provided on all 
>> platforms.
>>
>> During investigation why AOT library load takes so long on Linux I 
>> found that it spend most of time in ElfFile::load_tables() method 
>> which looks for string tables in library. It is called from ElfFile() 
>> constructor used in os::dll_load() just to check if library is built 
>> with noexecstack:
>>
>>  if (os::uses_stack_guard_pages() && !os::Linux::_stack_is_executable) {
>>    ElfFile ef(filename);
>>    if (!ef.specifies_noexecstack()) {
>>
>> There is no need for string tables load in such case. Avoiding loads 
>> helps a lot:
>>
>> without fix:
>>
>> [0.047s][info][aot,startuptime] AOT initialization, 0.0424919 secs
>>
>> with fix:
>>
>> [0.002s][info][aot,startuptime] AOT initialization, 0.0002087 secs
>>
>>
>> Note, JDK 9 is not affected because AOT uses system dlopen() since 
>> only Linux is supported.
>>
>> Thanks,
>> Vladimir
> 


More information about the hotspot-runtime-dev mailing list