The way loadavg is tracked during nohz only pays attention to the load upon entering nohz. This can be particularly noticeable if full nohz is entered while non-idle, and then the cpu goes idle and stays that way for a long time. Use the remote tick to ensure that full nohz cpus report their deltas within a reasonable time. [ swood: Added changelog and removed recheck of stopped tick. ]
Showing the changes to include/linux (1 of 3 files). Show all
Unified · Split
| @@ -15,9 +15,11 @@ static inline void nohz_balance_enter_idle(int cpu) { } · 14 unmodified lines | |||
| 15 | 15 | ||
| 16 | #ifdef CONFIG_NO_HZ_COMMON | 16 | #ifdef CONFIG_NO_HZ_COMMON |
| 17 | void calc_load_nohz_start(void); | 17 | void calc_load_nohz_start(void); |
| 18 | void calc_load_nohz_remote(struct rq *rq); | ||
| 18 | void calc_load_nohz_stop(void); | 19 | void calc_load_nohz_stop(void); |
| 19 | #else | 20 | #else |
| 20 | static inline void calc_load_nohz_start(void) { } | 21 | static inline void calc_load_nohz_start(void) { } |
| 22 | static inline void calc_load_nohz_remote(struct rq *rq) { } | ||
| 21 | static inline void calc_load_nohz_stop(void) { } | 23 | static inline void calc_load_nohz_stop(void) { } |
| 22 | #endif /* CONFIG_NO_HZ_COMMON */ | 24 | #endif /* CONFIG_NO_HZ_COMMON */ |
| 23 | 25 | ||