Tracing 系统

1. ns-3是基于C++语言开发的软件,保留了C++中标准的输入输出机制:std::cin<<;std::cout<<;

但是,从长远可用性来看,使用这种方式不是非常令人满意。因为随着自己在代码中增加更多的输出语句,处理大量的输出信息非常复杂。

2. 日志系统Logging也可以用于输出信息。它和C++标准输入输出的不同在于,通过Logging系统可以控制输出等级。

3. 无论是标准C++输出还是Logging系统输出,都仅仅适合非常小的程序。

因为当程序不断增加时,打印语句和控制输出格式将变得非常艰难,即使能够得到想要的输出结果,那么分析这么多条复杂的信息也将变得没有可能。(亲身体验,大部分时间都用与整理分析数据了。)

所以,ns-3需要提供一种机制,这种机制允许用户进入系统内核来获取所需要的信息,前提是不改变内核代码和不用再次编译。更好的方式是,当用户感兴趣的信息发生改变时,系统通知用户对信息进行处理,而不是深入到系统内核。

4. 下面介绍的Tracing系统机制就是ns-3提供的用来解决上述问题的一种方法。

ns-3 Tracing系统大体分为3个部分:Tracing Sources ,Tracing Sinks和将Tracing Sources和Tracing Sinks关联在一起的方法。

Tracing Sources是一个实体,它可以用来标记仿真中发生的时间,也可以提供一个访问底层数据的方法。例如,当一个网络设备或网卡收到一个网络分组时 ,Tracing Source可以指示并提供一个途径将分组的内容传送给对该分组感兴趣的Tracing Sink。还有,Tracing Sources还可以在感兴趣的状态发生变化时给出相应的指示。例如,TCP网络协议模块中的拥塞窗口发生变化时,Tracing Sources会给出指示。

Tracing Sources本身是起不到任何作用的,只有当它和一段有实际功能的代码相关联时才有意义,这段代码就是使用Tracing Sources提供的信息来做相关事务。使用或者说消费Tracing Sources提供信息的实体就称为Tracing Sink。换句话说,Tracing Sources提供信息,而Tracing Sink消费信息,它们2个之间的关系可以比喻为生产者和消费者之间的关系。一个Tracing Sources生产的信息可以没有Tracing Sink消费,也可以一个或多个Tracing Sink消费,它们之间是一对多的关系。所以,单独使用Tracing Sources或者单独使用Tracing Sink是没有任何意义可言的,而针对不同用户给出的Tracing Sink来处理Tracing Sources产生的信息时得出的结果也是不同的,也就是说用户可以根据自己的需求给出不同的Tracing Sink。

时间: 2024-11-04 21:01:25

Tracing 系统的相关文章

ns3的输入输出奥秘(三) Tracing系统

