From dad73ef232034dd0f4f46bda90c74e8727d840cc Mon Sep 17 00:00:00 2001 From: Tim Murray Date: Tue, 8 Jan 2019 11:01:18 -0800 Subject: Remove some PR_SET_VMAs during pthread_create 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 --- libc/bionic/pthread_create.cpp | 6 ------ 1 file changed, 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(static_cast(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; } -- cgit v1.2.3