diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/sched.h | 10 | ||||
| -rw-r--r-- | include/linux/sched/sysctl.h | 3 | ||||
| -rw-r--r-- | include/trace/events/sched.h | 31 |
3 files changed, 35 insertions, 9 deletions
diff --git a/include/linux/sched.h b/include/linux/sched.h index 77d3b4c106cd..fc0f5db45791 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -1289,6 +1289,7 @@ struct ravg { u32 sum_history[RAVG_HIST_SIZE_MAX]; #ifdef CONFIG_SCHED_FREQ_INPUT u32 curr_window, prev_window; + u16 active_windows; #endif }; @@ -2125,10 +2126,15 @@ static inline cputime_t task_gtime(struct task_struct *t) extern void task_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st); extern void thread_group_cputime_adjusted(struct task_struct *p, cputime_t *ut, cputime_t *st); +struct sched_load { + unsigned long prev_load; + unsigned long new_task_load; +}; + #if defined(CONFIG_SCHED_FREQ_INPUT) extern int sched_set_window(u64 window_start, unsigned int window_size); extern unsigned long sched_get_busy(int cpu); -extern void sched_get_cpus_busy(unsigned long *busy, +extern void sched_get_cpus_busy(struct sched_load *busy, const struct cpumask *query_cpus); extern void sched_set_io_is_busy(int val); int sched_update_freq_max_load(const cpumask_t *cpumask); @@ -2141,6 +2147,8 @@ static inline unsigned long sched_get_busy(int cpu) { return 0; } +static inline void sched_get_cpus_busy(struct sched_load *busy, + const struct cpumask *query_cpus) {}; static inline void sched_set_io_is_busy(int val) {}; static inline int sched_update_freq_max_load(const cpumask_t *cpumask) diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h index 5db0256590c6..0fb660306a9f 100644 --- a/include/linux/sched/sysctl.h +++ b/include/linux/sched/sysctl.h @@ -69,6 +69,9 @@ extern unsigned int sysctl_sched_powerband_limit_pct; extern unsigned int sysctl_sched_lowspill_freq; extern unsigned int sysctl_sched_pack_freq; extern unsigned int sysctl_sched_boost; +#if defined(CONFIG_SCHED_FREQ_INPUT) +extern unsigned int sysctl_sched_new_task_windows; +#endif #else /* CONFIG_SCHED_HMP */ diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index 69aede209948..ae04e2095389 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -244,6 +244,9 @@ TRACE_EVENT(sched_update_task_ravg, __field( u64, ps ) __field( u32, curr_window ) __field( u32, prev_window ) + __field( u64, nt_cs ) + __field( u64, nt_ps ) + __field( u32, active_windows ) #endif ), @@ -267,12 +270,15 @@ TRACE_EVENT(sched_update_task_ravg, __entry->ps = rq->prev_runnable_sum; __entry->curr_window = p->ravg.curr_window; __entry->prev_window = p->ravg.prev_window; + __entry->nt_cs = rq->nt_curr_runnable_sum; + __entry->nt_ps = rq->nt_prev_runnable_sum; + __entry->active_windows = p->ravg.active_windows; #endif ), 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" #ifdef CONFIG_SCHED_FREQ_INPUT - " cs %llu ps %llu cur_window %u prev_window %u" + " cs %llu ps %llu cur_window %u prev_window %u nt_cs %llu nt_ps %llu active_wins %u" #endif , __entry->wallclock, __entry->win_start, __entry->delta, task_event_names[__entry->evt], __entry->cpu, @@ -282,7 +288,9 @@ TRACE_EVENT(sched_update_task_ravg, __entry->sum, __entry->irqtime #ifdef CONFIG_SCHED_FREQ_INPUT , __entry->cs, __entry->ps, __entry->curr_window, - __entry->prev_window + __entry->prev_window, + __entry->nt_cs, __entry->nt_ps, + __entry->active_windows #endif ) ); @@ -374,37 +382,44 @@ TRACE_EVENT(sched_migration_update_sum, __field(int, pid ) __field( u64, cs ) __field( u64, ps ) + __field( s64, nt_cs ) + __field( s64, nt_ps ) ), TP_fast_assign( __entry->cpu = cpu_of(rq); __entry->cs = rq->curr_runnable_sum; __entry->ps = rq->prev_runnable_sum; + __entry->nt_cs = (s64)rq->nt_curr_runnable_sum; + __entry->nt_ps = (s64)rq->nt_prev_runnable_sum; __entry->pid = p->pid; ), - TP_printk("cpu %d: cs %llu ps %llu pid %d", __entry->cpu, - __entry->cs, __entry->ps, __entry->pid) + TP_printk("cpu %d: cs %llu ps %llu nt_cs %lld nt_ps %lld pid %d", + __entry->cpu, __entry->cs, __entry->ps, + __entry->nt_cs, __entry->nt_ps, __entry->pid) ); TRACE_EVENT(sched_get_busy, - TP_PROTO(int cpu, u64 load), + TP_PROTO(int cpu, u64 load, u64 nload), - TP_ARGS(cpu, load), + TP_ARGS(cpu, load, nload), TP_STRUCT__entry( __field( int, cpu ) __field( u64, load ) + __field( u64, nload ) ), TP_fast_assign( __entry->cpu = cpu; __entry->load = load; + __entry->nload = nload; ), - TP_printk("cpu %d load %lld", - __entry->cpu, __entry->load) + TP_printk("cpu %d load %lld new_task_load %lld", + __entry->cpu, __entry->load, __entry->nload) ); TRACE_EVENT(sched_freq_alert, |
