1. 简述
在日常使用中,常见的几种查看资源命令,如整机top,cpu的vmstat,内存free,硬盘df,磁盘io的iostat,以及网络io的ifstat 来观察系统的一些资源信息以及状况
1.1 top
格式: top [ -d number ] 或者 top [ -bnp ]
参数解释:
- -d : number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。
当然你也可以自定义比如,top -d 1 代表一秒刷新一次页面
- -b:以批次的方式执行top。
- -n:与-b配合使用,表示需要进行几次top命令的输出结果。
- -p:指定特定的pid进程号进行观察。
在top命令显示的页面还可以输入以下按键执行相应的功能(注意大小写区分的):
- ?:显示在top当中可以输入的命令
- P:以CPU的使用资源排序显示
- M:以内存的使用资源排序显示
- N:以pid排序显示
- T:由进程使用的时间累计排序显示
- k:给某一个pid一个信号。可以用来杀死进程
- r:给某个pid重新定制一个nice值(即优先级)
- q:退出top(用ctrl+c也可以退出top)。
输出结果详细解释:
分析前面5行信息:
top - 10:49:13 up 1:32, 2 users, load average: 0.00, 0.00, 0.00
内容 | 含义 |
---|---|
10:49:13 | 表示当前时间 |
up 1:32 | 表示系统运行时间 格式为 时:分 |
2 users | 当前登录用户数 |
load average: 0.00, 0.00, 0.00 | 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
Tasks: 155 total, 1 running, 154 sleeping, 0 stopped, 0 zombie
内容 | 含义 |
---|---|
155 total | 进程总数 |
1 running | 正在运行的进程数 |
154 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
内容 | 含义 |
---|---|
0.0%us | 用户空间占用CPU百分比 |
0.0%sy | 内核空间占用CPU百分比 |
0.0%ni | 用户进程空间内改变过优先级的进程占用CPU百分比 |
100.0%id | 空闲CPU百分比 |
0.0%wa | 等待输入输出的CPU时间百分比 |
0.0%hi | 硬中断(Hardware IRQ)占用CPU的百分比 |
0.0%si | 软中断(Software Interrupts)占用CPU的百分比 |
0.0%st | 实时占用Cpu的百分比 |
Mem: 8157844k total, 911984k used, 7245860k free, 54612k buffers |
内容 | 含义 |
---|---|
8157844k total | 物理内存总量 |
911984k used | 使用的物理内存总量 |
7245860k free | 空闲内存总量 |
54612k buffers | 用作内核缓存的内存量 |
Swap: 2097148k total, 0k used, 2097148k free, 191308k cached
内容 | 含义 |
---|---|
2097148k total | 交换区内存总量 |
0k used | 使用的交换区总量 |
2097148k free | 空闲交换区总量 |
191308k cached | 缓冲的交换区总量 |
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
内容 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者的用户名 |
PR | 优先级 |
NI | nice值。负值表示高优先级,正值表示低优先级 |
VIRT | 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES |
RES | 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA |
SHR | 共享内存大小,单位kb |
S | 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程 |
%CPU | 上次更新到现在的CPU时间占用百分比 |
%MEM | 进程使用的物理内存百分比 |
TIME+ | 进程使用的CPU时间总计,单位1/100秒 |
COMMAND | 命令名/命令行 |
其他:
默认进入top时,各进程是按照CPU的占用量来排序的。
1、在top基本视图中,按键盘数字“1”可以监控每个逻辑CPU的状况:
1.2 vmstat
vmstat命令是最常见的Linux/Unix监控工具,属于sysstat包。可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。
一般vmstat工具的使用是通过两个数字参数来完成的
- 第一个参数是采样的时间间隔数,单位是秒;
- 第二个参数是采样的次数
3 表示每个两秒采集一次服务器状态,3表示只采集3次;如果不想三次就结束,那就不要写,直接就 vmstat 3 就是代表3秒一次,一直执行下去;
参数详细解释:
Procs
(进程)
r : 等待执行的任务数,当这个值超过了cpu个数,就会达到Cpu瓶颈;
b : 等待IO的进程数量
swpd :正在使用虚拟的内存大小,单位kMemory
(内存)
free:空闲内存大小
buff:已用的buff大小,对块设备的读写进行缓冲
cache:已用的cache大小,文件系统的cacheSwap
(交换区)
si:每秒从交换区写入内存的大小(单位:kb/s)
so:每秒从内存写到交换区的大小IO
bi:每秒读取的块数(读磁盘)
bo:每秒写入的块数(写磁盘)system
in: 每秒中断数,包括时钟中断;
cs: 每秒上下文切换数
这两个值越大,会看到由内核消耗的cpu时间sy会越多;
秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目;cpu
us : 用户进程执行消耗cpu时间(user time);
sy: 系统进程消耗cpu时间(system time);
id: 空闲时间(包括IO等待时间);
wa: 等待IO时间;
st: 实时
1.3 free
显示当前系统内存和交换空间的使用情况;
常用参数;
-
free 默认等于free -k
-
free -m 以m为单位显示
-
free -g 以g为单位显示
参数详细解释: -
Mem
: 物理内存信息统计
total: 物理内存总量(total = used + free)
used:已经分配给缓存(buffers 与cache)的内存大小
free: 未被分配的内存大小
shared:共享内存,在linux里面有很多共享内存,比如一个libc库,很多程序调用,但实际只存了一份。
有些版本的操作系统中已经废弃了shared,此时,shared总是为0。
buffers:系统已分配但未被使用的块缓存(Buffer Cache)大小
cached:系统已分配但未被使用的页缓存(Page Cache)大小 -
-/+ buffers/cache
: 用户进程内存信息统计
used:已使用缓存的大小。等于Mem中used - buffers - cached的值。
free:剩余可用缓存的大小(包括:已分配未使用的缓存和未分配的缓存)。等于Mem中free + buffers + cached的值。 -
Swap
: 交换空间的使用情况。
total:交换空间的总量。
used:交换空间已使用的大小。
1.4 df
df 可以显示目前系统的最大可用空间及使用情况;
常用参数为:
df
默认等于 df -k 以字节的形式显示
df -m
以MB的形式显示
df -h
以GB的形式显示,同时也是以人类容易看得懂的语言显示
1.5 iostat
iostat主要用于监控系统设备的IO负载情况,iostat首次运行时显示自系统启动开始的各项统计信息,之后运行iostat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息。
常用命令:
-
iostat
-
iostat -d -k 2
#查看TPS和吞吐量信息
-d: 显示设备(磁盘)使用状态
-k: 以k为单位,也可以改成m,表示以MB为单位
2: 表示,数据显示每隔2秒刷新一次
输出结果解释: -
tps:该设备每秒的传输次数(Indicate the number of transfers per second that were issued to the device.)。“一次传输"意思是"一次I/O请求”。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
-
kB_read/s:每秒从设备(drive expressed)读取的数据量;
-
kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
-
kB_read:读取的总数据量;
-
kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。