注意

本文档适用于 Ceph 开发版本。

使用perf

顶部:

sudo perf top -p `pidof ceph-osd`

要捕获调用图数据:

sudo perf record -p `pidof ceph-osd` -F 99 --call-graph dwarf -- sleep 60

按调用者查看(您可以看到每个顶级函数调用什么):

sudo perf report --call-graph caller

按被调用者查看(您可以看到谁调用每个顶级函数):

sudo perf report --call-graph callee
note:

如果调用者/被调用者视图看起来相同,您可能正在

常见问题

Ceph 使用RelWithDebInfo作为其默认值CMAKE_BUILD_TYPE因此-O2 -g用于在这种情况下编译树。并且-O2优化级别-fomit-frame-pointer默认情况下。但这阻止了堆栈分析器cmake

cmake -DCMAKE_CXX_FLAGS="-fno-omit-frame-pointer"

或构建树时,可以禁用此选项:

make CMAKE_CXX_FLAGS="-fno-omit-frame-pointer"

火焰图

首先,设置好环境:

cd ~/src
git clone https://github.com/brendangregg/FlameGraph

运行 ceph,然后记录一些 perf 数据:

sudo perf record -p `pidof ceph-osd` -F 99 --call-graph dwarf -- sleep 60

然后生成火焰图:

sudo perf script | ~/src/FlameGraph/stackcollapse-perf.pl > /tmp/folded
~/src/FlameGraph/flamegraph.pl /tmp/folded > /tmp/perf.svg
firefox /tmp/perf.svg

由 Ceph 基金会带给您

Ceph 文档是一个社区资源,由非盈利的 Ceph 基金会资助和托管Ceph Foundation. 如果您想支持这一点和我们的其他工作,请考虑加入现在加入.