“Sysstat tool suite”的版本间的差异

来自百问网嵌入式Linux wiki
 
 
(未显示同一用户的1个中间版本)
第1行: 第1行:
 +
{{DISPLAYTITLE:Sysstat工具套件}}
 +
 +
 +
=Sysstat工具套件=
 +
==文章目的==
 +
: 本文提供了开始使用sysstat [1 ]工具套件所需的基本信息,该工具套件提供了一系列Linux工具:
 +
* 主要工具:iostat,mpstat和pidstat
 +
* 其他工具:sar,sadf
 +
==简介==
 +
: 下表简要介绍了该工具及其可用性,具体取决于软件包:
 +
* 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。
 +
* 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。
 +
{| class="wikitable"
 +
!colspan="3" | 工具
 +
|-
 +
| 名称
 +
| 类别
 +
| 目的
 +
|-
 +
|系统状态
 +
|监控工具
 +
|所述SYSSTAT [1 ]工具套件中含有用来监视系统的性能和使用活动。它包含许多商业Unix发行版共有的各种实用程序,以及可以进行计划的工具(通过诸如cron这样的计划程序)来收集和历史化性能和活动数据的工具:<br>
 +
* iostat:报告块设备和分区的 CPU统计信息以及输入/输出统计信息。
 +
* mpstat:报告单个或组合的处理器相关统计信息。
 +
* pidstat:报告Linux任务(进程)的统计信息:I/O, CPU,你存等。
 +
* sar:收集,报告和保存系统活动信息( CPU,你存,磁盘,中断,网络接口, TTY,内核表等)
 +
* sadf:以多种格式(CSV,XML,JSON等)显示sar收集的数据。此命令还可以用于与其他程序交换数据,或绘制图形来说明sar使用SVG(可缩放矢量图形)格式收集的各种活动。
 +
|-
 +
!colspan="3" | STM32MPU嵌入式软件发行版
 +
|-
 +
| 入门资料包
 +
| 开发者资料包
 +
| 发行版资料包
 +
|-
 +
|是
 +
|是
 +
|是
 +
|-
 +
!colspan="3" | 适用于 Android 的STM32MPU嵌入式软件发行版
 +
|-
 +
| 入门资料包
 +
| 开发者资料包
 +
| 发行版资料包
 +
|-
 +
|没有
 +
|没有
 +
|没有
 +
|}
 +
 +
 +
==在目标板上安装跟踪和调试工具==
 +
===使用STM32MPU嵌入式软件发行版===
 +
: 该 SYSSTAT 工具在默认情况下位于(/usr/bin/),并准备安装到所有 STM32MPU OpenSTLinux 包中使用。
 +
: 通过meta-st软件包将其集成到weston镜像分发中meta-st/meta-st-openstlinux/recipes-st/packagegroups/packagegroup-framework-tools.bb。
 +
<syntaxhighlight lang="bash">
 +
RDEPENDS_packagegroup-framework-tools-core = "\
 +
  grep            \
 +
  ...
 +
  e2fsprogs      \
 +
  e2fsprogs-resize2fs \
 +
  sysstat        \
 +
  minicom        \
 +
  ...
 +
  "
 +
</syntaxhighlight>
 +
 +
==使用入门==
 +
===使用 iostat ===
 +
: iostat 命令用于通过观察设备活动的时间(相对于其平均传输速率)来监视系统输入/输出设备负载。 iostat命令生成报告,这些报告可用于更改系统配置,以更好地平衡物理磁盘之间的输入/输出负载(来源:官方网站[2])。
 +
: /proc必须挂载文件系统后,iostat 才能工作。STM32MPU 嵌入式软件就是这种情况。
 +
 +
:: 命令行选项。有关详细信息,请参见手册页[2 ]。
 +
<syntaxhighlight lang="bash">
 +
Board $> iostat --help
 +
Usage: iostat [ options ] [ <interval> [ <count> ] ]
 +
Options are:
 +
