RH442 查看 sysstat 软件包实用程序

avatar
作者
猴君
阅读量:0

查看 sysstat 软件包实用程序

在本练习中,您将分析 sysstat 工具命令的输出。

成果

您应能够:

  • 解读 vmstatmpstatiostatpidstat 命令的输出。
  • 使用更新的 cron 作业在 servera上配置 sar,然后生成报告。

student身份登录 workstation 虚拟机,密码为 student

运行 lab perftools-sysstat start命令,以设置引导式练习环境。

[student@workstation ~]$ lab perftools-sysstat start 

注意

当指示使用 sudo命令进行特权升级时,如果提示输入密码,请输入 student

  1. workstation虚拟机上,并排打开两个终端窗口。在各个终端中,以 student 用户身份使用 ssh命令登录 servera

    [student@workstation ~]$ ssh student@servera [student@servera ~]$  
  2. 在第一个终端,使用 sudo -i命令切换至 root 用户身份。

    [student@servera ~]$ sudo -i [root@servera ~]#  
  3. 安装 sysstat 软件包。sysstat 软件包中包含名为 sysstat-collect.timer 和 sysstat-collect.service 的两个 systemd 单元。修改定时器单元配置文件,以便每分钟收集一次系统活动数据。

    重要

    不要编辑 /usr/lib/systemd目录下的文件。相反,请将单元文件复制到 /etc/systemd/system目录,然后编辑这个副本。systemd 进程首先会查找和使用 /etc/systemd/system 中的配置文件。

    1. 安装 sysstat 软件包。

      [root@servera ~]# yum install sysstat ...output omitted... 
    2. /usr/lib/systemd/system/sysstat-collect.timer复制到 /etc/systemd/system/sysstat-collect.timer

      [root@servera ~]# cp /usr/lib/systemd/system/sysstat-collect.timer \ /etc/systemd/system/sysstat-collect.timer 
    3. 编辑 /etc/systemd/system/sysstat-collect.timer,让定时器单元每分钟运行一次。

      [root@servera ~]# vim /etc/systemd/system/sysstat-collect.timer ...output omitted... #        Activates activity collector once every minute  [Unit] Description=Run system activity accounting tool once every minute  [Timer] OnCalendar=*:00/01  [Install] WantedBy=sysstat.service 
    4. 使用 systemctl daemon-reload命令,确保 systemd 知道这些更改。

      [root@servera ~]# systemctl daemon-reload 
    5. 使用 systemctl命令,激活 sysstat-collect.timer 定时器单元。

      [root@servera ~]# systemctl enable --now sysstat-collect.timer 
  4. 在第一个终端上,退出 root 用户帐户,在 servera 上以 student 用户身份返回。

    [root@servera ~]# exit logout [student@servera ~]$  
  5. 运行 vmstat命令,在更新之间延迟一秒钟。保持运行 10 秒钟左右。查看 id 列,了解 CPU 空闲时间百分比。不同系统和命令运行的输出会有所不同。

    [student@servera ~]$ vmstat 1 procs ... ------cpu-----  r  b ... us sy id wa st  1  0 ...  3  0  96 0  0  0  0 ...  0  0 100 0  0  0  0 ...  0  0 100 0  0  ...output omitted... 

    Ctrl+C 组合键退出 vmstat 命令。

  6. 执行 /home/student/stress.py脚本以生成负载,然后使用 vmstat 观察 CPU 的使用情况。如何让系统处于 100% 运行状态,让 CPU 不再空闲?

    使用 vmstat命令打印报告,间隔为 1 秒钟。

    1. 在后台执行 /home/student/stress.py,并重新运行 vmstat 命令。

      [student@servera ~]$ ./stress.py & [1] 24074 [student@servera ~]$ vmstat 1  procs ... ------cpu-----  r  b ... us sy id wa st  4  0 ...  3  0 96  0  0  1  0 ... 50  0 50  0  0  1  0 ... 50  0 50  0  0 

      请注意,当前 CPU 的空闲 (id) 和运行用户空间代码 (us) 的时间占比约为 50%。

    2. 在第二个终端中,在后台执行 /home/student/stress.py脚本。

      [student@servera ~]$ ./stress.py & [1] 24076 
       procs ... ------cpu-----  r  b ... us sy id wa st  2  0 ... 100  0  0  0  0  2  0 ... 100  0  0  0  0 ...output omitted... 

      从第一个终端中,观察 vmstat命令。空闲 (id) 和运行用户空间代码 (us) 的时间占比约为 100%,该进程对两个 CPU 均有使用。

      Ctrl+C 组合键退出 vmstat 命令。

    3. 在这两个终端中,终止 stress.py 进程。

      [student@servera ~]$ pkill stress.py [1]+  Terminated              ./stress.py 
  7. 执行 /home/student/stress01.py脚本,然后运行 vmstatmpstat 以检查 CPU 使用情况。

    1. 在第一个终端中,在后台执行 /home/student/stress01.py脚本。

      [student@servera ~]$ ./stress01.py & [1] 24079 
    2. 在第一个终端中,运行 vmstat命令,更新之间延迟一秒钟并显示四个更新。

      [student@servera ~]$ vmstat 1 4 procs ... ------cpu-----  r  b ... us sy id wa st ...output omitted... 
    3. 在第二个终端中,运行 mpstat命令,更新之间延迟一秒钟并显示四个更新。

      [student@servera ~]$ mpstat -P ALL 1 4 Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com)  ...  _x86_64_  (2 CPU)  08:35:31 PM  CPU    %usr   ...   %idle ...output omitted... 
    4. 观察 vmstatmpstat 命令的 CPU 指标。

      mpstat命令提供与 vmstat 命令相同的 CPU 使用率统计信息,但 mpstat 会按照各个处理器来显示统计信息。在下面的 mpstat命令输出中,stress01.py 进程使用 CPU0 来处理,因为运行用户空间代码所用时间占比约为 100%。进程在 CPU0 上运行的事实因您的环境而异。

       procs ... ------cpu-----  r  b ... us sy id wa st  3  0 ...  4  0 95  0  0  1  0 ... 50  1 50  0  0  1  0 ... 50  0 50  0  0 ...output omitted... 
      Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com)  ...  _x86_64_  (2 CPU)  ...          CPU    %usr   ...   %idle ...          all   49.75   ...   49.75 ...            0   99.01   ...    0.00 ...            1    0.00   ...  100.00 ...output omitted... ... ...          CPU    %usr   ...   %idle ...          all   50.00   ...   50.00 ...            0  100.00   ...    0.00 ...            1    0.00   ...  100.00  Average:     CPU    %usr   ...   %idle Average:     all   49.88   ...   49.88 Average:       0   99.75   ...    0.00 Average:       1    0.00   ...   99.75 
    5. 终止 stress01.py 进程。

      [student@servera ~]$ pkill stress01.py [1]+  Terminated              ./stress01.py 
  8. 运行 /home/student/dummy.sh脚本时,请使用 iostat 命令来执行该脚本并监控系统行为。检查脚本代码,了解其用途。

    1. 在第一个终端中,在后台执行 /home/student/dummy.sh脚本。

      [student@servera ~]$ ./dummy.sh & [1] 1276 
    2. 使用 iostat命令来监控磁盘 I/O 统计数据,更新四次,更新间隔为 1 秒钟。使用 -y选项来忽略第一份报告,该报告提供自系统启动后的时间统计信息。此外,使用 -z选项来省略任何无活动设备的输出。

      [student@servera ~]$ iostat -yz 1 4 Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com) ... _x86_64_ (2 CPU)  avg-cpu:  %user   %nice %system %iowait  %steal   %idle            0.00    0.00    0.00    0.00    0.00    0.05  Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn vda             410.00         0.00      1129.00          0       1129  avg-cpu:  %user   %nice %system %iowait  %steal   %idle            0.00    0.00    1.49    1.49    0.50   96.52  Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn vda             396.00         0.00      1087.50          0       1087  avg-cpu:  %user   %nice %system %iowait  %steal   %idle            0.00    0.00    1.51    1.01    0.00   97.49  Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn vda             404.00         0.00      1112.50          0       1112  avg-cpu:  %user   %nice %system %iowait  %steal   %idle            0.00    0.00    1.51    1.51    0.50   96.48  Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn vda             400.00         0.00      1100.00          0       1100 

      观察输出中的 tpskB_read/skB_wrtn/s 各列内容。从设备读取的数据量 (KB/s) 为零,表明没有读取事务。

    3. 终止 dummy.sh 进程。

      [student@servera ~]$ kill -- -$(pgrep dummy.sh) [student@servera ~]$  
    4. 打开 /home/student/dummy.sh文件并检查脚本。该脚本在无限循环中写下 100MB 的文件。

      [student@servera ~]$ cat dummy.sh #!/bin/bash  # Tell bash to exit after SIGINT trap exit INT  # Write a 100MB file every loop while true; do   dd if=/dev/zero of=100MBfile bs=512 count=200000 oflag=dsync done 
  9. 执行 /home/student/stress.py脚本,再运行 pidstat 命令以获取进程的 CPU 使用情况。此外,还要查看磁盘的 I/O 统计信息。

    1. 在第一个终端中,在后台执行 /home/student/stress.py脚本。

      [student@servera ~]$ ./stress.py & [1] 1578 
    2. 使用 pidstat命令来监控 stress.py 进程的 CPU 使用情况,更新两次,间隔 1 秒钟。使用 -p选项来传递 stress.py 进程的进程 ID。

      使用 pgrep stress.py命令来检索进程 ID。在下面的输出中,进程 ID 为1578

      [student@servera ~]$ pgrep stress.py 1578 [student@servera ~]$ pidstat -p 1578 -u 1 2 Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com) ... _x86_64_ 2 CPU)  ...      UID   PID    %usr %system  %guest   %wait    %CPU   CPU  Command ...     1000  1578   99.00    0.00    0.00    0.00   99.00     0  stress.py ...     1000  1578  100.00    0.00    0.00    0.00  100.00     0  stress.py Average:1000  1578   99.50    0.00    0.00    0.00   99.50     -  stress.py 
    3. 使用 pidstat -d命令查看磁盘 I/O 统计信息,并显示 stress.py 进程的两份报告。

      [student@servera ~]$ pidstat -p 1578 -d 1 2 Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com) ... _x86_64_ (2 CPU)  ...      UID  PID kB_rd/s kB_wr/s kB_ccwr/s iodelay  Command ...     1000 1578    0.00    0.00      0.00       0  stress.py ...     1000 1578    0.00    0.00      0.00       0  stress.py Average:1000 1578    0.00    0.00      0.00       0  stress.py 
    4. 终止 stress.py 进程。

      [student@servera ~]$ pkill stress.py [1]+  Terminated              ./stress.py 
  10. 从当前日志文件报告 I/O 和传输速率统计、CPU0 使用率以及网络设备统计信息。不同系统和命令运行的输出会有所不同。为活动收集器记录数据留出更多时间。

    1. 使用 sar -b命令,从当前日志文件报告 I/O 和传输速率统计信息。

      [student@servera ~]$ sar -b Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com)  ...  _x86_64_  (2 CPU)  15:50:54     LINUX RESTART  (2 CPU)  03:55:01 PM       tps      rtps      wtps   bread/s   bwrtn/s 03:56:01 PM      1.65      1.48      0.17    125.64      7.39 03:57:01 PM    352.26      0.04    352.23      1.19   1937.10 03:58:01 PM    400.27      0.01    400.26      0.71   2158.94 03:59:01 PM    406.37      0.00    406.37      0.00   2032.29 04:00:01 PM    629.46      0.01    629.45      0.24   2817.26 04:01:01 PM    454.50      0.03    454.48      0.96   2102.45 04:02:01 PM    415.62      0.01    415.61      0.69   2079.67 04:03:01 PM      0.03      0.00      0.03      0.00      0.36 04:04:01 PM      0.26      0.12      0.14     15.19      1.99 Average:       314.59      0.19    314.40     16.12   1553.52 
    2. 使用 sar -P 0命令,从当前日志文件报告 CPU0 使用率。

      [student@servera ~]$ sar -P 0 Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com)  ...  _x86_64_  (2 CPU)  15:50:54     LINUX RESTART  (2 CPU)  ...     CPU %user %nice %system %iowait %steal %idle ...       0  0.01  0.08    0.03    0.05   0.01 99.83 ...       0  0.03  0.00    1.59    1.05   0.41 96.92 ...       0  0.03  0.00    1.67    1.07   0.46 96.77 ...       0  0.04  0.00    1.69    1.03   0.48 96.76 ...       0  0.07  0.00    2.29   33.53   0.46 63.65 ...       0 15.12  0.00    2.09   13.96   0.40 68.43 ...       0 81.08  0.00    0.95    0.17   0.09 17.71 ...       0  0.00  0.00    0.01    0.00   0.01 99.99 ...       0  0.02  0.00    0.04    0.01   0.01 99.93 Average:  0 11.61  0.01    1.22    5.99   0.27 80.90 
    3. 使用 sar -n DEV命令,从当前日志文件报告网络设备统计信息。

      [student@servera ~]$ sar -n DEV Linux 4.18.0-80.el8.x86_64 (servera.lab.example.com)  ...  _x86_64_  (2 CPU)  15:50:54     LINUX RESTART  (2 CPU)  ...  IFACE  rxpck/s txpck/s rxkB/s txkB/s rxcmp/s ... %ifutil ...     lo     0.00    0.00   0.00   0.00    0.00 ...    0.00 ... enp1s0     0.91    0.31   0.07   0.05    0.00 ...    0.00 ...     lo     0.00    0.00   0.00   0.00    0.00 ...    0.00 ... enp1s0     1.35    0.73   0.11   0.16    0.00 ...    0.00 ...     lo     0.00    0.00   0.00   0.00    0.00 ...    0.00 ... enp1s0     1.07    0.53   0.07   0.13    0.00 ...    0.00 ...output omitted... Average:lo     0.00    0.00   0.00   0.00    0.00 ...    0.00 Average:enp1s0 1.40    0.70   0.11   0.16    0.00 ...    0.00 
    4. 退出两个 servera终端会话,以 student 用户身份返回至 workstation

      [student@servera ~]$ exit [student@workstation ~]$  

完成

workstation 虚拟机上运行 lab perftools-sysstat finish 命令以完成本练习。此命令将删除练习中创建的资源。

[student@workstation ~]$ lab perftools-sysstat finish 

本引导式练习到此结束。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!