CPU性能评估
vmstat命令
- 作用:可以对操作系统的内存信息、进程状态、CPU活动等进行监控。
- 语法:vmstat(选项)(参数)
-
选项
- -a:显示活动内页;
- -f:显示启动后创建的进程总数;
- -m:显示slab信息;
- -n:头信息仅显示一次;
- -s:以表格方式显示事件计数器和内存状态;
- -d:报告磁盘状态;
- -p:显示指定的硬盘分区状态;
- -S:输出信息的单位。
-
参数
- 事件间隔:状态信息刷新的时间间隔;
- 次数:显示报告的次数。
-
举例
[root@study ~]# vmstat 3 5
每2秒统计一次输出,统计5次后停止输出。
-
解释
-
procs
- r列表示运行和等待CPU时间片的进程数,此数值如果长期大于系统CPU个数,说明CPU不足,需要增加CPU。
- b列表在等待资源的进程数,如正在等待I/O或者内存交换等。
-
memory
- swpd列表示切换到内存交换区的内存数量(以kb为单位)。
- free列表示当前空闲的物理内存数量(以kb为单位)。
- buff列表示缓冲区缓存的内存数量,一般对块设备的读写才需要缓冲。
- cache列表示页面缓存的内存数量,一般作为文件系统缓存,如果cache值较大,说明缓存的文件数角度,若此时的IO中bi较小,说明文件系统效率比较高。
-
swap
- si列表示由磁盘调入内存,即内存进入内存交换区的数量。
- so列表示内存调入磁盘,即内存交换区进入内存的数量。
注意:如果si、so长期不为0,则表示系统内存不足。
-
io:显示磁盘读写状况
- bi列表示从块设备读入数据的总量(即读磁盘)(每秒kb)。
- bo列表示写入到块设备的数据总量(即写磁盘)(每秒kb)。
-
system:显示猜忌间隔内发生的中断次数。
- in列表示在某一时间间隔中观测到的每秒设备中断次数。
- cs列表示每秒产生的上下文切换次数。
注意:以上两个值越大,则由内核占用CPU的时间会越多。
-
cpu:显示CPU的使用状态。
- us列显示用户进程占用CPU的时间百分比,如果长期大于50%,则需要重点关注。
- sy列显示内核进程占用CPU的时间百分比。
- id列显示了CPU处在空闲状态的百分比。
- wa列显示了I/O等待所占用的CPU时间百分比。wa值越高,说明I/O等待越严重。
**注意:- us+sy的参考值为80%,如果大于80%,可能存在CPU资源不足。
- wa的参考是为20%,如果wa超过20%,说明I/O等待严重。**
-
-
sar命令
- 作用:Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。
- 语法:sar(选项)(参数)
-
选项
- -A:显示所有的报告信息;
- -b:显示I/O速率;
- -B:显示换页状态;
- -c:显示进程创建活动;
- -d:显示每个块设备的状态;
- -e:设置显示报告的结束时间;
- -f:从指定文件提取报告;
- -i:设状态信息刷新的间隔时间;
- -P:报告每个CPU的状态;
- -R:显示内存状态;
- -u:显示CPU利用率;
- -v:显示索引节点,文件和其他内核表的状态;
- -w:显示交换分区状态;
- -x:显示给定进程的状态。
-
参数
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
-
举例
[root@study ~]# sar -u 3 5
-
解释
- %user列显示了用户进程占用CPU的时间百分比。
- %nice列显示了运行正常进程占用CPU的时间百分比。
- %system列显示了系统进程占用CPU的时间百分比。
- %iowait列显示了I/O等待所占用CPU的时间百分比。
- %steal列显示了在内存相对进展的环境下pageini强制对不同的页面进行的steal操作。
- %idle列显示了CPU处在空闲状态的时间百分比。
注意:
1. Average列是对之上的所有信息进行统计,计算平均值。
2. 若有多个CPU,可使用sar -P 0 3 5对第一个CPU进行查询,第二个CPU即位sar -P 1 3 5。
-
iostat命令
- 作用:用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。
- 语法:iostat(选项)(参数)
-
选项
- -c:仅显示CPU使用情况;
- -d:仅显示设备利用率;
- -k:显示状态以千字节每秒为单位,而不使用块每秒;
- -m:显示状态以兆字节每秒为单位;
- -p:仅显示块设备和所有被使用的其他分区的状态;
- -t:显示每个报告产生时的时间;
- -V:显示版号并退出;
- -x:显示扩展状态。
-
参数
- 间隔时间:每次报告的间隔时间(秒);
- 次数:显示报告的次数。
-
举例
[root@study ~]# iostat -x /dev/sda1
-
解释
- Device:监测设备名称;
- rrqm/s:每秒需要读取需求的数量;
- wrqm/s:每秒需要写入需求的数量;
- r/s:每秒实际读取需求的数量;
- w/s:每秒实际写入需求的数量;
- rsec/s:每秒读取区段的数量;
- wsec/s:每秒写入区段的数量;
- rkB/s:每秒实际读取的大小,单位为KB;
- wkB/s:每秒实际写入的大小,单位为KB;
- avgrq-sz:需求的平均大小区段;
- avgqu-sz:需求的平均队列长度;
- await:等待I/O平均的时间(milliseconds);
- svctm:I/O需求完成的平均时间;
- %util:被I/O需求消耗的CPU百分比。
-
内存性能评估
free命令
- 作用:显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。
- 语法:free(选项)
-
选项
- -b:以Byte为单位显示内存使用情况;
- -k:以KB为单位显示内存使用情况;
- -m:以MB为单位显示内存使用情况;
- -o:不显示缓冲区调节列;
- -s<间隔秒数>:持续观察内存使用状况;
- -t:显示内存总和列;
- -V:显示版本信息。
-
举例
[root@study ~]# free -m
-
解释
- 程序可使用内存=free+buffers+cached(即+ buffers/cache的值)
- 程序已使用内存=user-buffres-cached
- 物理内存可分配的内存值为free,物理总内存为total。
注意:处于buffers和cached中的内存对于应用程序而言是可用的,对于内核而言是无法分配的,内核可分配的内存仅为free的值。
-
规律
- (+ buffers/cache)/系统物理内存<20%:系统内存资源紧缺,需要增加系统内存;
- 20%<(+ buffers/cache)/系统物理内存<70%:系统内存资源基本满足应用需求,暂不影响性能;
- (+ buffers/cache)/系统物理内存>70%:系统内存资源非常充足,不影响系统性能。
-
watch与free结合
- 作用:watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示。
- 语法:watch(选项)(参数)
-
选项
- -n:指定指令执行的间隔时间(秒);
- -d:高亮显示指令输出信息不同之处;
- -t:不显示标题。
-
参数
- 指令:需要周期性执行的指令。
-
举例
[root@study ~]# watch -n 3 -d free -m
-
sar命令
- 作用:见上
- 语法:见上
- 举例
[root@study ~]# sar -r
- 解释
- kbmemfree:表示空闲物理内存大小;
- kbmemused:表示已使用的物理内存空间大小;
- %memused:表示已使用的内存占总内存大小的百分比;
- kbbuffers:缓冲区缓存大小;
- kbcached:缓存区缓存大小;
- kbcommit:应用程序当前使用的内存大小;
- %commit:应用程序当前使用的内存百分比。
- 举例
磁盘I/O性能评估
sar -d命令
- 作用:见上
- 语法:见上
- 举例
[root@study ~]# sar -d 2 3
- 解释
- DEV:表示磁盘设备名称;
- tps:表示每秒到屋里磁盘的传送数;
- rd_sec/s:表示每秒从设备读取的扇区数(1扇区=512字节);
- wr_sec/s:表示每秒写入的设备的扇区数;
- avgrq-sz:表示平均每次设备I/O操作的数据大小(以扇区为单位);
- avgqu-sz:表示平均I/O队列长度;
- await:表示平均每次设备I/O操作的等待时间(以毫秒为单位);
- svctm:表示平均每次设备I/O操作的服务时间(以毫秒为单位);
- %util:表示一秒钟有百分之几的是用于I/O操作。
- 举例
iostat -x命令:见上
vmstat -d:见上
网络性能评估
ping命令:略
netstat -i命令
- 作用:显示网络接口信息。
- 语法:略
- 举例
[root@study ~]# netstat -i
- 解释
- Iface:表示网络设备的接口名称;
- MTU:表示最大传输单元,单位为字节;
- Met:度量值,供某些操作系统用,用于计算一条路由的成本;
- RX-OK/TX-OK:表示已经准确无误地接受/发送了多少数据包;
- RX-ERR/TX-ERR:表示接受/发送数据包产生了多少错误;
- RX-DRP/TX-DRP:表示接受/发送数据包时丢弃了多少数据包;
- RX-OVR/TX-OVR:表示由于误差而遗失了多少数据包;
- Flg:表示接口标记,其具体含义如下——
- L:表示该接口是个回环设备;
- B:表示设置了广播地址;
- M:表示接受所有数据包;
- R:表示接口正在运行;
- U:表示接口处于活动状态;
- O:表示在该接口上禁用arp;
- P:表示一个点到点的连接。
- 举例
netstat -r命令
- 作用:检查系统的路由表信息。
- 语法:略
- 举例
- 解释
略
- 举例
sar -n命令
- 作用:见上
- 语法:sar -n [类型]
-
类型
- DEV:显示网络接口信息;
- EDEV:显示关于网络错误的统计数据;
- SOCK:显示套接字信息;
- FULL:显示所有类型。
-
举例
[root@study ~]# sar -n DEV 2 3
-
解释
- IFACE:表示网络接口设备;
- rxpck/s:表示每秒钟接受的数据包大小;
- txpck/s:表示每秒钟发送的数据包大小;
- rxkB/s:表示每秒钟接受的字节数;
- txkB/s:表示每秒钟发送的字节数;
- rxcmp/s:表示每秒钟接受的压缩数据包;
- txcmp/s:表示每秒钟发送的压缩数据包;
- rxmcst/s:表示每秒钟接受的多播数据包。
-