Loading include/linux/sched.h +1 −0 Original line number Diff line number Diff line Loading @@ -1499,6 +1499,7 @@ struct ravg { */ u64 mark_start; u32 sum, demand; u32 coloc_demand; u32 sum_history[RAVG_HIST_SIZE_MAX]; u32 *curr_window_cpu, *prev_window_cpu; u32 curr_window, prev_window; Loading include/trace/events/sched.h +8 −4 Original line number Diff line number Diff line Loading @@ -236,6 +236,7 @@ TRACE_EVENT(sched_update_history, __field( int, samples ) __field(enum task_event, evt ) __field(unsigned int, demand ) __field(unsigned int, coloc_demand ) __field(unsigned int, pred_demand ) __array( u32, hist, RAVG_HIST_SIZE_MAX) __field(unsigned int, nr_big_tasks ) Loading @@ -249,6 +250,7 @@ TRACE_EVENT(sched_update_history, __entry->samples = samples; __entry->evt = evt; __entry->demand = p->ravg.demand; __entry->coloc_demand = p->ravg.coloc_demand; __entry->pred_demand = p->ravg.pred_demand; memcpy(__entry->hist, p->ravg.sum_history, RAVG_HIST_SIZE_MAX * sizeof(u32)); Loading @@ -256,12 +258,12 @@ TRACE_EVENT(sched_update_history, __entry->cpu = rq->cpu; ), TP_printk("%d (%s): runtime %u samples %d event %s demand %u pred_demand %u" TP_printk("%d (%s): runtime %u samples %d event %s demand %u coloc_demand %u pred_demand %u" " (hist: %u %u %u %u %u) cpu %d nr_big %u", __entry->pid, __entry->comm, __entry->runtime, __entry->samples, task_event_names[__entry->evt], __entry->demand, __entry->pred_demand, __entry->demand, __entry->coloc_demand, __entry->pred_demand, __entry->hist[0], __entry->hist[1], __entry->hist[2], __entry->hist[3], __entry->hist[4], __entry->cpu, __entry->nr_big_tasks) Loading Loading @@ -317,6 +319,7 @@ TRACE_EVENT(sched_update_task_ravg, __field( u64, irqtime ) __field(enum task_event, evt ) __field(unsigned int, demand ) __field(unsigned int, coloc_demand ) __field(unsigned int, sum ) __field( int, cpu ) __field(unsigned int, pred_demand ) Loading Loading @@ -350,6 +353,7 @@ TRACE_EVENT(sched_update_task_ravg, __entry->mark_start = p->ravg.mark_start; __entry->delta_m = (wallclock - p->ravg.mark_start); __entry->demand = p->ravg.demand; __entry->coloc_demand = p->ravg.coloc_demand; __entry->sum = p->ravg.sum; __entry->irqtime = irqtime; __entry->pred_demand = p->ravg.pred_demand; Loading @@ -370,12 +374,12 @@ TRACE_EVENT(sched_update_task_ravg, __entry->prev_top = rq->prev_top; ), TP_printk("wc %llu ws %llu delta %llu event %s cpu %d cur_freq %u cur_pid %d task %d (%s) ms %llu delta %llu demand %u sum %u irqtime %llu pred_demand %u rq_cs %llu rq_ps %llu cur_window %u (%s) prev_window %u (%s) nt_cs %llu nt_ps %llu active_wins %u grp_cs %lld grp_ps %lld, grp_nt_cs %llu, grp_nt_ps: %llu curr_top %u prev_top %u", TP_printk("wc %llu ws %llu delta %llu event %s cpu %d cur_freq %u cur_pid %d task %d (%s) ms %llu delta %llu demand %u coloc_demand: %u sum %u irqtime %llu pred_demand %u rq_cs %llu rq_ps %llu cur_window %u (%s) prev_window %u (%s) nt_cs %llu nt_ps %llu active_wins %u grp_cs %lld grp_ps %lld, grp_nt_cs %llu, grp_nt_ps: %llu curr_top %u prev_top %u", __entry->wallclock, __entry->win_start, __entry->delta, task_event_names[__entry->evt], __entry->cpu, __entry->cur_freq, __entry->cur_pid, __entry->pid, __entry->comm, __entry->mark_start, __entry->delta_m, __entry->demand, __entry->delta_m, __entry->demand, __entry->coloc_demand, __entry->sum, __entry->irqtime, __entry->pred_demand, __entry->rq_cs, __entry->rq_ps, __entry->curr_window, __window_print(p, __get_dynamic_array(curr_sum), nr_cpu_ids), Loading kernel/sched/walt.c +3 −1 Original line number Diff line number Diff line Loading @@ -1704,6 +1704,7 @@ static void update_history(struct rq *rq, struct task_struct *p, pred_demand); p->ravg.demand = demand; p->ravg.coloc_demand = div64_u64(sum, sched_ravg_hist_size); p->ravg.pred_demand = pred_demand; if (__task_in_cum_window_demand(rq, p)) Loading Loading @@ -1982,6 +1983,7 @@ void init_new_task_load(struct task_struct *p, bool idle_task) (u64)sched_ravg_window, 100); p->ravg.demand = init_load_windows; p->ravg.coloc_demand = init_load_windows; p->ravg.pred_demand = 0; for (i = 0; i < RAVG_HIST_SIZE_MAX; ++i) p->ravg.sum_history[i] = init_load_windows; Loading Loading @@ -2505,7 +2507,7 @@ static void _set_preferred_cluster(struct related_thread_group *grp) (sched_ravg_window * sched_ravg_hist_size)) continue; combined_demand += p->ravg.demand; combined_demand += p->ravg.coloc_demand; } Loading Loading
include/linux/sched.h +1 −0 Original line number Diff line number Diff line Loading @@ -1499,6 +1499,7 @@ struct ravg { */ u64 mark_start; u32 sum, demand; u32 coloc_demand; u32 sum_history[RAVG_HIST_SIZE_MAX]; u32 *curr_window_cpu, *prev_window_cpu; u32 curr_window, prev_window; Loading
include/trace/events/sched.h +8 −4 Original line number Diff line number Diff line Loading @@ -236,6 +236,7 @@ TRACE_EVENT(sched_update_history, __field( int, samples ) __field(enum task_event, evt ) __field(unsigned int, demand ) __field(unsigned int, coloc_demand ) __field(unsigned int, pred_demand ) __array( u32, hist, RAVG_HIST_SIZE_MAX) __field(unsigned int, nr_big_tasks ) Loading @@ -249,6 +250,7 @@ TRACE_EVENT(sched_update_history, __entry->samples = samples; __entry->evt = evt; __entry->demand = p->ravg.demand; __entry->coloc_demand = p->ravg.coloc_demand; __entry->pred_demand = p->ravg.pred_demand; memcpy(__entry->hist, p->ravg.sum_history, RAVG_HIST_SIZE_MAX * sizeof(u32)); Loading @@ -256,12 +258,12 @@ TRACE_EVENT(sched_update_history, __entry->cpu = rq->cpu; ), TP_printk("%d (%s): runtime %u samples %d event %s demand %u pred_demand %u" TP_printk("%d (%s): runtime %u samples %d event %s demand %u coloc_demand %u pred_demand %u" " (hist: %u %u %u %u %u) cpu %d nr_big %u", __entry->pid, __entry->comm, __entry->runtime, __entry->samples, task_event_names[__entry->evt], __entry->demand, __entry->pred_demand, __entry->demand, __entry->coloc_demand, __entry->pred_demand, __entry->hist[0], __entry->hist[1], __entry->hist[2], __entry->hist[3], __entry->hist[4], __entry->cpu, __entry->nr_big_tasks) Loading Loading @@ -317,6 +319,7 @@ TRACE_EVENT(sched_update_task_ravg, __field( u64, irqtime ) __field(enum task_event, evt ) __field(unsigned int, demand ) __field(unsigned int, coloc_demand ) __field(unsigned int, sum ) __field( int, cpu ) __field(unsigned int, pred_demand ) Loading Loading @@ -350,6 +353,7 @@ TRACE_EVENT(sched_update_task_ravg, __entry->mark_start = p->ravg.mark_start; __entry->delta_m = (wallclock - p->ravg.mark_start); __entry->demand = p->ravg.demand; __entry->coloc_demand = p->ravg.coloc_demand; __entry->sum = p->ravg.sum; __entry->irqtime = irqtime; __entry->pred_demand = p->ravg.pred_demand; Loading @@ -370,12 +374,12 @@ TRACE_EVENT(sched_update_task_ravg, __entry->prev_top = rq->prev_top; ), TP_printk("wc %llu ws %llu delta %llu event %s cpu %d cur_freq %u cur_pid %d task %d (%s) ms %llu delta %llu demand %u sum %u irqtime %llu pred_demand %u rq_cs %llu rq_ps %llu cur_window %u (%s) prev_window %u (%s) nt_cs %llu nt_ps %llu active_wins %u grp_cs %lld grp_ps %lld, grp_nt_cs %llu, grp_nt_ps: %llu curr_top %u prev_top %u", TP_printk("wc %llu ws %llu delta %llu event %s cpu %d cur_freq %u cur_pid %d task %d (%s) ms %llu delta %llu demand %u coloc_demand: %u sum %u irqtime %llu pred_demand %u rq_cs %llu rq_ps %llu cur_window %u (%s) prev_window %u (%s) nt_cs %llu nt_ps %llu active_wins %u grp_cs %lld grp_ps %lld, grp_nt_cs %llu, grp_nt_ps: %llu curr_top %u prev_top %u", __entry->wallclock, __entry->win_start, __entry->delta, task_event_names[__entry->evt], __entry->cpu, __entry->cur_freq, __entry->cur_pid, __entry->pid, __entry->comm, __entry->mark_start, __entry->delta_m, __entry->demand, __entry->delta_m, __entry->demand, __entry->coloc_demand, __entry->sum, __entry->irqtime, __entry->pred_demand, __entry->rq_cs, __entry->rq_ps, __entry->curr_window, __window_print(p, __get_dynamic_array(curr_sum), nr_cpu_ids), Loading
kernel/sched/walt.c +3 −1 Original line number Diff line number Diff line Loading @@ -1704,6 +1704,7 @@ static void update_history(struct rq *rq, struct task_struct *p, pred_demand); p->ravg.demand = demand; p->ravg.coloc_demand = div64_u64(sum, sched_ravg_hist_size); p->ravg.pred_demand = pred_demand; if (__task_in_cum_window_demand(rq, p)) Loading Loading @@ -1982,6 +1983,7 @@ void init_new_task_load(struct task_struct *p, bool idle_task) (u64)sched_ravg_window, 100); p->ravg.demand = init_load_windows; p->ravg.coloc_demand = init_load_windows; p->ravg.pred_demand = 0; for (i = 0; i < RAVG_HIST_SIZE_MAX; ++i) p->ravg.sum_history[i] = init_load_windows; Loading Loading @@ -2505,7 +2507,7 @@ static void _set_preferred_cluster(struct related_thread_group *grp) (sched_ravg_window * sched_ravg_hist_size)) continue; combined_demand += p->ravg.demand; combined_demand += p->ravg.coloc_demand; } Loading