On Wed, Mar 17, 2021 at 1:25 AM Ingo Molnar <mingo@xxxxxxxxxx> wrote: > > * Josh Don <joshdon@xxxxxxxxxx> wrote: > > > If resched_latency_warn_ms is set to the default value, only one warning > > will be produced per boot. > > Looks like a value hack, should probably be a separate flag, > defaulting to warn-once. Agreed, done. > > This warning only exists under CONFIG_SCHED_DEBUG. If it goes off, it is > > likely that there is a missing cond_resched() somewhere. > > CONFIG_SCHED_DEBUG is default-y, so most distros have it enabled. To avoid log spam for people who don't care, I was considering having the feature default disabled. Perhaps a better alternative is to only show a single line warning and not print the full backtrace by default. Does the latter sound good to you? > > +#ifdef CONFIG_KASAN > > +#define RESCHED_DEFAULT_WARN_LATENCY_MS 101 > > +#define RESCHED_BOOT_QUIET_SEC 600 > > +#else > > +#define RESCHED_DEFAULT_WARN_LATENCY_MS 51 > > +#define RESCHED_BOOT_QUIET_SEC 300 > > #endif > > +int sysctl_resched_latency_warn_ms = RESCHED_DEFAULT_WARN_LATENCY_MS; > > +#endif /* CONFIG_SCHED_DEBUG */ > > I'd really just make this a single value - say 100 or 200 msecs. Replacing these both with a single value (the more conservative default of 100ms and 600s). > > +static inline void resched_latency_warn(int cpu, u64 latency) > > +{ > > + static DEFINE_RATELIMIT_STATE(latency_check_ratelimit, 60 * 60 * HZ, 1); > > + > > + WARN(__ratelimit(&latency_check_ratelimit), > > + "CPU %d: need_resched set for > %llu ns (%d ticks) " > > + "without schedule\n", > > + cpu, latency, cpu_rq(cpu)->ticks_without_resched); > > +} > > Could you please put the 'sched:' prefix into scheduler warnings. > Let's have a bit of a namespace structure in new warnings. Sounds good, done.