The commit is pushed to "branch-rh9-5.14.vz9.1.x-ovz" and will appear at https://src.openvz.org/scm/ovz/vzkernel.git after ark-5.14 ------> commit 47283b640770818d93c5cc898ee72446fda8c857 Author: Kirill Tkhai <ktk...@virtuozzo.com> Date: Fri Oct 1 19:38:43 2021 +0300
sched: Make calc_global_load() return true when it's need to update ve statistic This will be used in next patches to call calc_load_ve() out of jiffies lock. Signed-off-by: Kirill Tkhai <ktk...@virtuozzo.com> ========================= Patchset description: Make calc_load_ve() be executed out of jiffies_lock https://jira.sw.ru/browse/PSBM-84967 Kirill Tkhai (3): sched: Make calc_global_load() return true when it's need to update ve statistic sched: Export calc_load_ve() sched: Call calc_load_ve() out of jiffies_lock (cherry picked from vz commit b26208e2f8bae0bc539bef9f37d5fc650e47e092) Signed-off-by: Konstantin Khorenko <khore...@virtuozzo.com> (cherry-picked from vz8 commit c4760068b0a7 ("sched: Make calc_global_load() return true when it's need to update ve statistic")) Signed-off-by: Nikita Yushchenko <nikita.yushche...@virtuozzo.com> --- include/linux/sched/loadavg.h | 4 +++- kernel/sched/loadavg.c | 5 +++-- kernel/time/timekeeping.c | 4 ++-- kernel/time/timekeeping.h | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/include/linux/sched/loadavg.h b/include/linux/sched/loadavg.h index 83ec54b65e79..58cca1cef579 100644 --- a/include/linux/sched/loadavg.h +++ b/include/linux/sched/loadavg.h @@ -2,6 +2,8 @@ #ifndef _LINUX_SCHED_LOADAVG_H #define _LINUX_SCHED_LOADAVG_H +#include <linux/types.h> + /* * These are the constant used to fake the fixed-point load-average * counting. Some notes: @@ -43,6 +45,6 @@ extern unsigned long calc_load_n(unsigned long load, unsigned long exp, #define LOAD_INT(x) ((x) >> FSHIFT) #define LOAD_FRAC(x) LOAD_INT(((x) & (FIXED_1-1)) * 100) -extern void calc_global_load(void); +extern bool calc_global_load(void); #endif /* _LINUX_SCHED_LOADAVG_H */ diff --git a/kernel/sched/loadavg.c b/kernel/sched/loadavg.c index 954b229868d9..62a463cb5cab 100644 --- a/kernel/sched/loadavg.c +++ b/kernel/sched/loadavg.c @@ -347,14 +347,14 @@ static inline void calc_global_nohz(void) { } * * Called from the global timer code. */ -void calc_global_load(void) +bool calc_global_load(void) { unsigned long sample_window; long active, delta; sample_window = READ_ONCE(calc_load_update); if (time_before(jiffies, sample_window + 10)) - return; + return false; /* * Fold the 'old' NO_HZ-delta to include all NO_HZ CPUs. @@ -377,6 +377,7 @@ void calc_global_load(void) * catch up in bulk. */ calc_global_nohz(); + return true; } /* diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 8a364aa9881a..e5c4800447d7 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -2264,10 +2264,10 @@ EXPORT_SYMBOL(ktime_get_coarse_ts64); /* * Must hold jiffies_lock */ -void do_timer(unsigned long ticks) +bool do_timer(unsigned long ticks) { jiffies_64 += ticks; - calc_global_load(); + return calc_global_load(); } /** diff --git a/kernel/time/timekeeping.h b/kernel/time/timekeeping.h index 543beba096c7..fcecd50da2e3 100644 --- a/kernel/time/timekeeping.h +++ b/kernel/time/timekeeping.h @@ -22,8 +22,8 @@ static inline int sched_clock_suspend(void) { return 0; } static inline void sched_clock_resume(void) { } #endif +extern bool do_timer(unsigned long ticks); extern void update_process_times(int user); -extern void do_timer(unsigned long ticks); extern void update_wall_time(void); extern raw_spinlock_t jiffies_lock; _______________________________________________ Devel mailing list Devel@openvz.org https://lists.openvz.org/mailman/listinfo/devel