Tracing系统 (1)ASCII Tracing 还是以myfirst.cc为例子 可以在Simulator::Run()前面加上 AsciiTraceHelper ascii; pointToPoint.EnableAsciiAll(ascii.CreateFileStream("myfirst.tr"); 编译完成后可以在 ns-3.25里面看到文件 myfirst.tr 通过cat命令可以看到 我们之前是发送的一个分组大小是1024字节,这里更详细的之处了 包含了 20个字节

《转》从0到100——知乎架构变迁史

转载自infoQ 也许很多人还不知道,知乎在规模上是仅次于百度贴吧和豆瓣的中文互联网最大的UGC(用户生成内容)社区.知乎创业三年来,从0开始,到现在已经有了100多台服务器.目前知乎的注册用户超过了1100万,每个月有超过8000万人使用:网站每个月的PV超过2.2亿,差不多每秒钟的动态请求超过2500. 在ArchSummit北京2014大会上,知乎联合创始人兼 CTO 李申申带来了知乎创业三年多来的首次全面技术分享(幻灯片下载).本文系根据演讲内容整理而成. 初期架构选型 在2010年10

红帽Linux故障定位技术详解与实例(2)

红帽Linux故障定位技术详解与实例(2) 2011-09-28 14:26 圈儿 BEAREYES.COM 我要评论(0) 字号:T | T 在线故障定位就是在故障发生时, 故障所处的操作系统环境仍然可以访问,故障处理人员可通过console, ssh等方式登录到操作系统上,在shell上执行各种操作命令或测试程序的方式对故障环境进行观察,分析,测试,以定位出故障发生的原因. AD:2014WOT全球软件技术峰会北京站 课程视频发布 3.内核故障情形及处理 (1)内核panic panic是内

spring cloud 学习(8) - sleuth &amp; zipkin 调用链跟踪

业务复杂的微服务架构中,往往服务之间的调用关系比较难梳理,一次http请求中,可能涉及到多个服务的调用(eg: service A -> service B -> service C...),如果想分析各服务间的调用关系,以及各服务的响应耗时,找出有性能瓶颈的服务,这时zipkin就派上用场,它是Twitter公司开源的一个tracing系统,官网地址为: http://zipkin.io/ , spring cloud可以跟它无疑集成. 使用步骤: 一.微服务方 1.1 添加依赖jar包 c

从0到100——知乎架构变迁史

也许很多人还不知道,知乎在规模上是仅次于百度贴吧和豆瓣的中文互联网最大的UGC(用户生成内容)社区.知乎创业三年来,从0开始,到现在已经有了100多台服务器.目前知乎的注册用户超过了1100万,每个月有超过8000万人使用:网站每个月的PV超过2.2亿,差不多每秒钟的动态请求超过2500. 在ArchSummit北京2014大会上,知乎联合创始人兼 CTO 李申申带来了知乎创业三年多来的首次全面技术分享(幻灯片下载).本文系根据演讲内容整理而成. 初期架构选型 在2010年10月真正开始动手做知

ns3 Tutorial 中的日志模块(翻译)

转载地址:http://blog.sina.com.cn/s/blog_8ecca79b0101d7fe.html 1  日志模块的使用 在运行 first.cc 脚本时,我们已经简单了解了日志模块.现在,我们将更深入地了解日志子系统是为哪些用户案例设计的. 1.1 日志概述 很多大型系统支持某种消息记录功能,ns3 也不例外.在某些情况下,只有错误消息会被记录到操作控制台(在基于 Unix 的系统中通常是标准错误输出).在其他系统中,警告消息可能跟详细的信息消息一起被输出.在某些情况下,日志功

9、ns-3内核

在官方文档ns-3-manual.pdf中,整个框架图: v 随机变量 伪随机生成器pseudo-random number generator (PRNG). 默认情况下,ns-3仿真程序使用固定种子和运行数字,它们分别存在全局变量g_rngSeed 和 g_rngRun中,在ns-3.14版本以后,ns3::RandomVariableStream 代替ns3::RandomVariable,但是底层不变. 可用ns3::RngSeedManager类来控制种子的属性.在开始时ns3::Rn

6、ns-3数据跟踪

两类跟踪技术:一类是直接将执行过程显示在命令行中,有助于调试仿真脚本,ns-3用Logging系统.另一类是更为常用的将采集到的数据直接存放在一个文件中,以便后期的处理与分析,ns-3使用的是Tracing系统. 1.Logging系统 v 有7个等级,有低到高,高的包含低的消息: LOG_ERROR——记录错误信息 LOG_WARN——记录警告信息 LOG_DEBUG——记录一些调试信息 LOG_INFO——记录一些程序相关的信息 LOG_FUNCTION——当有函数被调用时,该调用信息就被记

全球直播的罗胖跨年演讲背后技术支撑故事——罗辑思维首席架构师方圆访谈

导读:最近几年,知识付费型产品纷纷登上舞台,大家可能了解过最近的罗辑思维的跨年活动,或者也用过得到 app 来进行新知识学习.对于得到这样的产品,背后的技术挑战及经验外界了解不太多,恰逢罗辑思维首席架构师方圆作为中间件论坛的出品人参加 2017 年 12 月的 GIAC 大会,高可用架构对其进行了采访.方圆,罗辑思维首席架构师,曾先后在 Cisco,新浪微博从事基础架构研发工作.十多年一直专注于后端技术的研发,在消息通信,分布式存储等方向有着丰富的经验.个人技术兴趣广泛,主要专注 Go/Java