[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
 +
[ -j { ID | LABEL | PATH | UUID | ... } ] [ --human ] [ -o JSON ]
 +
[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]
 +
[ <device> [...] | ALL ]
 +
</syntaxhighlight>
 +
 +
:: 显示所有 CPU 和设备启动报告以来的单个历史记录的基本命令:
 +
<syntaxhighlight lang="bash">
 +
Board $> iostat
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
avg-cpu:  %user  %nice %system %iowait  %steal  %idle
 +
          0.11    0.00    0.60    0.05    0.00  99.25
 +
 +
Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
 +
mmcblk0          0.59        5.44        0.85      58539      9128
 +
mmcblk1          0.03        0.31        0.00      3320          0
 +
mmcblk1boot1      0.00        0.01        0.00        104          0
 +
mmcblk1boot0      0.00        0.01        0.00        104          0
 +
</syntaxhighlight>
 +
 +
::: 注意:通过添加 <interval> 和 <count> 参数,你可以在给定的时间间隔内进行定期刷新:
 +
<syntaxhighlight lang="bash">
 +
Board $> iostat <interval> <count>
 +
</syntaxhighlight>
 +
 +
:: 用于显示系统使用的块设备及其所有分区的统计信息的命令:
 +
<syntaxhighlight lang="bash">
 +
Board $> iostat -N -p ALL
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
avg-cpu:  %user  %nice %system %iowait  %steal  %idle
 +
          0.11    0.00    0.61    0.05    0.00  99.23
 +
 +
Device            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
 +
ram0              0.00        0.00        0.00          0          0
 +
ram1              0.00        0.00        0.00          0          0
 +
ram2              0.00        0.00        0.00          0          0
 +
ram3              0.00        0.00        0.00          0          0
 +
ram4              0.00        0.00        0.00          0          0
 +
ram5              0.00        0.00        0.00          0          0
 +
ram6              0.00        0.00        0.00          0          0
 +
ram7              0.00        0.00        0.00          0          0
 +
ram8              0.00        0.00        0.00          0          0
 +
ram9              0.00        0.00        0.00          0          0
 +
ram10            0.00        0.00        0.00          0          0
 +
ram11            0.00        0.00        0.00          0          0
 +
ram12            0.00        0.00        0.00          0          0
 +
ram13            0.00        0.00        0.00          0          0
 +
ram14            0.00        0.00        0.00          0          0
 +
ram15            0.00        0.00        0.00          0          0
 +
loop0            0.00        0.00        0.00          0          0
 +
loop1            0.00        0.00        0.00          0          0
 +
loop2            0.00        0.00        0.00          0          0
 +
loop3            0.00        0.00        0.00          0          0
 +
loop4            0.00        0.00        0.00          0          0
 +
loop5            0.00        0.00        0.00          0          0
 +
loop6            0.00        0.00        0.00          0          0
 +
loop7            0.00        0.00        0.00          0          0
 +
mtdblock0        0.00        0.00        0.00          0          0
 +
mtdblock1        0.00        0.00        0.00          0          0
 +
mtdblock2        0.00        0.00        0.00          0          0
 +
mtdblock3        0.00        0.00        0.00          0          0
 +
mtdblock4        0.00        0.00        0.00          0          0
 +
mtdblock5        0.00        0.00        0.00          0          0
 +
mtdblock6        0.00        0.00        0.00          0          0
 +
mtdblock7        0.00        0.00        0.00          0          0
 +
mmcblk0          0.66        6.02        0.94      58539      9128
 +
mmcblk0p1        0.00        0.04        0.00        344          0
 +
mmcblk0p2        0.00        0.02        0.00        220          0
 +
mmcblk0p3        0.00        0.01        0.00        72          0
 +
mmcblk0p4        0.03        0.21        0.00      2065          1
 +
mmcblk0p5        0.60        5.46        0.94      53175      9126
 +
mmcblk0p6        0.02        0.21        0.00      2087          1
 +
mmcblk1          0.04        0.34        0.00      3320          0
 +
mmcblk1p1        0.00        0.01        0.00        64          0
 +
mmcblk1p2        0.00        0.00        0.00        44          0
 +
mmcblk1p3        0.00        0.00        0.00        44          0
 +
mmcblk1p4        0.01        0.11        0.00      1032          0
 +
mmcblk1p5        0.01        0.11        0.00      1032          0
 +
mmcblk1boot1      0.00        0.01        0.00        104          0
 +
mmcblk1boot0      0.00        0.01        0.00        104          0
 +
</syntaxhighlight>
 +
 +
===使用mpstat===
 +
: mpstat命令将每个可用处理器的标准输出活动写入,其中处理器 0 是第一个活动(来源:官方网站[3])。
 +
:: 命令行选项。有关详细信息,请参见手册页[3 ]。
 +
<syntaxhighlight lang="bash">
 +
Board $> mpstat --help
 +
Usage: mpstat [ options ] [ <interval> [ <count> ] ]
 +
Options are:
 +
[ -A ] [ -n ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
 +
[ -N { <node_list> | ALL } ] [ -o JSON ] [ -P { <cpu_list> | ON | ALL } ]
 +
</syntaxhighlight>
 +
 +
:: 基本命令以一秒钟的间隔显示所有处理器的三个全局统计信息报告:
 +
<syntaxhighlight lang="bash">
 +
Board $> mpstat 1 3
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
15:45:26    CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle
 +
15:45:27    all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
15:45:28    all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
15:45:29    all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
Average:    all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
</syntaxhighlight>
 +
 +
:: 其他命令以一秒钟的间隔显示所有处理器的三个统计信息的详细报告:
 +
<syntaxhighlight lang="bash">
 +
Board $> mpstat -P ALL 1 3
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
15:48:32    CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle
 +
15:48:33    all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
15:48:33      0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
15:48:33      1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
 +
15:48:33    CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle
 +
15:48:34    all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00  99.50
 +
15:48:34      0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
15:48:34      1    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00  99.01
 +
 +
15:48:34    CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle
 +
15:48:35    all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00  99.50
 +
15:48:35      0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
15:48:35      1    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00  99.01
 +
 +
Average:    CPU    %usr  %nice    %sys %iowait    %irq  %soft  %steal  %guest  %gnice  %idle
 +
Average:    all    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00  99.67
 +
Average:      0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
 +
Average:      1    0.00    0.00    0.66    0.00    0.00    0.00    0.00    0.00    0.00  99.34
 +
</syntaxhighlight>
 +
 +
===使用pidstat===
 +
: pidstat 命令用于监视当前由 Linux 内核管理的各个任务(来源:官方网站[4])。
 +
:: 命令行选项。有关详细信息,请参见手册页[4 ]。
 +
<syntaxhighlight lang="bash">
 +
Board $> pidstat --help
 +
Usage: pidstat [ options ] [ <interval> [ <count> ] ]
 +
Options are:
 +
[ -d ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ]
 +
[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ] [ --human ]
 +
[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
 +
</syntaxhighlight>
 +
 +
:: 显示所有任务的 CPU 统计信息的基本命令:
 +
<syntaxhighlight lang="bash">
 +
Board $> pidstat
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
15:58:48      UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command
 +
15:58:48        0        1    0.03    0.12    0.00    0.05    0.14    0  systemd
 +
15:58:48        0        2    0.00    0.00    0.00    0.00    0.00    1  kthreadd
 +
15:58:48        0        7    0.00    0.01    0.00    0.01    0.01    0  ksoftirqd/0
 +
15:58:48        0        8    0.04    0.00    0.00    0.02    0.04    1  rcu_preempt
 +
15:58:48        0        15    0.00    0.01    0.00    0.00    0.01    1  ksoftirqd/1
 +
15:58:48        0        18    0.00    0.00    0.00    0.00    0.00    1  kdevtmpfs
 +
15:58:48        0        19    0.00    0.00    0.00    0.00    0.00    0  kworker/0:1
 +
15:58:48        0        72    0.00    0.00    0.00    0.00    0.00    0  irq/82-mfx
 +
15:58:48        0        77    0.00    0.06    0.00    0.01    0.06    1  mmcqd/0
 +
15:58:48        0        83    0.00    0.00    0.00    0.00    0.00    0  mmcqd/1
 +
15:58:48        0        85    0.00    0.00    0.00    0.00    0.00    0  mmcqd/1boot0
 +
15:58:48        0        86    0.00    0.00    0.00    0.00    0.00    0  mmcqd/1boot1
 +
15:58:48        0        91    0.00    0.63    0.00    0.00    0.63    0  kmemleak
 +
15:58:48        0        93    0.00    0.00    0.00    0.00    0.00    0  kworker/0:3
 +
15:58:48        0        95    0.00    0.01    0.00    0.00    0.01    1  irq/73-5a001000
 +
15:58:48        0        98    0.00    0.00    0.00    0.00    0.00    0  kworker/0:1H
 +
15:58:48        0        99    0.00    0.00    0.00    0.00    0.00    1  kworker/1:1H
 +
15:58:48        0      100    0.00    0.00    0.00    0.00    0.00    0  jbd2/mmcblk0p5-
 +
15:58:48        0      150    0.01    0.02    0.00    0.02    0.02    0  systemd-journal
 +
15:58:48        0      189    0.01    0.01    0.00    0.03    0.01    1  systemd-udevd
 +
15:58:48        0      201    0.00    0.00    0.00    0.00    0.00    0  kworker/u4:2
 +
15:58:48      993      203    0.01    0.09    0.00    0.00    0.11    1  systemd-timesyn
 +
15:58:48      998      273    0.09    0.04    0.00    0.02    0.14    0  avahi-daemon
 +
15:58:48        0      276    0.00    0.00    0.00    0.00    0.00    1  systemd-logind
 +
15:58:48        0      277    0.00    0.00    0.00    0.00    0.00    1  klogd
 +
15:58:48      996      279    0.00    0.00    0.00    0.00    0.00    0  dbus-daemon
 +
15:58:48        0      301    0.00    0.00    0.00    0.00    0.00    1  syslogd
 +
15:58:48      992      312    0.00    0.00    0.00    0.00    0.00    1  systemd-network
 +
15:58:48        0      314    0.00    0.00    0.00    0.00    0.00    0  weston-launch
 +
15:58:48        0      319    0.01    0.01    0.00    0.00    0.01    1  weston
 +
15:58:48      991      324    0.00    0.00    0.00    0.00    0.00    0  systemd-resolve
 +
15:58:48        0      327    0.03    0.03    0.00    0.00    0.05    0  tcf-agent
 +
15:58:48        0      332    0.00    0.00    0.00    0.00    0.00    1  login
 +
15:58:48        0      333    0.00    0.00    0.00    0.00    0.00    0  agetty
 +
15:58:48      997      334    0.00    0.00    0.00    0.00    0.00    1  named
 +
15:58:48        0      340    0.00    0.00    0.00    0.00    0.00    0  weston-keyboard
 +
15:58:48        0      342    0.01    0.00    0.00    0.00    0.01    0  weston-desktop-
 +
15:58:48        0      345    0.00    0.01    0.00    0.00    0.01    1  systemd
 +
15:58:48        0      350    0.00    0.00    0.00    0.00    0.00    0  sh
 +
15:58:48        0      374    0.02    0.00    0.00    0.00    0.02    1  kworker/1:1
 +
15:58:48        0      420    0.00    0.00    0.00    0.00    0.00    1  kworker/1:0
 +
15:58:48        0      423    0.00    0.00    0.00    0.00    0.00    1  kworker/1:2
 +
15:58:48        0      424    0.00    0.00    0.00    0.00    0.00    1  pidstat
 +
</syntaxhighlight>
 +
 +
:: 基本命令,以一秒为间隔显示系统中每个活动任务的 3 个 CPU 统计信息报告:
 +
<syntaxhighlight lang="bash">
 +
Board $> pidstat 1 3
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
15:59:56      UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command
 +
15:59:57        0      426    3.67    4.59    0.00    0.00    8.26    1  pidstat
 +
 +
15:59:57      UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command
 +
15:59:58        0      426    0.99    6.93    0.00    0.00    7.92    1  pidstat
 +
 +
15:59:58      UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command
 +
15:59:59        0        15    0.00    0.99    0.00    0.00    0.99    1  ksoftirqd/1
 +
15:59:59        0      426    1.98    5.94    0.00    0.99    7.92    1  pidstat
 +
 +
Average:      UID      PID    %usr %system  %guest  %wait    %CPU  CPU  Command
 +
Average:        0        15    0.00    0.32    0.00    0.00    0.32    -  ksoftirqd/1
 +
Average:        0      426    2.25    5.79    0.00    0.32    8.04    -  pidstat
 +
</syntaxhighlight>
 +
 +
:: 基本命令,用于报告具有所有关联线程的特定进程的统计信息:
 +
<syntaxhighlight lang="bash">
 +
Board $> pidstat -t -p `pidof weston-launch`
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
16:00:59      UID      TGID      TID    %usr %system  %guest  %wait    %CPU  CPU  Command
 +
16:00:59        0      314        -    0.00    0.00    0.00    0.00    0.00    0  weston-launch
 +
16:00:59        0        -      314    0.00    0.00    0.00    0.00    0.00    0  |__weston-launch
 +
</syntaxhighlight>
 +
 +
===使用sar===
 +
: sar 命令收集,报告或保存系统活动信息(来源:官方网站[5])。
 +
:: 命令行选项。有关详细信息,请参见手册页[5 ]。
 +
<syntaxhighlight lang="bash">
 +
Board $> sar --help
 +
Usage: sar [ options ] [ <interval> [ <count> ] ]
 +
Options are:
 +
[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]
 +
[ -p ] [ -q ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]
 +
[ -v ] [ -W ] [ -w ] [ -y ] [ --human ] [ --sadc ]
 +
[ -I { <int_list> | SUM | ALL } ] [ -P { <cpu_list> | ALL } ]
 +
[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
 +
[ -j { ID | LABEL | PATH | UUID | ... } ]
 +
[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
 +
[ -i <interval> ] [ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]
 +
</syntaxhighlight>
 +
 +
:: 活动报告的主要使用选项:
 +
{| class="wikitable"
 +
|-
 +
! sar选项 !! 描述
 +
|-
 +
| -u || 所有CPU的CPU利用率
 +
|-
 +
| -P || 单个CPU或核心的 CPU利用率
 +
|-
 +
| -r || 内存利用率统计
 +
|-
 +
| -S || 交换空间利用率的统计信息
 +
|-
 +
| -b || I/O和传输率统计
 +
|-
 +
| -F || 当前已挂载文件系统的统计信息
 +
|-
 +
| -d || 单个块设备I/O的活动
 +
|-
 +
| -w || 任务创建和系统切换活动
 +
|-
 +
| -q || 有关任务运行队列和平均负载的信息
 +
|-
 +
| -n || 网络活动统计
 +
|-
 +
| -B || 报告分页统计
 +
|}
 +
====交互模式====
 +
: 两种使用 sar 的模式:
 +
* 交互模式(在此处详细介绍):sar由用户使用控制台上的命令行启动
 +
* 非交互模式(在详细走得更远章):SAR由脚本启动((/usr/lib/sa/sa1,这是SYSSTAT工具套件的一部分),可以通过调度守护比如 cron 来管理[6 ]
 +
: 一旦存在 [<interval> [<count>]] 参数,便会使用交互模式,否则将使用非交互模式。在交互模式下,通过考虑这些值可立即执行命令。
 +
: 例如,要获得所有 CPU 的 CPU 利用率情况,每3秒5次统计一次:
 +
<syntaxhighlight lang="bash">
 +
Board $> sar -u 3 5
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
12:30:20        CPU    %user    %nice  %system  %iowait    %steal    %idle
 +
12:30:23        all      0.00      0.00      0.50      0.00      0.00    99.50
 +
12:30:26        all      0.00      0.00      0.50      0.00      0.00    99.50
 +
12:30:29        all      0.17      0.00      0.17      0.00      0.00    99.67
 +
12:30:32        all      0.66      0.00      2.49      0.00      0.00    96.84
 +
12:30:35        all      0.33      0.00      3.16      0.00      0.00    96.51
 +
Average:        all      0.23      0.00      1.36      0.00      0.00    98.41
 +
</syntaxhighlight>
 +
: -o <filename> 可用于以二进制格式将信息存储到文件中,稍后可使用 sadf 进行读取。
 +
 +
===使用sadf===
 +
: SADF命令用于显示由所述SAR命令创建的数据文件的内容(来源:官方网站[7 ]):SAR中使用交互模式 -o 选项在非交互式模式中创建,或文件的 /var/log/sa/ 目录。
 +
 +
: 命令行选项。有关详细信息,请参见手册页[7 ]。
 +
<syntaxhighlight lang="bash">
 +
Board $> sadf --help
 +
Usage: sadf [ options ] [ <interval> [ <count> ] ] [ <datafile> | -[0-9]+ ]
 +
Options are:
 +
[ -C ] [ -c | -d | -g | -j | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]
 +
[ -O <opts> [,...] ] [ -P { <cpu> [,...] | ALL } ]
 +
[ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]
 +
[ -- <sar_options> ]
 +
</syntaxhighlight>
 +
: 活动报告的主要使用格式:
 +
 +
{| class="wikitable"
 +
|-
 +
! sadf选项 !! 描述
 +
|-
 +
| -d || 以一种关系数据库系统可以轻松提取的格式打印数据文件的内容。输出由以分号(即MSExcel)分隔的字段组成
 +
|-
 +
| -G || 从v11.3.1起,以SVG(可缩放矢量图形)格式打印数据文件的内容。使用以下语法: Board $> sadf -g sar_datafile [-<sar_options>]> output.svg 请注意提供正确的sar_options,即,在检查你存利用率时,必须在命令中给出“--r”。
 +
|-
 +
| -j || 以JSON(JavaScript Object Notation)格式打印数据文件的内容
 +
|-
 +
| -t || 以数据文件创建者的原始本地时间而不是UTC(世界标准时间)显示时间戳
 +
|-
 +
| -X || 以XML格式打印数据文件的内容
 +
|}
 +
 +
==深入学习==
 +
===使用 sar 非交互模式===
 +
: 在非交互方式下,调度程序守护程序用于计划活动记录。
 +
: 推荐的环境是使用cron [6 ]守护程序以及安装该工具套件时出现的 syssta t脚本 /usr/lib/sa/sa1 。有关详细信息,请参见sa1网页[8 ]。
 +
 +
: {{redtext|cron默认情况下未安装}},并且是要集成的 cronie yocto 软件包的一部分:
 +
:: 使用 STM32MPU 嵌入式软件发行版的发行包(st-image-weston):
 +
<syntaxhighlight lang="bash">
 +
PC $> echo 'IMAGE_INSTALL_append += "cronie"' >> meta-st/meta-st-openstlinux/recipes-st/images/st-image-weston.bbappend
 +
</syntaxhighlight>
 +
::: 然后重建 st-image-weston 镜像。
 +
===格式化要在 MS-Excel 中导入的数据===
 +
: 使用 sar 命令获取所有 CPU 的使用率,将数据格式化为半列文本,然后使用 MS-Excel 绘制图形的示例:
 +
 +
:: 记录CPU使用情况数据(每3秒间隔10次迭代)
 +
<syntaxhighlight lang="bash">
 +
Board $> sar -u 3 10 -o test
 +
Linux 4.14.48 (stm32mp1) 06/18/18 _armv7l_ (2 CPU)
 +
 +
13:03:26        CPU    %user    %nice  %system  %iowait    %steal    %idle
 +
13:03:29        all      4.82      0.00      3.16      0.66      0.00    91.36
 +
13:03:32        all      3.82      0.00      3.49      0.00      0.00    92.69
 +
13:03:35        all    18.77      0.00      7.81      5.81      0.00    67.61
 +
13:03:38        all    11.96      0.00      4.98      0.00      0.00    83.06
 +
13:03:41        all    36.21      0.00      8.97      0.00      0.00    54.82
 +
13:03:44        all      1.50      0.00      1.66      0.83      0.00    96.01
 +
13:03:47        all      1.00      0.00      1.83      1.33      0.00    95.85
 +
13:03:50        all      9.63      0.00      4.82      0.00      0.00    85.55
 +
13:03:53        all      3.49      0.00      5.32      0.00      0.00    91.20
 +
13:03:56        all      4.15      0.00      4.98      4.65      0.00    86.21
 +
Average:        all      9.53      0.00      4.70      1.33      0.00    84.44
 +
</syntaxhighlight>
 +
::: 测试文件也会创建(二进制格式)。
 +
 +
:: 从测试文件创建可读的报告格式,即半列格式,可以将其导入 MSExcel 图形:
 +
<syntaxhighlight lang="bash">
 +
Board $> sadf -d test > test.cvs
 +
Board $> cat test.cvs
 +
# hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle
 +
stm32mp1;3;2018-06-18 13:03:29 UTC;-1;4.82;0.00;3.16;0.66;0.00;91.36
 +
stm32mp1;3;2018-06-18 13:03:32 UTC;-1;3.82;0.00;3.49;0.00;0.00;92.69
 +
stm32mp1;3;2018-06-18 13:03:35 UTC;-1;18.77;0.00;7.81;5.81;0.00;67.61
 +
stm32mp1;3;2018-06-18 13:03:38 UTC;-1;11.96;0.00;4.98;0.00;0.00;83.06
 +
stm32mp1;3;2018-06-18 13:03:41 UTC;-1;36.21;0.00;8.97;0.00;0.00;54.82
 +
stm32mp1;3;2018-06-18 13:03:44 UTC;-1;1.50;0.00;1.66;0.83;0.00;96.01
 +
stm32mp1;3;2018-06-18 13:03:47 UTC;-1;1.00;0.00;1.83;1.33;0.00;95.85
 +
stm32mp1;3;2018-06-18 13:03:50 UTC;-1;9.63;0.00;4.82;0.00;0.00;85.55
 +
stm32mp1;3;2018-06-18 13:03:53 UTC;-1;3.49;0.00;5.32;0.00;0.00;91.20
 +
stm32mp1;3;2018-06-18 13:03:56 UTC;-1;4.15;0.00;4.98;4.65;0.00;86.21
 +
</syntaxhighlight>
 +
:: [[File:Sysstat_tool_suite_001.png|800px]]
 +
 +
==参考==
 +
: 1. [http://sebastien.godard.pagesperso-orange.fr/ http://sebastien.godard.pagesperso-orange.fr/]
 +
: 2. [http://sebastien.godard.pagesperso-orange.fr/man_iostat.html http://sebastien.godard.pagesperso-orange.fr/man_iostat.html]
 +
: 3. [http://sebastien.godard.pagesperso-orange.fr/man_mpstat.html http://sebastien.godard.pagesperso-orange.fr/man_mpstat.html]
 +
: 4. [http://sebastien.godard.pagesperso-orange.fr/man_pidstat.html http://sebastien.godard.pagesperso-orange.fr/man_pidstat.html]
 +
: 5. [http://sebastien.godard.pagesperso-orange.fr/man_sar.html http://sebastien.godard.pagesperso-orange.fr/man_sar.html]
 +
: 6. [https://en.wikipedia.org/wiki/Cron https://en.wikipedia.org/wiki/Cron]
 +
: 7. [http://sebastien.godard.pagesperso-orange.fr/man_sadf.html http://sebastien.godard.pagesperso-orange.fr/man_sadf.html]
 +
: 8. [http://sebastien.godard.pagesperso-orange.fr/man_sa1.html http://sebastien.godard.pagesperso-orange.fr/man_sa1.html]
 +
{| class="wikitable"
 +
|-
 +
! 文件链接 !! 文件类型 !! 描述
 +
|-
 +
| [http://sebastien.godard.pagesperso-orange.fr/documentation.html sysstat文档] || 标准 || Sebastien GODARD的官方网页
 +
|-
 +
| [http://sebastien.godard.pagesperso-orange.fr/tutorial.html sysstat教程] || 用户指南 || Sebastien GODARD的官方网页
 +
|-
 +
| [https://github.com/sysstat/sysstat sysstat的git] || 资料来源 || Sysstat github
 +
|}
 +
 
[[Category:Linux_Operating_System]]
 
[[Category:Linux_Operating_System]]
 
[[Category:Linux_monitoring_tools]]
 
[[Category:Linux_monitoring_tools]]

2020年1月6日 (一) 15:41的最新版本


Sysstat工具套件

文章目的

本文提供了开始使用sysstat [1 ]工具套件所需的基本信息,该工具套件提供了一系列Linux工具:
  • 主要工具:iostat,mpstat和pidstat
  • 其他工具:sar,sadf

简介

下表简要介绍了该工具及其可用性,具体取决于软件包:
  • 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。
  • 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。
工具
名称 类别 目的
系统状态 监控工具 所述SYSSTAT [1 ]工具套件中含有用来监视系统的性能和使用活动。它包含许多商业Unix发行版共有的各种实用程序,以及可以进行计划的工具(通过诸如cron这样的计划程序)来收集和历史化性能和活动数据的工具:
  • iostat:报告块设备和分区的 CPU统计信息以及输入/输出统计信息。
  • mpstat:报告单个或组合的处理器相关统计信息。
  • pidstat:报告Linux任务(进程)的统计信息:I/O, CPU,你存等。
  • sar:收集,报告和保存系统活动信息( CPU,你存,磁盘,中断,网络接口, TTY,内核表等)
  • sadf:以多种格式(CSV,XML,JSON等)显示sar收集的数据。此命令还可以用于与其他程序交换数据,或绘制图形来说明sar使用SVG(可缩放矢量图形)格式收集的各种活动。
STM32MPU嵌入式软件发行版
入门资料包 开发者资料包 发行版资料包
适用于 Android 的STM32MPU嵌入式软件发行版
入门资料包 开发者资料包 发行版资料包
没有 没有 没有


在目标板上安装跟踪和调试工具

使用STM32MPU嵌入式软件发行版

该 SYSSTAT 工具在默认情况下位于(/usr/bin/),并准备安装到所有 STM32MPU OpenSTLinux 包中使用。
通过meta-st软件包将其集成到weston镜像分发中meta-st/meta-st-openstlinux/recipes-st/packagegroups/packagegroup-framework-tools.bb。
	RDEPENDS_packagegroup-framework-tools-core = "\
	   grep            \
	   ...
	   e2fsprogs       \
	   e2fsprogs-resize2fs \
	   sysstat         \
	   minicom         \
	   ...
	   "

使用入门

使用 iostat

iostat 命令用于通过观察设备活动的时间(相对于其平均传输速率)来监视系统输入/输出设备负载。 iostat命令生成报告,这些报告可用于更改系统配置,以更好地平衡物理磁盘之间的输入/输出负载(来源:官方网站[2])。
/proc必须挂载文件系统后,iostat 才能工作。STM32MPU 嵌入式软件就是这种情况。
命令行选项。有关详细信息,请参见手册页[2 ]。
	Board $> iostat --help
	Usage: iostat [ options ] [ <interval> [ <count> ] ]
	Options are:
	[ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -s ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ]
	[ -j { ID | LABEL | PATH | UUID | ... } ] [ --human ] [ -o JSON ]
	[ [ -H ] -g <group_name> ] [ -p [ <device> [,...] | ALL ] ]
	[ <device> [...] | ALL ]
显示所有 CPU 和设备启动报告以来的单个历史记录的基本命令:
	Board $> iostat
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	avg-cpu:  %user   %nice %system %iowait  %steal   %idle
	           0.11    0.00    0.60    0.05    0.00   99.25

	Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
	mmcblk0           0.59         5.44         0.85      58539       9128
	mmcblk1           0.03         0.31         0.00       3320          0
	mmcblk1boot1      0.00         0.01         0.00        104          0
	mmcblk1boot0      0.00         0.01         0.00        104          0
注意:通过添加 <interval> 和 <count> 参数,你可以在给定的时间间隔内进行定期刷新:
	Board $> iostat <interval> <count>
用于显示系统使用的块设备及其所有分区的统计信息的命令:
	Board $> iostat -N -p ALL
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	avg-cpu:  %user   %nice %system %iowait  %steal   %idle
	          0.11    0.00    0.61    0.05    0.00   99.23

	Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
	ram0              0.00         0.00         0.00          0          0
	ram1              0.00         0.00         0.00          0          0
	ram2              0.00         0.00         0.00          0          0
	ram3              0.00         0.00         0.00          0          0
	ram4              0.00         0.00         0.00          0          0
	ram5              0.00         0.00         0.00          0          0
	ram6              0.00         0.00         0.00          0          0
	ram7              0.00         0.00         0.00          0          0
	ram8              0.00         0.00         0.00          0          0
	ram9              0.00         0.00         0.00          0          0
	ram10             0.00         0.00         0.00          0          0
	ram11             0.00         0.00         0.00          0          0
	ram12             0.00         0.00         0.00          0          0
	ram13             0.00         0.00         0.00          0          0
	ram14             0.00         0.00         0.00          0          0
	ram15             0.00         0.00         0.00          0          0
	loop0             0.00         0.00         0.00          0          0
	loop1             0.00         0.00         0.00          0          0
	loop2             0.00         0.00         0.00          0          0
	loop3             0.00         0.00         0.00          0          0
	loop4             0.00         0.00         0.00          0          0
	loop5             0.00         0.00         0.00          0          0
	loop6             0.00         0.00         0.00          0          0
	loop7             0.00         0.00         0.00          0          0
	mtdblock0         0.00         0.00         0.00          0          0
	mtdblock1         0.00         0.00         0.00          0          0
	mtdblock2         0.00         0.00         0.00          0          0
	mtdblock3         0.00         0.00         0.00          0          0
	mtdblock4         0.00         0.00         0.00          0          0
	mtdblock5         0.00         0.00         0.00          0          0
	mtdblock6         0.00         0.00         0.00          0          0
	mtdblock7         0.00         0.00         0.00          0          0
	mmcblk0           0.66         6.02         0.94      58539       9128
	mmcblk0p1         0.00         0.04         0.00        344          0
	mmcblk0p2         0.00         0.02         0.00        220          0
	mmcblk0p3         0.00         0.01         0.00         72          0
	mmcblk0p4         0.03         0.21         0.00       2065          1
	mmcblk0p5         0.60         5.46         0.94      53175       9126
	mmcblk0p6         0.02         0.21         0.00       2087          1
	mmcblk1           0.04         0.34         0.00       3320          0
	mmcblk1p1         0.00         0.01         0.00         64          0
	mmcblk1p2         0.00         0.00         0.00         44          0
	mmcblk1p3         0.00         0.00         0.00         44          0
	mmcblk1p4         0.01         0.11         0.00       1032          0
	mmcblk1p5         0.01         0.11         0.00       1032          0
	mmcblk1boot1      0.00         0.01         0.00        104          0
	mmcblk1boot0      0.00         0.01         0.00        104          0

使用mpstat

mpstat命令将每个可用处理器的标准输出活动写入,其中处理器 0 是第一个活动(来源:官方网站[3])。
命令行选项。有关详细信息,请参见手册页[3 ]。
	Board $> mpstat --help
	Usage: mpstat [ options ] [ <interval> [ <count> ] ]
	Options are:
	[ -A ] [ -n ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
	[ -N { <node_list> | ALL } ] [ -o JSON ] [ -P { <cpu_list> | ON | ALL } ]
基本命令以一秒钟的间隔显示所有处理器的三个全局统计信息报告:
	Board $> mpstat 1 3
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	15:45:26     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
	15:45:27     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	15:45:28     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	15:45:29     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	Average:     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
其他命令以一秒钟的间隔显示所有处理器的三个统计信息的详细报告:
	Board $> mpstat -P ALL 1 3
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	15:48:32     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
	15:48:33     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	15:48:33       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	15:48:33       1    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

	15:48:33     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
	15:48:34     all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
	15:48:34       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	15:48:34       1    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01

	15:48:34     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
	15:48:35     all    0.00    0.00    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50
	15:48:35       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	15:48:35       1    0.00    0.00    0.99    0.00    0.00    0.00    0.00    0.00    0.00   99.01

	Average:     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
	Average:     all    0.00    0.00    0.33    0.00    0.00    0.00    0.00    0.00    0.00   99.67
	Average:       0    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
	Average:       1    0.00    0.00    0.66    0.00    0.00    0.00    0.00    0.00    0.00   99.34

使用pidstat

pidstat 命令用于监视当前由 Linux 内核管理的各个任务(来源:官方网站[4])。
命令行选项。有关详细信息,请参见手册页[4 ]。
	Board $> pidstat --help
	Usage: pidstat [ options ] [ <interval> [ <count> ] ]
	Options are:
	[ -d ] [ -h ] [ -I ] [ -l ] [ -R ] [ -r ] [ -s ] [ -t ] [ -U [ <username> ] ]
	[ -u ] [ -V ] [ -v ] [ -w ] [ -C <command> ] [ -G <process_name> ] [ --human ]
	[ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
显示所有任务的 CPU 统计信息的基本命令:
	Board $> pidstat
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	15:58:48      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
	15:58:48        0         1    0.03    0.12    0.00    0.05    0.14     0  systemd
	15:58:48        0         2    0.00    0.00    0.00    0.00    0.00     1  kthreadd
	15:58:48        0         7    0.00    0.01    0.00    0.01    0.01     0  ksoftirqd/0
	15:58:48        0         8    0.04    0.00    0.00    0.02    0.04     1  rcu_preempt
	15:58:48        0        15    0.00    0.01    0.00    0.00    0.01     1  ksoftirqd/1
	15:58:48        0        18    0.00    0.00    0.00    0.00    0.00     1  kdevtmpfs
	15:58:48        0        19    0.00    0.00    0.00    0.00    0.00     0  kworker/0:1
	15:58:48        0        72    0.00    0.00    0.00    0.00    0.00     0  irq/82-mfx
	15:58:48        0        77    0.00    0.06    0.00    0.01    0.06     1  mmcqd/0
	15:58:48        0        83    0.00    0.00    0.00    0.00    0.00     0  mmcqd/1
	15:58:48        0        85    0.00    0.00    0.00    0.00    0.00     0  mmcqd/1boot0
	15:58:48        0        86    0.00    0.00    0.00    0.00    0.00     0  mmcqd/1boot1
	15:58:48        0        91    0.00    0.63    0.00    0.00    0.63     0  kmemleak
	15:58:48        0        93    0.00    0.00    0.00    0.00    0.00     0  kworker/0:3
	15:58:48        0        95    0.00    0.01    0.00    0.00    0.01     1  irq/73-5a001000
	15:58:48        0        98    0.00    0.00    0.00    0.00    0.00     0  kworker/0:1H
	15:58:48        0        99    0.00    0.00    0.00    0.00    0.00     1  kworker/1:1H
	15:58:48        0       100    0.00    0.00    0.00    0.00    0.00     0  jbd2/mmcblk0p5-
	15:58:48        0       150    0.01    0.02    0.00    0.02    0.02     0  systemd-journal
	15:58:48        0       189    0.01    0.01    0.00    0.03    0.01     1  systemd-udevd
	15:58:48        0       201    0.00    0.00    0.00    0.00    0.00     0  kworker/u4:2
	15:58:48      993       203    0.01    0.09    0.00    0.00    0.11     1  systemd-timesyn
	15:58:48      998       273    0.09    0.04    0.00    0.02    0.14     0  avahi-daemon
	15:58:48        0       276    0.00    0.00    0.00    0.00    0.00     1  systemd-logind
	15:58:48        0       277    0.00    0.00    0.00    0.00    0.00     1  klogd
	15:58:48      996       279    0.00    0.00    0.00    0.00    0.00     0  dbus-daemon
	15:58:48        0       301    0.00    0.00    0.00    0.00    0.00     1  syslogd
	15:58:48      992       312    0.00    0.00    0.00    0.00    0.00     1  systemd-network
	15:58:48        0       314    0.00    0.00    0.00    0.00    0.00     0  weston-launch
	15:58:48        0       319    0.01    0.01    0.00    0.00    0.01     1  weston
	15:58:48      991       324    0.00    0.00    0.00    0.00    0.00     0  systemd-resolve
	15:58:48        0       327    0.03    0.03    0.00    0.00    0.05     0  tcf-agent
	15:58:48        0       332    0.00    0.00    0.00    0.00    0.00     1  login
	15:58:48        0       333    0.00    0.00    0.00    0.00    0.00     0  agetty
	15:58:48      997       334    0.00    0.00    0.00    0.00    0.00     1  named
	15:58:48        0       340    0.00    0.00    0.00    0.00    0.00     0  weston-keyboard
	15:58:48        0       342    0.01    0.00    0.00    0.00    0.01     0  weston-desktop-
	15:58:48        0       345    0.00    0.01    0.00    0.00    0.01     1  systemd
	15:58:48        0       350    0.00    0.00    0.00    0.00    0.00     0  sh
	15:58:48        0       374    0.02    0.00    0.00    0.00    0.02     1  kworker/1:1
	15:58:48        0       420    0.00    0.00    0.00    0.00    0.00     1  kworker/1:0
	15:58:48        0       423    0.00    0.00    0.00    0.00    0.00     1  kworker/1:2
	15:58:48        0       424    0.00    0.00    0.00    0.00    0.00     1  pidstat
基本命令,以一秒为间隔显示系统中每个活动任务的 3 个 CPU 统计信息报告:
	Board $> pidstat 1 3
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	15:59:56      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
	15:59:57        0       426    3.67    4.59    0.00    0.00    8.26     1  pidstat

	15:59:57      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
	15:59:58        0       426    0.99    6.93    0.00    0.00    7.92     1  pidstat

	15:59:58      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
	15:59:59        0        15    0.00    0.99    0.00    0.00    0.99     1  ksoftirqd/1
	15:59:59        0       426    1.98    5.94    0.00    0.99    7.92     1  pidstat

	Average:      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
	Average:        0        15    0.00    0.32    0.00    0.00    0.32     -  ksoftirqd/1
	Average:        0       426    2.25    5.79    0.00    0.32    8.04     -  pidstat
基本命令,用于报告具有所有关联线程的特定进程的统计信息:
	Board $> pidstat -t -p `pidof weston-launch`
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	16:00:59      UID      TGID       TID    %usr %system  %guest   %wait    %CPU   CPU  Command
	16:00:59        0       314         -    0.00    0.00    0.00    0.00    0.00     0  weston-launch
	16:00:59        0         -       314    0.00    0.00    0.00    0.00    0.00     0  |__weston-launch

使用sar

sar 命令收集,报告或保存系统活动信息(来源:官方网站[5])。
命令行选项。有关详细信息,请参见手册页[5 ]。
	Board $> sar --help
	Usage: sar [ options ] [ <interval> [ <count> ] ]
	Options are:
	[ -A ] [ -B ] [ -b ] [ -C ] [ -D ] [ -d ] [ -F [ MOUNT ] ] [ -H ] [ -h ]
	[ -p ] [ -q ] [ -r [ ALL ] ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ]
	[ -v ] [ -W ] [ -w ] [ -y ] [ --human ] [ --sadc ]
	[ -I { <int_list> | SUM | ALL } ] [ -P { <cpu_list> | ALL } ]
	[ -m { <keyword> [,...] | ALL } ] [ -n { <keyword> [,...] | ALL } ]
	[ -j { ID | LABEL | PATH | UUID | ... } ]
	[ -f [ <filename> ] | -o [ <filename> ] | -[0-9]+ ]
	[ -i <interval> ] [ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]
活动报告的主要使用选项:
sar选项 描述
-u 所有CPU的CPU利用率
-P 单个CPU或核心的 CPU利用率
-r 内存利用率统计
-S 交换空间利用率的统计信息
-b I/O和传输率统计
-F 当前已挂载文件系统的统计信息
-d 单个块设备I/O的活动
-w 任务创建和系统切换活动
-q 有关任务运行队列和平均负载的信息
-n 网络活动统计
-B 报告分页统计

交互模式

两种使用 sar 的模式:
  • 交互模式(在此处详细介绍):sar由用户使用控制台上的命令行启动
  • 非交互模式(在详细走得更远章):SAR由脚本启动((/usr/lib/sa/sa1,这是SYSSTAT工具套件的一部分),可以通过调度守护比如 cron 来管理[6 ]
一旦存在 [<interval> [<count>]] 参数,便会使用交互模式,否则将使用非交互模式。在交互模式下,通过考虑这些值可立即执行命令。
例如,要获得所有 CPU 的 CPU 利用率情况,每3秒5次统计一次:
	Board $> sar -u 3 5
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	12:30:20        CPU     %user     %nice   %system   %iowait    %steal     %idle
	12:30:23        all      0.00      0.00      0.50      0.00      0.00     99.50
	12:30:26        all      0.00      0.00      0.50      0.00      0.00     99.50
	12:30:29        all      0.17      0.00      0.17      0.00      0.00     99.67
	12:30:32        all      0.66      0.00      2.49      0.00      0.00     96.84
	12:30:35        all      0.33      0.00      3.16      0.00      0.00     96.51
	Average:        all      0.23      0.00      1.36      0.00      0.00     98.41
-o <filename> 可用于以二进制格式将信息存储到文件中,稍后可使用 sadf 进行读取。

使用sadf

SADF命令用于显示由所述SAR命令创建的数据文件的内容(来源:官方网站[7 ]):SAR中使用交互模式 -o 选项在非交互式模式中创建,或文件的 /var/log/sa/ 目录。
命令行选项。有关详细信息,请参见手册页[7 ]。
	Board $> sadf --help
	Usage: sadf [ options ] [ <interval> [ <count> ] ] [ <datafile> | -[0-9]+ ]
	Options are:
	[ -C ] [ -c | -d | -g | -j | -p | -r | -x ] [ -H ] [ -h ] [ -T | -t | -U ] [ -V ]
	[ -O <opts> [,...] ] [ -P { <cpu> [,...] | ALL } ]
	[ -s [ <hh:mm[:ss]> ] ] [ -e [ <hh:mm[:ss]> ] ]
	[ -- <sar_options> ]
活动报告的主要使用格式:
sadf选项 描述
-d 以一种关系数据库系统可以轻松提取的格式打印数据文件的内容。输出由以分号(即MSExcel)分隔的字段组成
-G 从v11.3.1起,以SVG(可缩放矢量图形)格式打印数据文件的内容。使用以下语法: Board $> sadf -g sar_datafile [-<sar_options>]> output.svg 请注意提供正确的sar_options,即,在检查你存利用率时,必须在命令中给出“--r”。
-j 以JSON(JavaScript Object Notation)格式打印数据文件的内容
-t 以数据文件创建者的原始本地时间而不是UTC(世界标准时间)显示时间戳
-X 以XML格式打印数据文件的内容

深入学习

使用 sar 非交互模式

在非交互方式下,调度程序守护程序用于计划活动记录。
推荐的环境是使用cron [6 ]守护程序以及安装该工具套件时出现的 syssta t脚本 /usr/lib/sa/sa1 。有关详细信息,请参见sa1网页[8 ]。
cron默认情况下未安装,并且是要集成的 cronie yocto 软件包的一部分:
使用 STM32MPU 嵌入式软件发行版的发行包(st-image-weston):
	PC $> echo 'IMAGE_INSTALL_append += "cronie"' >> meta-st/meta-st-openstlinux/recipes-st/images/st-image-weston.bbappend
然后重建 st-image-weston 镜像。

格式化要在 MS-Excel 中导入的数据

使用 sar 命令获取所有 CPU 的使用率,将数据格式化为半列文本,然后使用 MS-Excel 绘制图形的示例:
记录CPU使用情况数据(每3秒间隔10次迭代)
	Board $> sar -u 3 10 -o test
	Linux 4.14.48 (stm32mp1) 	06/18/18 	_armv7l_	(2 CPU)

	13:03:26        CPU     %user     %nice   %system   %iowait    %steal     %idle
	13:03:29        all      4.82      0.00      3.16      0.66      0.00     91.36
	13:03:32        all      3.82      0.00      3.49      0.00      0.00     92.69
	13:03:35        all     18.77      0.00      7.81      5.81      0.00     67.61
	13:03:38        all     11.96      0.00      4.98      0.00      0.00     83.06
	13:03:41        all     36.21      0.00      8.97      0.00      0.00     54.82
	13:03:44        all      1.50      0.00      1.66      0.83      0.00     96.01
	13:03:47        all      1.00      0.00      1.83      1.33      0.00     95.85
	13:03:50        all      9.63      0.00      4.82      0.00      0.00     85.55
	13:03:53        all      3.49      0.00      5.32      0.00      0.00     91.20
	13:03:56        all      4.15      0.00      4.98      4.65      0.00     86.21
	Average:        all      9.53      0.00      4.70      1.33      0.00     84.44
测试文件也会创建(二进制格式)。
从测试文件创建可读的报告格式,即半列格式,可以将其导入 MSExcel 图形:
	Board $> sadf -d test > test.cvs
	Board $> cat test.cvs
	 # hostname;interval;timestamp;CPU;%user;%nice;%system;%iowait;%steal;%idle
	 stm32mp1;3;2018-06-18 13:03:29 UTC;-1;4.82;0.00;3.16;0.66;0.00;91.36
	 stm32mp1;3;2018-06-18 13:03:32 UTC;-1;3.82;0.00;3.49;0.00;0.00;92.69
	 stm32mp1;3;2018-06-18 13:03:35 UTC;-1;18.77;0.00;7.81;5.81;0.00;67.61
	 stm32mp1;3;2018-06-18 13:03:38 UTC;-1;11.96;0.00;4.98;0.00;0.00;83.06
	 stm32mp1;3;2018-06-18 13:03:41 UTC;-1;36.21;0.00;8.97;0.00;0.00;54.82
	 stm32mp1;3;2018-06-18 13:03:44 UTC;-1;1.50;0.00;1.66;0.83;0.00;96.01
	 stm32mp1;3;2018-06-18 13:03:47 UTC;-1;1.00;0.00;1.83;1.33;0.00;95.85
	 stm32mp1;3;2018-06-18 13:03:50 UTC;-1;9.63;0.00;4.82;0.00;0.00;85.55
	 stm32mp1;3;2018-06-18 13:03:53 UTC;-1;3.49;0.00;5.32;0.00;0.00;91.20
	 stm32mp1;3;2018-06-18 13:03:56 UTC;-1;4.15;0.00;4.98;4.65;0.00;86.21
800px