目前在做一个程序的性能分析,该程序主要是接受udp消息后进行处理,然后在通过udp发送出去。
但是在做压力测试的时候,发现其性能较差(该程序为单线程)。
使用perf进行性能分析。
使用命令:
perf record -e cpu-clock -g -p pid
perf script -i perf.data &> perf.unfold
./stackcollapse-perf.pl perf.unfold &> perf.folded
./flamegraph.pl perf.folded > perf1.svg
生成火焰图后分析,发现函数__write_nocancel 占用在14%,但是没有该函数的调用关系,不知道是谁调用了这个系统函数。
目前了解到write和print函数都会调用到这个系统函数。但是程序中并没有直接调用这两个函数。
问题:
1、udp发送使用的函数为sendto是否会调用该系统函数?
2、如何将该函数的函数调用关系显示出来?
其中mgcsipsa为被分析的进程。