系统平均负载(系统平均负载用什么命令查看)
1、本文是《面向应用开发者的系统指南》文档其中的一篇,完整的目录见《面向应用开发者的系统指南》导论。中可以使用、等命令来查看系统的平均负载情况其中的数据,给出了系统在最近1分钟、5分钟、15分钟的系统平均负载情况。这一节讲解系统平均负载这个数据的来源,内容包括以下几方面:。
2、系统平均负载值来源于哪里。平均负载包括了哪些指标。内核是如何计算平均负载值的。平均负载的意义是什么。
3、通过命令可以看到系统最近1分钟、5分钟以及15分钟的平均负载值,所以要知道这个值的来源,最简单的方式就是了解命令是从哪里获取到这些数据的,一方面可以看命令的代码实现,但是直觉告诉我们一般这类命令都是通过读取/文件系统来获取系统的一些指标,所以更简单的方式是一下命令,看看都去读取了哪些/文件系统的文件,果然看到了如下一行:。可以看到读取了文件,通过命令来看看关于这个文件的说明:。以上文档中说明了,系统负载的统计数据源系统当前就绪队列中的进程,处于就绪状态即状态以及处于等待的不可被信号中断,即状态。
4、文件的前三个字段,正是命令用于输出系统平均负载的数据来源,可以该文件内容来看看:。于是,这里的第一个疑问解决了:等命令行工具是通过读取文件获取当前系统在最近1分钟、5分钟、15分钟的平均负载值。在前面的描述中,提到了参与计算平均负载的进程包括:。系统当前就绪队列中的进程,处于就绪状态即状态以及处于等待的不可被信号中断,即状态。
5、处于状态的进程被算入其中符合预期,因为系统负载本来就是对这一项资源的度量,但是处于等待/并未占用资源的状态进程也被算入其中就让人有些意外了。在:一文中,详细探究了系统这么做的原因,有兴趣的读者可以点开链接看看这篇文章。简单的把结论放在这里:。
系统平均负载(系统平均负载用什么命令查看)
1、在系统中,平均负载就是,包括了正在工作和在等待工作,磁盘、锁等与此等价的说法是,在系统中平均负载反映的是系统中所有非的进程。而在非系统中,平均负载只包括运行已经就绪准备运行的进程。由以上可知,在系统中,通过等命令查看出来的平均负载如果突然变高,并不见得就是系统一定出现了问题,不能简单的把负载数量除以资源数量,因为其中可能包括了在等待磁盘/的状态进程。在上文中,提到了如果发现系统负载突然升高,还可以配合以下手段进一步查验:。
2、每进程的利用率:每线程的调度延迟:///延迟://。队列长度:1的列前两个是利用率指标,可用来识别工作负载的特征;后三个是饱和度指标,可用来进行性能分析。除了量化,还可以对磁盘/进行量化。这些命令具体的使用后续章节会给出。
3、以上,解决了系统负载数据的来源问题,接着又有了下一个疑问:文件系统是内核用于输出一些系统状态的文件系统,内核又是如何计算系统的平均负载值的。内核不可能一直监控着内核中的进程数量,更现实的做法是隔一段时间采集一组数据,再与前面的数据一起来预测当前的系统负载。
4、如果将过去和现在的数据都同等对待,给予同样的权重,那么计算公式就是简单的使用过去的数据加上现在的数据来求平均值。然而如果这样的话,过去的数据就和现在的数据一样重要。很显然,在使用数据来预测未来时,还是更近的数据权重更高更有说服力。在这部分,内核采用的方式是所谓的指数平滑法,其思想在于:给当前采集的数据,以及上一次采集周期的数据分别以权重值,通过把两部分加成起来计算平滑均值,公式如下:。
5、$$_=α*_{-1}+*(1-α)*_{-1}$$。$_$:时间的平滑平均值。$_{-1}$:时间-1的实际值。$_{-1}$:时间-1的平滑平均值。