在线文档教程

cpu_sup

cpu_sup

模块

cpu_sup

模块摘要

CPU负载与CPU利用率管理程序

描述

cpu_sup是一个监督CPU负载和CPU利用率的过程。它是OS_Mon应用程序的一部分,请参阅os_mon(6)。可用于Unix,但CPU利用率值(util/0,1)仅适用于Solaris,Linux和FreeBSD。

加载值与可运行的Unix进程在计划之前必须在运行队列中花费多长时间成比例。 因此,较高的值意味着更多的系统负载。 返回的值除以256会产生rup和top显示的数字。 在rup中显示为2.00的内容显示为xload中第二个标记的负载。

例如,rup显示128个负载为0.50,512个为2.00。

如果用户想要将负载值视为机器容量的百分比,那么这种测量方式会出现问题,因为负载值不限于固定的时间间隔。在这种情况下,下面的简单数学转换可以产生百分比的负载值:

PercentLoad = 100 * (1 - D/(D + Load))

D确定哪个负载值应与哪个百分比相关联。选择D= 50意味着128是60%负载,256是80%,512是90%等等。

测量系统负载的另一种方式是将忙CPU周期数除以CPU周期总数。这会立即生成0-100范围内的值。但是,这种方法隐藏了机器可能或多或少饱和的事实。因此,对于此度量,CPU利用率是比系统负载更好的名称。

接收足够请求永不会变为空闲的服务器将获得100%的CPU利用率。如果服务器收到50%的请求,它仍然会获得100%的分数。当系统负载用前面显示的百分比公式计算时,负载将从80%增加到87%。

avg1/0avg5/0avg15/0功能可以用于检索系统的负载值,并且util/0util/1功能可以用于检索CPU利用率值。

在Linux上运行时,cpu_sup会假定/ proc文件系统存在并可由cpu_sup访问。 如果不是,cpu_sup将会终止。

输出

nprocs() -> UnixProcesses | {error, Reason}

类型

返回在此机器上运行的UNIX进程数。这是一种粗略的测量系统负载的方法,但在某些情况下可能会引起兴趣。

如果cpu_sup不可用,则返回0 。

avg1() -> SystemLoad | {error, Reason}

类型

如上所述,返回最后一分钟的平均系统负载。0表示没有负载,256表示负载报告为1.00 rup

如果cpu_sup不可用,则返回0 。

avg5() -> SystemLoad | {error, Reason}

类型

如上所述,返回最近五分钟的平均系统负载。0表示没有负载,256表示负载报告为1.00 rup

如果cpu_sup不可用,则返回0 。

avg15() -> SystemLoad | {error, Reason}

类型

如上所述,返回最近15分钟内的平均系统负载。0表示没有负载,256表示负载报告为1.00 rup

返回0如果cpu_sup是不可用的。

util() -> CpuUtil | {error, Reason}

类型

返回上次调用后的cpu利用率。util/0util/1通过呼叫过程。

进程util/0util/1进程的第一次调用的返回值在大多数系统上是系统启动后的CPU利用率,但不能保证,因此该值应视为垃圾。这也适用于重新启动后的第一个呼叫cpu_sup

CPU利用率定义为所有CPU处于繁忙处理器状态(见util/1下文)的CPU周期平均百分比总和。

如果cpu_sup不可用,则返回0 。

util(Opts) -> UtilSpec | {error, Reason}

类型

返回自上次调用进程util/0util/1由调用进程调用之后的CPU使用率,详细信息请参见util/0

进程util/0util/1进程的第一次调用的返回值在大多数系统上是系统启动后的CPU利用率,但不能保证,因此该值应视为垃圾。这也适用于重新启动后的第一个呼叫cpu_sup

目前公认的备选方案:

detailed

返回的UtilDesc(s)将更加详细。

per_cpu

每个CPU将单独指定(假设这些信息可以从操作系统中检索),即UtilDesc每个CPU将返回一个列表。

描述UtilDesc = {Cpus, Busy, NonBusy, Misc}

Cpus

如果给出detailed和/或per_cpu选项,则为CPU编号或CPU编号列表。

如果不是,则这是all表示UtilDesc包含有关所有CPU的信息的原子。

Busy

如果detailed给出选项,这是一个{State, Share}元组列表,其中每个元组都包含有关处理器状态的信息,该状态已被确定为繁忙的处理器状态(请参见下文)。atom State是状态的名称,float Share表示自从上次调用util/0or 之后,在此状态中花费的CPU周期的百分比util/1

如果不是,则这是所有被标识为繁忙状态的CPU周期的百分比份额总和。

如果per_cpu没有给出,则所呈现的值是所有CPU的平均值。

NonBusy

Busy处理器状态类似,但处理器状态已被识别为非忙(见下文)。

Misc

目前未使用;保留供将来使用。

目前,这些处理器状态被标识为繁忙:

user

在用户模式下执行代码。

nice_user

在低优先级(好)用户模式下执行代码。此状态目前仅在Linux上确定。

kernel

在内核模式下执行代码。

目前,这些处理器状态被标识为非繁忙状态:

wait

等候。此状态目前仅在Solaris上确定。

idle

空闲状态。

识别出的处理器状态在不同的操作系统上可能不同,并且可能cpu_sup在同一操作系统上的不同版本之间发生变化。不过,在所有繁忙和所有非繁忙处理器状态中花费的CPU周期的百分比总和总是将总计为100%。

如果cpu_sup不可用,则返回{all,0,0,[]}

另见

os_mon(3)