Port gprofng for RISC-V

简单介绍一下 gprofng 的功能 由于 gprofng 可以对可执行程序直接进行分析不需要重新编译源码,所以对闭源软件进行性能评测也很方便。 对 C、C++、Java 或者 Scala 程序进行性能分析 支持 Pthread、OpenMP 和 Java thread 多线程编程模型 gprofng 主要数据收集命令 gprofng collect app 运行时一般使用程序计数器(PC)采样 (Sample) 简单介绍一下 gprofng 的安装方法 直接用各大发行版的软件包管理器安装 从源码开始编译安装 https://github.com/bminor/binutils-gdb/tree/master/gprofng 简单介绍一下 gprofng 的使用方法 首先收集数据: gprofng collect app {your app} eg. gprofng collect app echo 1 上述命令会生成 test.n.er 文件夹,里面是收集的数据。 然后进行处理: gprofng display text -func -exp -head test.{times}.er/ 简单介绍一下 port 过程干了啥 添加 binutils-gdb 的 –enable-gprofng 支持的架构 configure.ac中判断是否开启构建 gprofng 的 target 里面添加 riscv64 的 1triplet。 gnu configure.ac 的介绍官网链接 虽然很短一段但是翻译过来放在我的博客文章中却可以显得我的博客很长: 新建名为 configure.ac 、包含调用 Autoconf 用来检测软件包所需或者可以使用的系统特性的宏的文件来给软件包生成 configure 脚本。 从描述上看,Autoconf 已有的宏可以检测多种特性;详见已有检测 也可以使用 Autoconf 模版来生成一般性检测宏;详见写检测 对于特殊的特性,configure.ac 可能需要手写 shell 命令;详见可移植 shell autoscan 程序可以帮助你快速入门写 configure.ac ,详见autoscan 调用; 同理在 gprofng 文件夹中的 configure.ac 中也添加 RISC-V 架构相关配置信息。 ...

xyenchi

Unmatched JavaScript 引擎 Benchmark 跑分

unmatched 的系统信息 Linux milk 5.19.2-arch1-1 #1 SMP PREEMPT Fri, 19 Aug 2022 19:44:19 +0000 riscv64 GNU/Linux python 版本 :Python 3.10.6 v8 arch riscv 的 unmatched 上面并没有 v8 直接装来用,所以需要构建一个。放一个 v8 官方网站的构建教程做参考。但是这样以我的水平并不能糊出来一个 PKGBUILD ,于是在 AUR 库找到了 v8-r 这个包,用PARU -G v8-r命令把 PKGBUILD 及相关文件获取到本地或者性能更优的编译机器。修改PKGBUILD中的arch为riscv64。参考 arch 跨平台打包教程。进行第一次 extra-riscv64-build -- -d "/tmp/cache:/var/cache/pacman/pkg",报错如下: ==> Starting prepare()... -> Fetching V8 code /build/v8-r/src/depot_tools/vpython3: line 45: /build/v8-r/src/depot_tools/.cipd_bin/vpython3: No such file or directory ==> ERROR: A failure occurred in prepare(). Aborting... 在谷歌源码站找到vpython3。第 45 行的上下文: ...

xyenchi

Unmatched 编译运行 Fpmark

现有如下两块 unmatched 用来跑 benchmark, 一台叫 lemontea, 另一台叫 milk 。 lemontea 系统信息,clang 版本,gcc 版本如下: [root@lemontea ~]# uname -a Linux lemontea 5.18.3-arch1-1 #1 SMP PREEMPT Sun, 12 Jun 2022 18:42:25 +0000 riscv64 GNU/Linux [root@lemontea ~]# clang -v clang version 13.0.1 Target: riscv64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/bin Found candidate GCC installation: /usr/bin/../lib/gcc/riscv64-unknown-linux-gnu/12.1.0 Selected GCC installation: /usr/bin/../lib/gcc/riscv64-unknown-linux-gnu/12.1.0 [root@lemontea ~]# gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/riscv64-unknown-linux-gnu/12.1.0/lto-wrapper Target: riscv64-unknown-linux-gnu Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-linker-build-id --enable-lto --disable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-werror --enable-link-serialization=1 Thread model: posix Supported LTO compression algorithms: zlib zstd gcc version 12.1.0 (GCC) milk 系统信息,clang 版本,gcc 版本如下: ...

xyenchi