linux下查看资源占用情况的方法分享

发布时间:2020-05-05编辑:脚本学堂
本文介绍下,在linux下查看资源占用情况的一些命令及具体用法,有需要的朋友参考下。

linux下,测试数据加载速度,包括监控cpu,内存,磁盘IO等运行情况等,用到了linux下的多个命令,这里分享下。

top 命令
有关top命令的具体用法,请参考文章:

free 命令
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式
free [-b-k-m] [-o] [-s delay] [-t] [-V]

3.主要参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。
 

复制代码 代码示例:

[root@study ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          1010        382        628          0         29        296
-/+ buffers/cache:         57        953
Swap:         3137          0       3137

[root@study ~]# uptime
 20:17:19 up 9 min,  1 user,  load average: 0.00, 0.18, 0.17
 

现在的时间
系统开机运转到现在经过的时间
连线的使用者数量
最近一分钟,五分钟和十五分钟的系统负载

参数: -V 显示版本资讯。
 

复制代码 代码示例:

[root@study ~]# uptime -V
procps version 3.2.7

vmstat
[root@study ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 643144  29748 303448    0    0   756    49 1036  145  2  2 86 10  0
 

 
1 观察磁盘活动情况
磁盘活动情况主要从以下几个指标了解:
bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。
bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。
wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果
wa经常大于10,可能文件系统就需要进行性能调整了。

2 观察cpu活动情况
vmstat比top更能反映出cpu的使用情况:
us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。
sy: 系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注 意是否某个内核进
程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。
id:cpu 空闲的时间比例。
wa:cpu等待未决的磁盘IO的时间比例。

iostat
用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量
参数:
-c 只显示CPU行
-d 显示磁盘行
-k 以千字节为单位显示磁盘输出
-t 在输出中包括时间戳
-x 在输出中包括扩展的磁盘指标
 

复制代码 代码示例:

[root@study ~]# iostat
Linux 2.6.18-238.el5 (study)    08/09/11

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.81    0.04    1.89    8.55    0.00   87.71

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              17.41      1285.43        86.95     659555      44612
sda1              0.17         3.78         0.01       1937          4
sda2             17.20      1280.85        86.94     657202      44608
sdb               0.35        10.01         0.03       5135         16
sdb1              0.07         3.16         0.00       1621          0
sdb2              0.20         5.45         0.03       2794         16
sdc               0.26         8.13         0.03       4171         16
sdc1              0.18         6.46         0.03       3315         16

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           1.81    0.04    1.89    8.55    0.00   87.71

%iowait 等待本地I/O时CPU空闲时间的百分比
%idle 未等待本地I/O时CPU空闲时间的百分比
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              17.41      1285.43        86.95     659555      44612
每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。

基本使用
 

复制代码 代码示例:

[root@study ~]# iostat -d -k 1 10
Linux 2.6.18-238.el5 (study)    08/09/11

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda              11.55       423.43        29.12     329833      22686
sda1              0.11         1.24         0.00        968          2
sda2             11.41       421.92        29.12     328657      22684
sdb               0.23         3.30         0.01       2567          8
sdb1              0.05         1.04         0.00        810          0
sdb2              0.13         1.79         0.01       1397          8
sdc               0.17         2.68         0.01       2085          8
 

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

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。
 

复制代码 代码示例:
[root@study ~]# iostat -d -x 1 10
Linux 2.6.18-238.el5 (study)    08/09/11
Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda              12.46     3.35  6.34  1.98   605.42    42.62    77.84     0.45   53.62  10.82   9.01
sda1              1.55     0.00  0.08  0.00     1.78     0.00    22.06     0.00   17.51  16.48   0.13
sda2             10.89     3.35  6.25  1.98   603.26    42.62    78.52     0.44   54.09  10.81   8.89
sdb               1.85     0.00  0.16  0.00     4.71     0.01    28.62     0.00    9.50   8.83   0.15
sdb1              1.29     0.00  0.03  0.00     1.49     0.00    43.81     0.00    3.59   2.95   0.01
sdb2              0.51     0.00  0.09  0.00     2.56     0.01    27.02     0.00   14.85  14.11   0.13
sdc               2.75     0.01  0.12  0.00     3.83     0.01    31.72     0.00   13.24  11.56   0.14
sdc1              2.69     0.01  0.08  0.00     3.04     0.01    36.21     0.00   18.49  16.08   0.14

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据
,FS会将这个请求合并Merge);wrqm/s:每秒这个设备相关的写入请求有多少被Merge了。

rsec/s:每秒读取的扇区数;wsec/s:每秒写入的扇区数。r/s:The number of read requests that were issued to the device per second;w/s:The number of write
requests that were issued to the device per second;

await:每一个IO请求的处理的平均时间(单位是微秒毫秒)。这里可以理解为IO的响应时间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。

%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该
参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因为磁盘的并发能力,所以磁盘使用未必
就到了瓶颈)。

参见使用方式
 

复制代码 代码示例:
$iostat -d -k 1 10        #查看TPS和吞吐量信息
iostat -d -x -k 1 10      #查看设备使用率(%util)、响应时间(await)
iostat -c 1 10            #查看cpu状态