mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-23 14:16:53 +00:00
MINOR: time: uninline report_idle() and move it to task.c
I don't know why I inlined this one, this makes no sense given that it's only used for stats, and it starts a circular dependency on tinfo.h which can be problematic in the future. In addition, all the stuff related to idle time calculation should be with the rest of the scheduler, which currently is in task.{c,h}, so let's move it there.
This commit is contained in:
parent
beeabf5314
commit
6136989a22
@ -110,6 +110,9 @@ void task_kill(struct task *t);
|
||||
void tasklet_kill(struct tasklet *t);
|
||||
void __task_wakeup(struct task *t);
|
||||
void __task_queue(struct task *task, struct eb_root *wq);
|
||||
|
||||
uint sched_report_idle();
|
||||
|
||||
unsigned int run_tasks_from_lists(unsigned int budgets[]);
|
||||
|
||||
/*
|
||||
|
@ -581,22 +581,6 @@ static inline void measure_idle()
|
||||
idle_time = samp_time = 0;
|
||||
}
|
||||
|
||||
/* report the average CPU idle percentage over all running threads, between 0 and 100 */
|
||||
static inline uint report_idle()
|
||||
{
|
||||
uint total = 0;
|
||||
uint rthr = 0;
|
||||
uint thr;
|
||||
|
||||
for (thr = 0; thr < MAX_THREADS; thr++) {
|
||||
if (!(all_threads_mask & (1UL << thr)))
|
||||
continue;
|
||||
total += HA_ATOMIC_LOAD(&ha_thread_info[thr].idle_pct);
|
||||
rthr++;
|
||||
}
|
||||
return rthr ? total / rthr : 0;
|
||||
}
|
||||
|
||||
/* Collect date and time information before calling poll(). This will be used
|
||||
* to count the run time of the past loop and the sleep time of the next poll.
|
||||
*/
|
||||
|
@ -3446,7 +3446,7 @@ static void stats_dump_html_info(struct stream_interface *si, struct uri_auth *u
|
||||
actconn, pipes_used, pipes_used+pipes_free, read_freq_ctr(&global.conn_per_sec),
|
||||
bps >= 1000000000UL ? (bps / 1000000000.0) : bps >= 1000000UL ? (bps / 1000000.0) : (bps / 1000.0),
|
||||
bps >= 1000000000UL ? 'G' : bps >= 1000000UL ? 'M' : 'k',
|
||||
total_run_queues(), total_allocated_tasks(), report_idle()
|
||||
total_run_queues(), total_allocated_tasks(), sched_report_idle()
|
||||
);
|
||||
|
||||
/* scope_txt = search query, appctx->ctx.stats.scope_len is always <= STAT_SCOPE_TXT_MAXLEN */
|
||||
@ -4479,7 +4479,7 @@ int stats_fill_info(struct field *info, int len, uint flags)
|
||||
#endif
|
||||
info[INF_TASKS] = mkf_u32(0, total_allocated_tasks());
|
||||
info[INF_RUN_QUEUE] = mkf_u32(0, total_run_queues());
|
||||
info[INF_IDLE_PCT] = mkf_u32(FN_AVG, report_idle());
|
||||
info[INF_IDLE_PCT] = mkf_u32(FN_AVG, sched_report_idle());
|
||||
info[INF_NODE] = mkf_str(FO_CONFIG|FN_OUTPUT|FS_SERVICE, global.node);
|
||||
if (global.desc)
|
||||
info[INF_DESCRIPTION] = mkf_str(FO_CONFIG|FN_OUTPUT|FS_SERVICE, global.desc);
|
||||
|
16
src/task.c
16
src/task.c
@ -859,6 +859,22 @@ void process_runnable_tasks()
|
||||
activity[tid].long_rq++;
|
||||
}
|
||||
|
||||
/* report the average CPU idle percentage over all running threads, between 0 and 100 */
|
||||
uint sched_report_idle()
|
||||
{
|
||||
uint total = 0;
|
||||
uint rthr = 0;
|
||||
uint thr;
|
||||
|
||||
for (thr = 0; thr < MAX_THREADS; thr++) {
|
||||
if (!(all_threads_mask & (1UL << thr)))
|
||||
continue;
|
||||
total += HA_ATOMIC_LOAD(&ha_thread_info[thr].idle_pct);
|
||||
rthr++;
|
||||
}
|
||||
return rthr ? total / rthr : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Delete every tasks before running the master polling loop
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user