MINOR: activity: make the profiling status per thread and not global
In order to later support automatic profiling turn on/off, we need to have it per-thread. We're keeping the global option to know whether to turn it or on off, but the profiling status is now set per thread. We're updating the status in activity_count_runtime() which is called before entering poll(). The reason is that we'll extend this with run time measurement when deciding to automatically turn it on or off.
This commit is contained in:
parent
d636675137
commit
d9add3acc8
|
@ -32,6 +32,7 @@
|
|||
#define HA_PROF_TASKS 0x00000001 /* enable per-task CPU profiling */
|
||||
|
||||
extern unsigned int profiling;
|
||||
extern unsigned long task_profiling_mask;
|
||||
extern struct activity activity[MAX_THREADS];
|
||||
|
||||
|
||||
|
@ -67,6 +68,14 @@ static inline void activity_count_runtime()
|
|||
|
||||
run_time = (before_poll.tv_sec - after_poll.tv_sec) * 1000000U + (before_poll.tv_usec - after_poll.tv_usec);
|
||||
swrate_add(&activity[tid].avg_loop_us, TIME_STATS_SAMPLES, run_time);
|
||||
|
||||
if (!(task_profiling_mask & tid_bit)) {
|
||||
if (unlikely(profiling & HA_PROF_TASKS))
|
||||
_HA_ATOMIC_OR(&task_profiling_mask, tid_bit);
|
||||
} else {
|
||||
if (unlikely(!(profiling & HA_PROF_TASKS)))
|
||||
_HA_ATOMIC_AND(&task_profiling_mask, ~tid_bit);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
/* bit field of profiling options. Beware, may be modified at runtime! */
|
||||
unsigned int profiling = 0;
|
||||
unsigned long task_profiling_mask = 0;
|
||||
|
||||
/* One struct per thread containing all collected measurements */
|
||||
struct activity activity[MAX_THREADS] __attribute__((aligned(64))) = { };
|
||||
|
|
|
@ -93,7 +93,7 @@ void __task_wakeup(struct task *t, struct eb_root *root)
|
|||
t->rq.key += offset;
|
||||
}
|
||||
|
||||
if (profiling & HA_PROF_TASKS)
|
||||
if (task_profiling_mask & tid_bit)
|
||||
t->call_date = now_mono_time();
|
||||
|
||||
eb32sc_insert(root, &t->rq, t->thread_mask);
|
||||
|
|
Loading…
Reference in New Issue