DeepStream5.0系列之gst-shark工具使用

点击查看系列文章目录

0 简介

在用 deepstream 或 gstreamer 开发时,需要有一个分析 pipeline 的工具,用来查看pipeline的一些信息,比如每个 element 的时延、buffer 信息、cpu 利用率等内容。虽然我们之前在《GStreamer基础教程11:调试工具》介绍过 gst-debug 和生成 pipeline 图的方法,但只能看到结构信息,运行过程中的信息看不到。而 gst-shark 就是这样一个工具,这里有一个PPT介绍可以了解下。

GstShark是Ridgerun的一个开源项目,为GStreamer 1.7.1(及更高版本)提供基准和性能分析工具。它包括用于生成调试信息的跟踪器以及一些用于分析调试信息的工具。GstShark的跟踪器包含以下类型:

Tracer Description
InterLatency Measures the latency time at different points in the pipeline.
ProcTime Measures the time an element takes to produce an output given the corresponding input.
Framerate Measures the amount of frames that go through a src pad every second.
ScheduleTime Measures the amount of time between two consecutive buffers in a sink pad. T
CPUUsage Measures the CPU usage every second. In multiprocessor systems this measurements are presented per core.
Graphic Records a graphical representation of the current pipeline.
Bitrate Measures the current stream bitrate in bits per second.
Queue Level Measures the amount of data queued in every queue element in the pipeline.
Buffer Prints information of every buffer that passes through every sink pad in the pipeline. This information contains PTS and DTS, duration, size, flags and even refcount.

生成的结果有两种类型

Data Description
CTF trace files Trace files that comply with the standard Common Trace File format.
Pipeline diagram Useful visualization of the pipeline generated by the graphic tracer.

有两种工具可以查看结果,分别是 gstshark-plot 和 Eclipse plugin,由于 Eclipse plugin 目前只支持 cpuusage 和 framerate 两种结果的图表显示,因此本文不做太多介绍,感兴趣的可以从该链接中查看

Tool Description
GstShark plot Octave scripts that process the trace files into easy-to-understand charts.
Eclipse plugins Experimental support for loading trace files in to Eclipse and providing charts.

接下来对安装和使用方法进行介绍 

1 安装方法

安装依赖

sudo apt install libgstreamer1.0-dev
sudo apt install graphviz libgraphviz-dev
sudo apt install octave epstool babeltrace

下载源码

git clone https://github.com/RidgeRun/gst-shark.git
cd gst-shark
./autogen.sh $OPTIONS # OPTIONS 选项根据下表选择
make
sudo make install
System Configure Option
Ubuntu 64 bits --prefix /usr/ --libdir /usr/lib/x86_64-linux-gnu/
RidgeRun's Embedded FS --prefix /usr/
MacOSX --prefix /opt/local/
Raspbian/Raspberry Pi --prefix /usr/lib/ --libdir /usr/lib/arm-linux-gnueabihf/
Tegra X1/X2 --prefix /usr/ --libdir /usr/lib/aarch64-linux-gnu/

如果配置的时候报错如下

configure: error: You need to have gtk-doc >= 1.12 installed to build GstShark
  configure failed

则补充安装下 

sudo apt-get install gtk-doc-tools

2 使用方法

接下来我们以 proctime 为例来介绍如何使用该工具来分析 pipeline 中每个插件的耗时,我们以deepstream 5.0 SDK中的 deepstream-test1 为例。首先在 test1 目录下编译源码

$ cd apps/deepstream-test1/
$ make

2.1 生成CTF文件

生成可执行文件之后,使用以下方式运行

GST_DEBUG="GST_TRACER:7" GST_TRACERS="proctime" ./deepstream-test1-app ../../../../samples/streams/sample_720p.h264

  • 如果要看其它参数,只需要将 proctime 替换成其它参数即可,注意要都用小写的形式
  • 支持查看多个参数,只需要用分号来分隔,例如  GST_TRACERS="cpuusage;proctime;framerate"
  • 支持导出文件的路径,只需要设置环境变量,例如 export GST_SHARK_LOCATION=/your/location

运行完之后会在当前目录下生成 gstshark_2020-**-**_**:**:** 文件,** 是系统对应的日期和时间,文件夹里边有两个文件,记录该文件夹的绝对路径

gstshark_2020-06-19_18:06:07/
├── datastream
└── metadata

这个数据就是我们上一节提到的 CTF trace files,可以使用该数据来生成可视化文件

2.2 生成结果图

在 gst-shark 源码目录下,有一个 scripts/graphics 文件夹,里边保存了我们要用到的 gstshark-plot 工具,所以先进入到工具目录中

cd ${GSTSHARK_REPO}/scripts/graphics

我们可以使用 help 指令来查看该工具的使用方法

$ ./gstshark-plot --help
Ridgerun Gstshark

usage : ./gstshark-plot DIR [options]

  DIR                            Input trace directory
  --help                         This help message
  -s, --savefig [pdf|png]        Save the graphics generated
                                 FORMAT: Output file format, png or pdf
                                 (default: pdf)
  -p, --persist                  keep octave console open
  -l, --legend 
                                 Indicate the position of the legend
                                 over each graphic generated
                                 extern: display the legend over an external window
                                 (default: inside)

其中

  • -s 可以指定输出文件的格式是 pdf 或者是 png。当使用 pdf 的时候,输出名字为 tracer.pdf,当使用 png 的时候,可以根据跟踪类型的名字来保存图片。
  • -l 可以指定图例的位置是放到图里边还是外边,从而防止图例与图中的线条重叠,默认是在图片里边

接下来我们使用该工具来转化上一步生成的结果

./gstshark-plot /yourpath/deepstream-test1/gstshark_2020-06-19_18:06:07 -s png

生成结果如下

DeepStream5.0系列之gst-shark工具使用_第1张图片

然后就可以根据这个图来查找问题或瓶颈所在。

 

你可能感兴趣的:(deepstream)