前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >四款常用服务器IO测试工具详细分析

四款常用服务器IO测试工具详细分析

作者头像
IT运维技术圈
发布2023-09-07 17:59:21
7670
发布2023-09-07 17:59:21
举报
文章被收录于专栏:IT运维技术圈

1、Top

top是一个常用的性能监控工具,可以用来实时查看系统资源的使用情况,包括CPU、内存、进程等信息,是Linux系统中常用的一种命令行工具。通过top可以查看系统当前的状态,并且可以对各种系统资源进行监控和管理。

top使用方法

top的使用方法很简单,只需要在终端输入top命令即可。默认情况下,top会以交互式的方式显示当前系统资源的使用情况,可以通过键盘输入不同的命令来进行操作。

top命令的一些常用选项:

  • -d:指定更新的时间间隔,默认是3秒。
  • -p:指定要监控的进程PID。
  • -u:指定要监控的用户。
  • -b:以批处理模式运行,输出到文件或者管道中。

top命令交互模式中,可以使用以下命令:

  • h:显示帮助信息。
  • k:向指定的进程发送信号。
  • q:退出top命令。
  • r:修改进程的优先级。
  • s:修改更新的时间间隔。
  • u:指定要监控的用户。
  • z:切换颜色显示。

top命令实例

例1:监视系统资源的实时变化

代码语言:javascript
复制
$ top

执行上述命令后,top会实时地显示系统资源的变化情况。默认情况下,top会按照CPU使用率从高到低的顺序显示进程信息。可以通过按下不同的键来进行排序、筛选等操作。例如:

  • 按下M键,可以按照内存使用率从高到低的顺序排序;
  • 按下P键,可以按照CPU使用率从高到低的顺序排序;
  • 按下T键,可以按照进程运行时间从长到短的顺序排序;
  • 按下Q键,可以退出top命令。
代码语言:javascript
复制
top - 15:27:14 up 2 days, 20:39,  2 users,  load average: 0.13, 0.13, 0.12
Tasks: 258 total,   1 running, 257 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
MiB Mem :  15708.3 total,   8288.5 free,   4277.1 used,   4142.7 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  10642.4 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                          
 5205 user1     20   0  676100 159372  32720 S  0.3  1.0   0:01.38 gnome-terminal-                                                                                  
 5157 user1     20   0 1744132 616516  25996 S  0.0  3.9   0:58.07 firefox                                                                                          
 3974 user1     20   0 1238404  60724  48344 S  0.0  0.4   0:02.46 gnome-shell                                                                                      
 4272 user1     20   0  684672  38264  30292 S  0.0  0.2   0:00.31 gvfsd-metadata                                                                                   
 5631 user1     20   0  921356  34568  24940 S  0.0  0.2   0:00.21 gnome-system-mo                                                                                  
 5663 user1     20   0  921352  36576  23320 S  0.0  0.2   0:00.09 gnome-system-mo                                                                                  
 4386 user1     20   0  446596  27920  23156 S  0.0  0.2   0:00.28 at-spi-bus-laun                                                                                  
 5167 user1     20   0  916320

例2:按照内存使用率排序并显示前10个进程

代码语言:javascript
复制
$ top -o %MEM -n 10

执行上述命令后,top会按照内存使用率从高到低的顺序显示前10个进程的信息。-o参数用来指定排序方式,%MEM表示按照内存使用率排序。-n参数用来指定显示的进程数。

代码语言:javascript
复制
top - 15:22:26 up 2 days, 20:35,  2 users,  load average: 0.06, 0.06, 0.05
Tasks: 254 total,   1 running, 253 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :  15708.3 total,   8340.8 free,   4212.7 used,   4154.8 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.  10636.7 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                          
 5157 user1     20   0 1744132 616516  25996 S  0.0  3.9   0:57.97 firefox                                                                                          
 3997 root      20   0  441580 348416 345972 S  0.0  2.2   0:12.48 Xorg                                                                                             
 5205 user1     20   0  676100 159372  32720 S  0.3  1.0   0:01.38 gnome-terminal-                                                                                  
 3974 user1     20   0 1238404  60724  48344 S  0.0  0.4   0:02.45 gnome-shell                                                                                      
 5663 user1     20   0  921352  36576  23320 S  0.0  0.2   0:00.09 gnome-system-mo                                                                                  
 5167 user1     20   0  916320  27592  22976 S  0.0  0.2   0:00.08 Web Content                                                                                      
 5694 user1     20   0  920660  26300  22060 S  0.0  0.2   0:00.04 gnome-calendar                                                                                   
 4963 user1     20   0  921356  22096  14384 S  0.0  0.1   0:05.91 tmux                                                                                             
 4317 root      20   0   83196  16612  10956 S  0.0  0.1  17:38.92 sshd                                                                                             

