我想知道基于Red-Hat的linux的输出是否可以由基于Debian的linux进行不同的解释。
为了使问题更具体,我所要了解的是,如何理解top
Red-Hat系统上命令第一行的“平均负载” 以及如何通过官方文档ro代码对此进行验证。
[有很多方法可以解决这个问题,所有这些都是可以接受的答案。]
一种可能的方法是找到正式记录此信息的位置。
另一个是找到top
从我正在开发的特定发行版和版本中构建的代码版本。
我得到的命令输出是:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
在这种情况下,如何解释负载平均值?
我设法从一个文档来源找到平均负载大约是最后一分钟,并且应将其乘以100后再由另一个文档来源进行解释。
因此,问题是:
加载量是0.02%还是2%?
文档来源和版本:
1)第一个与
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
来源:man top
在我的RedHat发行
版中,Ubuntu也具有带有“任务”的版本,该版本无法在以下位置解释平均负载:http :
//manpages.ubuntu.com/manpages/precise/man1/top.1.html
2)第二个开始于
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
资料来源:http :
//man7.org/linux/man-pages/man1/top.1.htm
3)这开始于:
TOP(1)
NAME
top - display and update information about the top cpu processes
来源:http://www.unixtop.org/man.shtml
的第一个,可以看出man top
在RHEL
或online ubuntu documentation
和它不具有输出格式任何解释(也无法左右的平均负载在我感兴趣的) 。
在第二一个,包含了简要说明,并指出,平均负载与最后1分钟的事,但没有关于其价值的诠释!
我直接引用第二个来源:
2a。UPTIME和LOAD平均值
这部分由一行组成,该行包含:
程序或窗口名称,具体取决于显示模式的
当前时间和自上次引导以来的时间长度
用户
在最近1、5和15分钟内的系统平均负载总数
因此,如果此解释确实正确,那么仅需了解平均负载约为最后1分钟即可。
但是它没有解释数字的格式。
在第三种解释中,它表示:
指定平均负载数时,应将其乘以100。
此解释表明0.02表示2%,而不是0.02%。但这是正确的吗?另外,它是否适用于所有Linux发行版以及可能的不同实现top
?
为了找到该问题的答案,我尝试通过在线搜索来遍历代码。但是我至少发现了top
与RHEL相关的两个不同版本!在builtin-top.c
和重构top.c
。如代码开头所述,两者均受Red-Hat的版权保护,因此RHEL使用其中之一是合乎逻辑的。
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
因此,在研究那么多代码之前,我想要一个关于应该集中精力以形成对cpu负载如何解释的准确理解的意见。
从以下答案中给出的信息中,除了进行一些个人搜索之外,我还发现:
1- top
我正在使用的包含在procps-3.2.8软件包中。可以使用验证top -v
。
2-在procps-3.2.8
我从官方网站下载的版本中,该工具似乎直接uptime
从procfs
文件中获取其信息/proc/loadavg
(不使用linux函数getloadavg()
)。
3-现在,该top
命令也不使用该功能getloadavg()
。我设法验证top
确实与uptime
显示平均负载的工具。它实际上调用uptime
工具的函数,该函数从procfs
file 获取信息/proc/loadavg
。
因此,所有内容都指向该/proc/loadavg
文件!因此,为了对load average
by产生的内容有准确的了解top
,必须阅读内核代码以查看文件loadavg
的编写方式。
在其中一个答案中还指出了一篇出色的文章,该文章提供了外行对的三个值的解释loadavg
。
因此,尽管所有答案都同样有用和有用,但我将标记为http://www.linuxjournal.com//article/9001的文章标记
为对我问题的“答案”。谢谢大家的贡献!
另外,从理解最高和平均负载的问题中,我找到了指向内核源代码的链接,该链接指向loadavg
计算点。似乎有很多注释解释了它的工作方式,这部分代码也位于C
!中。
该代码的链接是http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
再次,我不打算进行任何形式的窃,只是为了完整性起见,将其添加。因此,我重复一遍,从理解最高和平均负载中的答案之一找到了指向内核代码的链接...
top -v
)