九月丶 發表於 2021-9-3 15:48:58

Linux sar命令详解之分析系统性能案例

<p>sar 命令很强大,是分析系统性能的重要工具之一,通过该命令可以全面地获取系统的 CPU、运行队列、磁盘读写(I/O)、分区(交换区)、内存、CPU 中断和网络等性能数据。</p>
<p>sar 命令的基本格式如下:</p>
<div class="jb51code">
<pre class="brush:bash;">
# sar [-o filename] interval </pre>
</div>
<p>此命令格式中,各个参数的含义如下:</p>
<ul>
    <li>-o filename:其中,filename 为文件名,此选项表示将命令结果以二进制格式存放在文件中;</li>
    <li>interval:表示采样间隔时间,该参数必须手动设置;</li>
    <li>count:表示采样次数,是可选参数,其默认值为 1;</li>
    <li>options:为命令行选项,由于 sar 命令提供的选项很多,这里不再一一介绍,仅列举出常用的一些选项及对应的功能,如表 1 所示。</li>
</ul>
<p>
<table>
    <caption> 表 1 sar 命令行选项及功能</caption>
    <tbody>
      <tr>
            <th>sar命令选项</th>
            <th>功能</th>
      </tr>
      <tr>
            <td>-A</td>
            <td>显示系统所有资源设备(CPU、内存、磁盘)的运行状况。</td>
      </tr>
      <tr>
            <td>-u</td>
            <td>显示系统所有 CPU 在采样时间内的负载状态。</td>
      </tr>
      <tr>
            <td>-P</td>
            <td>显示当前系统中指定 CPU 的使用情况。</td>
      </tr>
      <tr>
            <td>-d</td>
            <td>显示系统所有硬盘设备在采样时间内的使用状态。</td>
      </tr>
      <tr>
            <td>-r</td>
            <td>显示系统内存在采样时间内的使用情况。</td>
      </tr>
      <tr>
            <td>-b</td>
            <td>显示缓冲区在采样时间内的使用情况。</td>
      </tr>
      <tr>
            <td>-v</td>
            <td>显示 inode 节点、文件和其他内核表的统计信息。</td>
      </tr>
      <tr>
            <td>-n</td>
            <td>显示网络运行状态,此选项后可跟 DEV(显示网络接口信息)、EDEV(显示网络错误的统计数据)、SOCK(显示套接字信息)和 FULL(等同于使用 DEV、EDEV和SOCK)等,有关更多的选项,可通过执行 man sar 命令查看。</td>
      </tr>
      <tr>
            <td>-q</td>
            <td>显示运行列表中的进程数、进程大小、系统平均负载等。</td>
      </tr>
      <tr>
            <td>-R</td>
            <td>显示进程在采样时的活动情况。</td>
      </tr>
      <tr>
            <td>-y</td>
            <td>显示终端设备在采样时间的活动情况。</td>
      </tr>
      <tr>
            <td>-w</td>
            <td>显示系统交换活动在采样时间内的状态。</td>
      </tr>
    </tbody>
</table>
</p>
<blockquote>
<p>有关 sar 命令更多可用的选项及功能,可通过执行 man sar 命令查看。</p>
</blockquote>
<p>【例 1】<br />
如果想要查看系统 CPU 的整理负载状况,每 3 秒统计一次,统计 5 次,可以执行如下命令:</p>
<div class="jb51code">
<pre class="brush:bash;">
# sar -u 3 5
Linux 2.6.32-431.el6.x86_64 (localhost)   10/25/2019   _x86_64_    (1 CPU)

