2019年4月26日星期五

服务器负载?top命令/CPU使用率/load average计算方法

原文链接:https://www.chenweiliang.com/cwl-1029.html


当我们学会了用Linux VPS 服务器来建站后,有必要了解load average各种负载平均值的含义,因为我们需要使用top命令了解系统的完成状态,关注变量的实时变化。


要理解这一点,就需要了解以下变量说明。


top命令load average说明


“load average”,表示“系统的平均负载”。内有3个数字,我们能由此确定系统负载是大还是小


以下是如何使用它的详细说明 ▼


top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0

  • 统计信息区域的前5行,是整个系统的统计数据。

  • 第1行是任务队列信息,与uptime命令的执行结果相同。

其内容如下:


  • 01:06:48 当前时间

  • up 1:22 系统运行时间,格式为时:分

  • 1 user 当前登录用户数

  • load average: 0.06, 0.60, 0.48 系统负载,即任务队列的平均长度。

  • 3个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

  • 第2和第3行是进程和CPU信息。

  •  

当有多个CPU时,此内容可能超过2行。内容如下:


  • Tasks: 29 total 进程总数

  • 1 running 正在运行的进程数

  • 28 sleeping 睡眠的进程数

  • 0 stopped 停止的进程数

  • 0 zombie 僵尸进程数

  • Cpu(s): 0.3% us 用户空间占用CPU百分比

  • 1.0% sy 内核空间占用CPU百分比

  • 0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比

  • 98.7% id 空闲CPU百分比

  • 0.0% wa 等待输入输出的CPU时间百分比

  • 0.0% hi

  • 0.0% si

以下是最后两2行内存信息:


  • Mem: 191272k total 物理内存总量

  • 173656k used 使用的物理内存总量

  • 17616k free 空闲内存总量

  • 22052k buffers 用作内核缓存的内存量

  • Swap: 192772k total 交换区总量

  • 0k used 使用的交换区总量

  • 192772k free 空闲交换区总量

  • 123988k cached 缓冲的交换区总量。

内存的内容被换出到交换区域,然后又被交换到内存中,但尚未被覆盖使用过的交换区域。


此值是内容已存在于内存中的交换区域的大小。


当再次交换相应的存储器时,不再需要写入交换区域。


进程的详细信息,显示在每个进程信息区域的统计区域下方。


首先,让我们来了解每个列的含义。


列名含义


  • PID 进程id

  • PPID 父进程id

  • RUSER Real user name

  • UID 进程所有者的用户id

  • USER 进程所有者的用户名

  • GROUP 进程所有者的组名

  • TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?

  • PR 优先级

  • NI nice值。负值表示高优先级,正值表示低优先级

  • P 最后使用的CPU,仅在多CPU环境下有意义

  • %CPU 上次更新到现在的CPU时间占用百分比

  • TIME 进程使用的CPU时间总计,单位秒

  • TIME+ 进程使用的CPU时间总计,单位1/100秒

  • %MEM 进程使用的物理内存百分比

  • VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

  • SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。

  • RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

  • CODE 可执行代码占用的物理内存大小,单位kb

  • DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb

  • SHR 共享内存大小,单位kb

  • nFLT 页面错误次数

  • nDRT 最后一次写入到现在,被修改过的页面数。

  • S 进程状态。

  • D=不可中断的睡眠状态

  • R=运行

  • S=睡眠

  • T=跟踪/停止

  • Z=僵尸进程

  • COMMAND 命令名/命令行

  • WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名

  • Flags 任务标志,参考 sched.h

linux load average调试解析


在查看了top命令所显示的状态后,需要依据其来做优化,但top命令显示的只是表象,所以我们可以通过iostat或者vmstat命令进一步的观察。


vmstat 查看系统负载


vmstat
procs -------memory-------- ----swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
0 0 100152 2436 97200 289740 0 1 34 45 99 33 0 0 99 0

procs


  • r 列表示运行和等待cpu时间片的进程数,如果长期大于1,说明cpu不足,需提高cpu。

  • b 列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

cpu 表示cpu的使用状态


us 列显示了用户方式下所花费 CPU 时间的百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,需要考虑优化用户的程序。


sy 列显示了内核进程所花费的cpu时间的百分比。这里us + sy的参考值为80%,如果us+sy 大于 80%说明可能存在CPU不足。


wa 列显示了IO等待所占用的CPU时间的百分比。


这里wa的参考值为30%,如果wa超过30%,说明IO等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。


id 列显示了cpu处在空闲状态的时间百分比。


扩展阅读:






欢迎转载《服务器负载?top命令/CPU使用率/load average计算方法
陈沩亮版权所有,转载请注明出处链接:https://www.chenweiliang.com/cwl-1029.html


网站地址:https://www.chenweiliang.com/



欲学更多秘技,请关注微信公众号:cwlboke

没有评论:

发表评论