在Linux源代码中,我发现get_avenrun()
中的fs/proc/loadavg.c
将是called,以获取最近1、5和15分钟的平均负载。但是在get_avenrun()
definition中,它只是将avenrun[i]
分配给了它的第一个参数。这意味着定期调用此函数无法更新/proc/loadavg
。
在kernal/sched/loadavg.c
中,只有2个地方将更改全局unsigned long avenrun[3];
,
static void calc_global_nohz(void)
void calc_global_load(unsigned long ticks)
我只是想知道哪个内部进程/线程会定期调用这两个函数(或者还有其他方法可以定期更新avenrun[3]
),calc_global_nohz()
和calc_global_load()
有什么区别。