2018年6月3日 星期日

Perf tool for mips platform

Perf 為 linux performance tracing tool,可以用來追蹤系統效能的調校工具。

因為工作需要,需要再Mips平台下進行效能調校,同時需要可以轉CTF的功能。

紀錄一下需要哪些套件進行交叉編譯。




Perf目前預設為linux kernl的tool,因此可以從linux kernel內找到。

或著從以下來源找到相對應Perf

https://kernel.googlesource.com/pub/scm/linux/kernel/git/jolsa/perf/

因此我直接載有支持CTF的Perf tool

https://kernel.googlesource.com/pub/scm/linux/kernel/git/jolsa/perf/+/perf/core_ctf_convert

除此之外還需另外安裝babeltrace套件用於轉換CTF格式(交叉編譯均下載源碼)。


(1) Babeltrace (http://diamon.org/babeltrace/)

./configure --host=mipsel-linux-gnu --target=mipsel-linux-gnu --prefix=$PWD/release CC="mipsel-linux-gnu-gcc -EL" --disable-man-pages CFLAGS="-I$HOME/mips-package/elfutils-0.171/release/include -I$HOME/mips-package/popt-1.16/release/include" LDFLAGS="-L$HOME/mips-package/elfutils-0.171/release/lib -L$HOME/mips-package/popt-1.16/release/lib -Wl,-rpath=$HOME/mips-package/elfutils-0.171/release/lib" PKG_CONFIG_PATH=$HOME/mips-package/pkg-config

Dependency: elfutils, popt, glib (在此之前都需要安裝, 交叉編譯均差不多)

Glib可參考此文章
https://blog.csdn.net/absurd/article/details/646993
該作者有介紹交叉編譯遇到的問題與解決。

(2) tools/perf

Babeltrace準備好(同時也有utilelf, glib等mips版本),就可以直接編譯mips版本Perf

make ARCH=mips CROSS_COMPILE=mipsel-linux-gnu- LIBBABELTRACE=1 LIBBABELTRACE_DIR=$HOME/mips-package/babeltrace-stable-2.0/release/ EXTRA_CFLAGS="-EL -I$HOME/mips-package/elfutils-0.171/release/include -I$HOME/mips-package/glib-2.56.1/release/include" LDFLAGS="-L$HOME/mips-package/elfutils-0.171/release/lib -L$HOME/mips-package/glib-2.56.1/release/lib -Wl,-rpath=$HOME/mips-package/glib-2.56.1/release/lib"

可能會遇到
libperf.a(libperf-in.o): In function `event_class_add_field':
/home/oscar/mips/tools/perf/util/data-convert-bt.c:665: undefined reference to `bt_ctf_validate_identifier'
/home/oscar/mips/tools/perf/util/data-convert-bt.c:665: undefined reference to `bt_ctf_validate_identifier'

是因為Babeltrace的bt_ctf_validate_identifier並沒有真正實作,而是bt_validate_identifier同時只有bt_identifier_is_valid可使用,所以需要修改util/data-convert-bt.c 改使用bt_identifier_is_valid()。

這樣就可以編出mips版本perf tool。

參考來源:
(1) https://stackoverflow.com/questions/43576997/building-perf-with-babeltrace-for-perf-to-ctf-conversion

沒有留言:

張貼留言