ns3-性能分析

导入

ns3虽然底层都是c++,但是有时候做起仿真来,还是要跑几十个小时,大大延缓了开发速度。

因此,对ns3进行性能分析是十分必要的。

下面,将说明两种性能分析工具gprof和operf,在ns3中的使用。

一、gprof

这个工具在linux中常用。在ns3中配置使用它的步骤:

1:在~/ns-allinone-3.29/ns-3.29下wscript文件插入代码,代码一共有两段,在文件中的位置很好确定。

 1  opt.add_option('--enable-gprof',
 2                    help=('Enable code profiling.'),
 3                    action="store_true", default=False,
 4                    dest='enable_gprof')
 5     if Options.options.enable_gprof:
 6         env['GPROF_ENABLED'] = True
 7         env.append_value('CCFLAGS', '-pg')
 8         env.append_value('CFLAGS', '-pg')
 9         env.append_value('CXXFLAGS', '-pg')
10         env.append_value('LINKFLAGS', '-pg')

 

配置ns3

./waf configure -d optimized --enable-examples --enable-static --enable-gprof

./waf build

如果跳过“ --enable-static”,最终将仅对主程序进行性能分析,而不会对库代码进行性能分析。不过使用该选项,可能导致NS3占用高达25GB的存储空间。

optimized的作用:翻wscript结果看到了编译选项,先跳过这里,知道是个优化编译就行了

运行一个例子

~/ns-allinone-3.29/ns-3.29/example/tcp下的例子tcp-large-transfer.cc,拷到~/ns-allinone-3.29/ns-3.29/scratch目录中,运行以下命令

./waf --run scratch/tcp-large-transfer

例子运行后,在~/ns-allinone-3.29/ns-3.29/下生成文件gmon.out,运行以下命令

gprof build/scratch/tcp-large-transfer gmon.out > analysis.txt

等待约1分钟,得到analysis.txt文件,该文件即为gprof工具测试tcp-large-transfer.cc例子的性能分析报告。

解读性能报告

如何阅读报告:

 

二、operf

在官方的HOWTO use oprofile中提到了如何使用operf进行性能分析。

https://www.nsnam.org/wiki/HOWTO_use_oprofile

 

三、比较

两种性能分析工具,分析的结果怎么样呢,下面运行first.cc,进行对比。

1gprof

 

 

2 operf

 

 

 

posted @ 2021-05-29 22:31  eahy  阅读(671)  评论(0编辑  收藏  举报