1
0
mirror of http://git.haproxy.org/git/haproxy.git/ synced 2025-02-14 17:37:46 +00:00

MINOR: threads: add each thread's clockid into the global thread_info

This is the per-thread CPU runtime clock, it will be used to measure
the CPU usage of each thread and by the lockup detection mechanism. It
must only be retrieved at the beginning of run_thread_poll_loop() since
the thread must already have been started for this. But it must be done
before performing any per-thread initcall so that all thread init
functions have access to the clock ID.

Note that it could make sense to always have this clockid available even
in non-threaded situations and place the process' clock there instead.
But it would add portability issues which are currently easy to deal
with by disabling threads so it may not be worth it for now.
This commit is contained in:
Willy Tarreau 2019-05-03 17:21:18 +02:00
parent 522cfbc1ea
commit 91e6df01fa
2 changed files with 6 additions and 0 deletions
include/types
src

View File

@ -245,6 +245,7 @@ extern int atexit_flag;
extern struct thread_info {
__decl_hathreads(pthread_t pthread);
__decl_hathreads(clockid_t clock_id);
} thread_info[MAX_THREADS];
/* bit values to go with "warned" above */

View File

@ -2497,6 +2497,11 @@ static void *run_thread_poll_loop(void *data)
struct per_thread_deinit_fct *ptdf;
ha_set_tid((unsigned long)data);
#ifdef USE_THREAD
pthread_getcpuclockid(pthread_self(), &thread_info[tid].clock_id);
#endif
tv_update_date(-1,-1);
/* per-thread init calls performed here are not allowed to snoop on