zoukankan      html  css  js  c++  java
  • 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

     

     

     

  • 相关阅读:
    Redis 事务相关的命令有哪几个?
    是否了解字典树?
    memcached 是如何做身份验证的?
    memcached 和服务器的 local cache(比如 PHP 的 APC、 mmap 文件等)相比,有什么优缺点?
    memcached 如何处理容错的?
    memcached 的多线程是什么?如何使用它们?
    memcached 的内存分配器是如何工作的?为什么不适用 malloc/free!?为何要使用 slabs?
    memcached 如何实现冗余机制?
    memcached 最大能存储多大的单个 item?
    memcached 能接受的 key 的最大长度是多少?
  • 原文地址:https://www.cnblogs.com/zyhe/p/12116882.html
Copyright © 2011-2022 走看看