这是一个面试问题,我通过电话筛选参加。
我给出的答案是:
Running State (R)
, interruptible State (S)
和 IO wait
.
但我认为我可能错误地理解了这个问题,或者我的答案中可能缺少一些东西,我只是觉得。
所以我在互联网上查了一下,发现了一些愚蠢的零散信息。我仍然不确定答案是什么。
您对这个问题的答案有何看法?
最佳答案
没有计算平均负载的标准方法,这取决于操作系统。这是Linux's load calculator :
long calc_load_fold_active(struct rq *this_rq)
{
long nr_active, delta = 0;
nr_active = this_rq->nr_running;
nr_active += (long) this_rq->nr_uninterruptible;
if (nr_active != this_rq->calc_load_active) {
delta = nr_active - this_rq->calc_load_active;
this_rq->calc_load_active = nr_active;
}
return delta;
}
出于负载平均目的,Linux 计为事件的进程为正在运行 (R) 和不可中断 (D)。
可中断 sleep (S) 不计算在内,也不计算已停止 (Z) 或已停止 (T)。
关于linux - 哪些进程状态会影响服务器的平均负载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36094913/