NotePublic/Software/Applications/Sysstat/Sysstat_移植和使用.md

81 lines
3.3 KiB
Markdown
Raw Normal View History

# Sysstat 移植和使用
Linux 下的性能分析包括CPU使用情况内存使用情况IO状态等等与系统相关的状态少不了要使用 sysstat 工具包中的命令它包括cifsiostat iostat mpstat pidstat sadf sar tapestat 七条命令。但是对于嵌入式设备一般的busybox里面不会包含sysstat里面的命令或者说是这些命令有些功能已经被裁减了。为了更好的分析嵌入式设备的状态和性能可以将sysstat工具包里的命令移植到嵌入式设备中。
## 移植
### syssta 主页
<http://sebastien.godard.pagesperso-orange.fr/>
### sysstat github
<https://github.com/sysstat/sysstat>
### 配置和交叉编译
```sh
git clone git://github.com/sysstat/sysstat
source <交叉编译环境变量>
cd sysstat
./configure --host=arm
make
```
## 使用
### pidstat
pidstat 是sysstat工具的一个命令用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况用法如下
```sh
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
```
常用的参数:
* -u默认的参数显示各个进程的cpu使用统计
* -r显示各个进程的内存使用统计
* -d显示各个进程的IO使用情况
* -p指定进程号
* -w显示每个进程的上下文切换情况
* -t显示选择任务的线程的统计信息外的额外信息
* -T { TASK | CHILD | ALL }这个选项指定了pidstat监控的。TASK表示报告独立的taskCHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。注意task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔这些统计信息只有在子线程kill或者完成的时候才会被收集。
* -V版本号
* -h在一行上显示了所有活动这样其他程序可以容易解析。
* -I在SMP环境表示任务的CPU使用率/内核数量
* -l显示命令名和所有参数
### iostat
#### 语法
```sh
iostat [ -c ] [ -d ] [ -h ] [ -N ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
```
#### 入门使用
参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位2表示数据显示每隔2秒刷新一次。-x 选项将用于显示和io相关的扩展数据。-c 参数用来获取cpu部分状态值。
```sh
iostat -d -k 2
iostat -d sda 2
iostat -d -x -k 1 10
iostat -c 1 10
```
#### 输出信息的意义
tps该设备每秒的传输次数Indicate the number of transfers per second that were issued to the device.)。"一次传输"意思是"一次I/O请求"。多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
kB_read/s每秒从设备drive expressed读取的数据量
kB_wrtn/s每秒向设备drive expressed写入的数据量
kB_read读取的总数据量
kB_wrtn写入的总数量数据量这些单位都为Kilobytes。
## 参考资料
[将sysstat工具包移植到嵌入式linux设备](https://blog.csdn.net/li_wen01/article/details/82682587)
[Linux IO实时监控iostat命令详解](https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858810.html)