“Sysstat tool suite”的版本间的差异
来自百问网嵌入式Linux wiki
Zhouyuebiao(讨论 | 贡献) 标签:visualeditor-switched |
|||
第1行: | 第1行: | ||
+ | |||
+ | =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]] |
2019年12月26日 (四) 15:58的版本
目录
Sysstat工具套件
文章目的
- 本文提供了开始使用sysstat [1 ]工具套件所需的基本信息,该工具套件提供了一系列Linux工具:
- 主要工具:iostat,mpstat和pidstat
- 其他工具:sar,sadf
简介
- 下表简要介绍了该工具及其可用性,具体取决于软件包:
- 是:该工具已经存在(可以使用或激活),也可以在软件包中集成和激活。
- 没有:该工具不存在且无法集成,或者存在但无法在软件包中激活。
工具 | ||
---|---|---|
名称 | 类别 | 目的 |
系统状态 | 监控工具 | 所述SYSSTAT [1 ]工具套件中含有用来监视系统的性能和使用活动。它包含许多商业Unix发行版共有的各种实用程序,以及可以进行计划的工具(通过诸如cron这样的计划程序)来收集和历史化性能和活动数据的工具:
|
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
参考
- 1. http://sebastien.godard.pagesperso-orange.fr/
- 2. http://sebastien.godard.pagesperso-orange.fr/man_iostat.html
- 3. http://sebastien.godard.pagesperso-orange.fr/man_mpstat.html
- 4. http://sebastien.godard.pagesperso-orange.fr/man_pidstat.html
- 5. http://sebastien.godard.pagesperso-orange.fr/man_sar.html
- 6. https://en.wikipedia.org/wiki/Cron
- 7. http://sebastien.godard.pagesperso-orange.fr/man_sadf.html
- 8. http://sebastien.godard.pagesperso-orange.fr/man_sa1.html
文件链接 | 文件类型 | 描述 |
---|---|---|
sysstat文档 | 标准 | Sebastien GODARD的官方网页 |
sysstat教程 | 用户指南 | Sebastien GODARD的官方网页 |
sysstat的git | 资料来源 | Sysstat github |