服务器负载?top命令/CPU使用率/load average计算方法【转】
转自:https://www.chenweiliang.com/cwl-1029.html
当我们学会了用Linux VPS 服务器来建站后,有必要了解load average各种负载平均值的含义,因为我们需要使用top
命令了解系统的完成状态,关注变量的实时变化。
要理解这一点,就需要了解以下变量说明。
top 命令 load average 详解
以下是如何使用它的详细说明 ▼
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处在空闲状态的时间百分比。
以下文章说明了Linux Load Average过高多少合适?
【作者】sky
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.