diff options
author | Tim Murray <timmurray@google.com> | 2019-01-08 11:01:18 -0800 |
---|---|---|
committer | Tim Murray <timmurray@google.com> | 2019-01-08 13:31:57 -0800 |
commit | dad73ef232034dd0f4f46bda90c74e8727d840cc (patch) | |
tree | a8a6930da3fad04ed79054576abfbb0c3980e033 | |
parent | c466fe95dc641d879683700aea4233ffd42bc762 (diff) | |
download | bionic-pie-qpr3-s1-release.tar.gz |
Remove some PR_SET_VMAs during pthread_createandroid-9.0.0_r47android-9.0.0_r46android-9.0.0_r45android-9.0.0_r44android-9.0.0_r43android-9.0.0_r42android-9.0.0_r41android-9.0.0_r40android-9.0.0_r37android-9.0.0_r36pie-qpr3-s1-releasepie-qpr3-releasepie-qpr3-b-releasepie-b4s4-dev
PR_SET_VMA takes mmap_sem, which can cause contention and reduce
performance any time many threads are created at the same time,
like app startup.
Test: camera launch performance
Bug: 122471935
Change-Id: If7fa7ad99654c01d503f694976fd92bfd30d2afd
Merged-in: If7fa7ad99654c01d503f694976fd92bfd30d2afd
-rw-r--r-- | libc/bionic/pthread_create.cpp | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/libc/bionic/pthread_create.cpp b/libc/bionic/pthread_create.cpp index 21a707ba0..8825c6f24 100644 --- a/libc/bionic/pthread_create.cpp +++ b/libc/bionic/pthread_create.cpp @@ -65,8 +65,6 @@ bool __init_tls(pthread_internal_t* thread) { return false; } - prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, allocation, allocation_size, "bionic TLS guard"); - // Carve out the writable TLS section. thread->bionic_tls = reinterpret_cast<bionic_tls*>(static_cast<char*>(allocation) + PTHREAD_GUARD_SIZE); @@ -77,7 +75,6 @@ bool __init_tls(pthread_internal_t* thread) { return false; } - prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, thread->bionic_tls, BIONIC_TLS_SIZE, "bionic TLS"); return true; } @@ -105,7 +102,6 @@ void __init_alternate_signal_stack(pthread_internal_t* thread) { // We can only use const static allocated string for mapped region name, as Android kernel // uses the string pointer directly when dumping /proc/pid/maps. prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, ss.ss_sp, ss.ss_size, "thread signal stack"); - prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, stack_base, PTHREAD_GUARD_SIZE, "thread signal stack guard"); } } @@ -184,8 +180,6 @@ static void* __create_thread_mapped_space(size_t mmap_size, size_t stack_guard_s munmap(space, mmap_size); return NULL; } - prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, space, stack_guard_size, "thread stack guard"); - return space; } |