PROC系列

该文件中的所有值都是从系统启动开始累计到当前时刻。该文件只给出了所有CPU的集合信息,不能该出每个CPU的信息。

[root@localhost ~]# cat /proc/loadavg
4.61 4.36 4.15 9/84 5662

每个值的含义为:
参数 解释
lavg_1 (4.61) 1-分钟平均负载
lavg_5 (4.36) 5-分钟平均负载
lavg_15(4.15) 15-分钟平均负载
nr_running (9) 在采样时刻,运行队列的任务的数目,与/proc/stat的procs_running表示相同意思
nr_threads (84) 在采样时刻,系统中活跃的任务的个数(不包括运行已经结束的任务)
last_pid(5662) 最大的pid值,包括轻量级进程,即线程。

假设当前有两个CPU,则每个CPU的当前任务数为4.61/2=2.31

我的理解:
loadavg的值应该与机器的cpu的个数相符合!

其实不能简单的通过loadavg来判断系统的负荷重!!

loadavg表示当前系统有多少个处于running状态和uninterupt sleeping状态的进程个数。一般来说处于不可中断的睡眠状态是指进程等待io时。当一个进程需要读入磁盘数据时,系统就会将其置为不可中断的睡眠,一直等到数据到来,这个时期进程虽然不显示占用cpu,但是操作系统的磁盘调度相应的部分以及所需外围设备的操作都应该记入该进程。所以处于这个状态的进程也被记入loadavg中。处于这个状态的进程是没有办法杀死的。
其实系统中的大多数进程处于的是可中断的睡眠,是因为进程无事可干,比如等待网络数据的到来,而进入睡眠,当有数据到来就会唤醒该进程。这种状态的进程不记入loadavg(并不显著的占用系统资源),并且可以通过信号杀死的。
如果是计算密集性的作业loadavg值还是挺有用的。(一个cpu的情况下)一个密集性计算的进程通常会占用一个点的loadavg,cpu的利用率是接近100%,如果有两个这样的进程loadavg就会占用2个点,cpu利用率也是接近100%。

结合loadavg和cpu的利用率可以基本判定系统的负荷,如果loadavg显著大于cpu的个数,并且每个cpu的利用率都挺高,说明系统负荷大。如果loadavg等于cpu的个数,并且cpu的利用率很高,说明系统处于满负荷,这个状态比较的理想。如果系统的loadavg大于cpu的个数,并且cpu的利用率一般,说明这个系统不是很平衡,可能是这个系统的I/O能力比较的差或者是内存比较的小。如果系统的loadavg大,而cpu的利用率很小,说明系统可能出问题了,也许某块盘坏了或者nfs系统出了问题等等吧。如果两者都小,说明系统比较的闲。

你可能感兴趣的:(proc)