2、sar

sar(System Activity Reporter)是一个系统性能监控工具,它可以收集系统的各种性能数据,并将其保存到文件中,以便日后进行分析。sar可以用来监控CPU、内存、I/O等系统资源的使用情况,以及进程的运行情况等。

安装

在大多数Linux系统中,sar工具已经预装了,如果没有,可以使用以下命令安装:

代码语言:javascript
复制
$ sudo apt-get install sysstat

使用方法

以下是常用的sar命令及其参数:

代码语言:javascript
复制
sar [options] [interval [count]]

其中,options表示sar的参数,interval表示每次采集数据的时间间隔(以秒为单位),count表示采集数据的次数。

下面是一些常用的选项:

  • -u:监视CPU使用情况
  • -r:监视内存使用情况
  • -b:监视I/O使用情况
  • -n:监视网络使用情况
  • -q:监视进程队列的长度

下面是一些示例命令:

例1:监视CPU使用率

代码语言:javascript
复制
$ sar -u 1 3

执行上述命令后,sar会每秒采集一次CPU的使用情况,共采集3次数据,并将数据输出到终端上。输出的结果包括CPU的平均使用率、用户空间占用率、内核空间占用率、等待I/O的占用率、硬件中断占用率、软件中断占用率等信息。

下面是一段示例输出:

代码语言:javascript
复制
Linux 4.15.0-140-generic (hostname)  05/10/23        _x86_64_        (4 CPU)

06:09:12 PM     CPU     %user     %nice   %system   %iowait    %steal     %idle
06:09:13 PM     all      2.01      0.00      0.50      0.00      0.00     97.49
06:09:14 PM     all      2.50      0.00      0.50      0.00      0.00     97.00
06:09:15 PM     all      2.50      0.00      0.50      0.00      0.00     97.00
Average:        all      2.34      0.00      0.50      0.00      0.00     97.16

输出的结果显示了每一秒的CPU使用率,包括用户空间、内核空间、等待I/O等的占用率。

例2:监视内存使用情况

代码语言:javascript
复制
$ sar -r 1 3

执行上述命令后,sar会每秒采集一次内存的使用情况,共采集3次数据,并将数据输出到终端上。输出的结果包括内存的平均使用率、空闲内存、已用内存、缓存、缓冲区等信息。

下面是一段示例输出:

代码语言:javascript
复制
Linux 4.15.0-140-generic (hostname)  05/10/23        _x86_64_        (4 CPU)

06:14:16 PM kbmemfree   kbavail kbmemused  %memused kbbuffers  kbcached  kbcommit   %commit  kbactive   kbinact   kbdirty
06:14:17 PM  10443024  10514852  29642808     74.04    101448  16422880   9012316     22.45  18088252  10544208       292
06:14:18 PM  10446192  10518020  29636140     74.02    101460  16422624   9012316     22.45  18088300  10538456       296
06:14:19 PM  10448980  10520708  29633352     74.01    101468  16422484   9012316     22.45   9342200  18794460       292
Average:     10446065  10517860  29637400     74.02    101459  16422629   9012316     22.45  11726234  13259074       293

输出的结果显示了每一秒的内存使用情况,包括空闲内存、已用内存、缓存、缓冲区等信息。%memused表示内存的使用率。

例3:监视磁盘I/O使用情况

代码语言:javascript
复制
$ sar -b 1 3

执行上述命令后,sar会每秒采集一次磁盘I/O的使用情况,共采集3次数据,并将数据输出到终端上。输出的结果包括每秒读写数据的数量、每秒读写数据的大小、平均每次读写的大小、读写延迟等信息。

下面是一段示例输出:

代码语言:javascript
复制
Linux 4.15.0-140-generic (hostname)  05/10/23        _x86_64_        (4 CPU)

06:19:54 PM       tps      rtps      wtps   bread/s   bwrtn/s
06:19:55 PM      0.00      0.00      0.00      0.00      0.00
06:19:56 PM      0.00      0.00      0.00      0.00      0.00
06:19:57 PM      0.00      0.00      0.00      0.00      0.00
Average:         0.00      0.00      0.00      0.00      0.00

输出的结果显示了每一秒的磁盘I/O使用情况,包括每秒读写数据的数量、每秒读写数据的大小、平均每次读写的大小、读写延迟等信息。tps表示每秒钟的I/O请求数,rtps表示每秒钟的读请求数,wtps表示每秒钟的写请求数,bread/s表示每秒钟读取的字节数,bwrtn/s表示每秒钟写入的字节数。

3、iostat

当系统中的进程需要与磁盘进行交互时,就需要监控磁盘I/O的使用情况。iostat是一个用于监控系统磁盘I/O情况的命令行工具,可以显示磁盘I/O活动、CPU使用情况、内存使用情况等信息。

使用方法

iostat命令的一般形式为:

代码语言:javascript
复制
iostat [options] [interval] [count]

其中,interval参数指定了数据采样的时间间隔,count参数指定了采样的次数。

iostat命令支持的选项包括:

  • -c:显示CPU使用情况。
  • -d:显示磁盘使用情况。
  • -k:以KB为单位显示信息。
  • -m:以MB为单位显示信息。
  • -N:显示NFS挂载点的I/O统计信息。
  • -t:显示每个时间段的平均值。

使用示例

示例1:监视磁盘I/O使用情况
代码语言:javascript
复制
$ iostat -d 1 3

执行上述命令后,iostat会每秒采集一次磁盘I/O的使用情况,共采集3次数据,并将数据输出到终端上。输出的结果包括每秒读写数据的数量、每秒读写数据的大小、平均每次读写的大小、读写延迟等信息。

下面是一段示例输出:

代码语言:javascript
复制
Linux 4.15.0-140-generic (hostname)  05/10/23        _x86_64_        (4 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
sda               0.04         1.09         0.00         0.00        848          0          0
nvme0n1           0.02         0.02         0.00         0.00         18          0          0

输出的结果显示了每一秒的磁盘I/O使用情况,包括每秒读写数据的数量、每秒读写数据的大小、平均每次读写的大小、读写延迟等信息。

示例2:以KB为单位显示磁盘I/O使用情况
代码语言:javascript
复制
$ iostat -dk 1 3

执行上述命令后,iostat会每秒采集一次磁盘I/O的使用情况,共采集3次数据,并将数据输出到终端上。使用选项-dk表示以KB为单位显示磁盘I/O使用情况。输出的结果包括每秒读写数据的数量、每秒读写数据的大小、平均每次读写的大小、读写延迟等信息。

下面是一段示例输出:

代码语言:javascript
复制
Linux 4.15.0-140-generic (hostname)  05/10/23        _x86_64_        (4 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_dscd/s    kB_read    kB_wrtn    kB_dscd
sda               0.02         0.08         0.00         0.00         0          0          0
nvme0n1           0.00         0.00         0.00         0.00         0          0          0

输出的结果显示了每一秒的磁盘I/O使用情况,包括每秒读写数据的数量、每秒读写数据的大小、平均每次读写的大小、读写延迟等信息。其中,kB_read/s表示每秒读取的数据量,kB_wrtn/s表示每秒写入的数据量。使用了-k选项后,这两个数据会以KB为单位显示。

4、vmstat

vmstat是一款用于显示系统虚拟内存、进程、CPU等性能指标的工具。下面是详细的使用方法和示例。

使用方法
代码语言:javascript
复制
vmstat [选项] [时间间隔] [采样次数]

常用选项如下:

  • -a:显示所有指标(默认只显示内存、虚拟内存和CPU的指标)
  • -f:显示fork信息,即每秒创建的进程数
  • -m:显示内存和虚拟内存的详细信息
  • -p <进程ID>:显示指定进程的详细信息
  • -s:显示系统启动以来的虚拟内存和内存使用情况
  • -d:显示磁盘I/O指标

时间间隔和采样次数是可选的。如果不指定,则默认显示一次性的指标。如果指定了时间间隔,则每隔指定的时间间隔会采集一次数据,并在终端输出一行数据;如果指定了采样次数,则会采集指定次数的数据,并在终端输出每次的数据。

示例1:
代码语言:javascript
复制
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0  48068 300232  42796 400224    0    0     0     0    3   10  3  1 96  0  0

其中,各个字段的含义如下:

  • r:等待运行的进程数。
  • b:处于不可中断(blocked)状态的进程数。
  • swpd:交换分区使用情况,单位是KB。
  • free:空闲内存大小,单位是KB。
  • buff:缓冲区大小,单位是KB。
  • cache:缓存大小,单位是KB。
  • si:从磁盘交换分区读取的数据大小,单位是KB/s。
  • so:向磁盘交换分区写入的数据大小,单位是KB/s。
  • bi:从块设备读取的数据大小,单位是KB/s。
  • bo:向块设备写入的数据大小,单位是KB/s。
  • in:每秒中断数。
  • cs:每秒上下文切换次数。
  • us:每秒用户进程的CPU时间占用。
  • sy:每秒内核进程的CPU时间占用。
  • id:每秒空闲CPU时间占用百分比。
  • wa:每秒等待I/O的CPU时间占用。
  • st:每秒被虚拟化层偷走的CPU时间占用。

可以看到,输出结果中显示了各种系统性能指标,包括CPU占用率、内存使用情况、磁盘I/O、中断数和上下文切换次数等。

示例2:

代码语言:javascript
复制
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 18442672 149188 1246844    0    0     0     0 3032 3458 12  5 83  0  0
 0  0      0 18442220 149188 1246852    0    0     0    36 1936 4029 10  5 85  0  0
 1  0      0 18442220 149188 1246852    0    0     0     0 2073 3306 11  4 85  0  0
 0  0      0 18442708 149188 1246852    0    0     0     0 2298 3533 12  5 83  0  0

在这个示例中,我们使用了 vmstat 1 命令,表示每隔1秒钟输出一次系统性能指标。可以看到,输出结果中显示了各种系统性能指标,包括CPU占用率、内存使用情况、磁盘I/O、中断数和上下文切换次数等。其中,各个字段的含义如下:

  • r:等待运行的进程数。
  • b:处于不可中断(blocked)状态的进程数。
  • swpd:交换分区使用情况,单位是KB。
  • free:空闲内存大小,单位是KB。
  • buff:缓冲区大小,单位是KB。
  • cache:缓存大小,单位是KB。
  • si:从磁盘交换分区读取的数据大小,单位是KB/s。
  • so:向磁盘交换分区写入的数据大小,单位是KB/s。
  • bi:从块设备读取的数据大小,单位是KB/s。
  • bo:向块设备写入的数据大小,单位是KB/s。
  • in:每秒中断数。
  • cs:每秒上下文切换次数。
  • us:每秒用户进程的CPU时间占用。
  • sy:每秒内核进程的CPU时间占用。
  • id:每秒空闲CPU时间占用百分比。
  • wa:每秒等待I/O的CPU时间占用。
  • st:每秒被虚拟化层偷走的CPU时间占用。

在这个示例中,我们可以观察到每秒钟系统性能指标的变化情况,以及系统的负载情况。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT运维技术圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • top使用方法
  • top命令实例
    • 例1:监视系统资源的实时变化
      • 例2:按照内存使用率排序并显示前10个进程
      • 2、sar
        • 安装
          • 使用方法
            • 例1:监视CPU使用率
              • 例2:监视内存使用情况
                • 例3:监视磁盘I/O使用情况
                • 3、iostat
                  • 使用方法
                    • 使用示例
                      • 示例1:监视磁盘I/O使用情况
                      • 示例2:以KB为单位显示磁盘I/O使用情况
                      • 使用方法
                      • 示例1:
                  • 4、vmstat
                    • 示例2:
                    相关产品与服务
                    命令行工具
                    腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档