06:18:23 AM   CPU   %user   %nice   %system   %iowait    %steal   %idle
06:18:26 AM   all   12.11      0.00      2.77      3.11      0.00   82.01
06:18:29 AM   all      6.55      0.00      2.07      0.00      0.00   91.38
06:18:32 AM   all      6.60      0.00      2.08      0.00      0.00   91.32
06:18:35 AM   all   10.21      0.00      1.76      0.00      0.00   88.03
06:18:38 AM   all      8.71      0.00      1.74      0.00      0.00   89.55
Average:      all      8.83      0.00      2.09      0.63      0.00   88.46</pre>
</div>
<p>此输出结果中,各个列表项的含义分别如下:</p>
<ul>
    <li>%user:用于表示用户模式下消耗的 CPU 时间的比例;</li>
    <li>%nice:通过 nice 改变了进程调度优先级的进程,在用户模式下消耗的 CPU 时间的比例;</li>
    <li>%system:系统模式下消耗的 CPU 时间的比例;</li>
    <li>%iowait:CPU 等待磁盘 I/O 导致空闲状态消耗的时间比例;</li>
    <li>%steal:利用 Xen 等操作系统虚拟化技术,等待其它虚拟 CPU 计算占用的时间比例;</li>
    <li>%idle:CPU 空闲时间比例。</li>
</ul>
<p>【例 2】<br />
如果想要查看系统磁盘的读写性能,可执行如下命令:</p>
<div class="jb51code">
<pre class="brush:bash;">
# sar -d 3 5
Linux 2.6.32-431.el6.x86_64 (localhost)   10/25/2019   _x86_64_    (1 CPU)

06:36:52 AM       DEV       tpsrd_sec/swr_sec/savgrq-szavgqu-sz   await   svctm   %util
06:36:55 AM    dev8-0      3.38      0.00    502.26    148.44      0.08   24.11      4.56      1.54

06:36:55 AM       DEV       tpsrd_sec/swr_sec/savgrq-szavgqu-sz   await   svctm   %util
06:36:58 AM    dev8-0      1.49      0.00   29.85   20.00      0.00      1.75      0.75      0.11

06:36:58 AM       DEV       tpsrd_sec/swr_sec/savgrq-szavgqu-sz   await   svctm   %util
06:37:01 AM    dev8-0   68.26      6.9653982.61    790.93      3.22   47.23      3.54   24.17

06:37:01 AM       DEV       tpsrd_sec/swr_sec/savgrq-szavgqu-sz   await   svctm   %util
06:37:04 AM    dev8-0    111.69   3961.29    154.84   36.85      1.05      9.42      3.44   38.43

06:37:04 AM       DEV       tpsrd_sec/swr_sec/savgrq-szavgqu-sz   await   svctm   %util
06:37:07 AM    dev8-0      1.67    136.00      2.67   83.20      0.01      6.20      6.00      1.00

Average:          DEV       tpsrd_sec/swr_sec/savgrq-szavgqu-sz   await   svctm   %util
Average:       dev8-0   34.45    781.10   9601.22    301.36      0.78   22.74      3.50   12.07</pre>
</div>
<p>此输出结果中,各个列表头的含义如下:</p>
<ul>
    <li>tps:每秒从物理磁盘 I/O 的次数。注意,多个逻辑请求会被合并为一个 I/O 磁盘请求,一次传输的大小是不确定的;</li>
    <li>rd_sec/s:每秒读扇区的次数;</li>
    <li>wr_sec/s:每秒写扇区的次数;</li>
    <li>avgrq-sz:平均每次设备 I/O 操作的数据大小(扇区);</li>
    <li>avgqu-sz:磁盘请求队列的平均长度;</li>
    <li>await:从请求磁盘操作到系统完成处理,每次请求的平均消耗时间,包括请求队列等待时间,单位是毫秒(1 秒=1000 毫秒);</li>
    <li>svctm:系统处理每次请求的平均时间,不包括在请求队列中消耗的时间;</li>
    <li>%util:I/O 请求占 CPU 的百分比,比率越大,说明越饱和。</li>
</ul>
<p>除此之外,如果想要查看系统内存使用情况,可以执行sar -r 5 3命令;如果要想查看网络运行状态,可执行sar -n DEV 5 3命令,等等。有关其它参数的用法,这里不再给出具体实例,有兴趣的读者可自行测试,观察运行结果。</p>
<p>到此这篇关于Linux sar命令详解之分析系统性能案例的文章就介绍到这了,更多相关Linux sar命令内容请搜索琼殿技术社区以前的文章或继续浏览下面的相关文章,希望大家以后多多支持琼殿技术社区!</p>
頁: [1]
查看完整版本: Linux sar命令详解之分析系统性能案例