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
This commit is contained in:
parent
5d89fbd207
commit
466e0ecb88
1 changed files with 0 additions and 6 deletions
|
@ -76,8 +76,6 @@ bionic_tls* __allocate_bionic_tls() {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, allocation, allocation_size, "bionic TLS guard");
|
||||
|
||||
// Carve out the writable TLS section.
|
||||
bionic_tls* result = reinterpret_cast<bionic_tls*>(static_cast<char*>(allocation) +
|
||||
PTHREAD_GUARD_SIZE);
|
||||
|
@ -88,7 +86,6 @@ bionic_tls* __allocate_bionic_tls() {
|
|||
return nullptr;
|
||||
}
|
||||
|
||||
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, result, BIONIC_TLS_SIZE, "bionic TLS");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -111,7 +108,6 @@ static 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");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -214,8 +210,6 @@ static void* __create_thread_mapped_space(size_t mmap_size, size_t stack_guard_s
|
|||
munmap(space, mmap_size);
|
||||
return nullptr;
|
||||
}
|
||||
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, space, stack_guard_size, "thread stack guard");
|
||||
|
||||
return space;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue