go的profile工具

题目来源:小米

答案1:

pprof分为采样和分析两个阶段。

采样分为:堆内存采样,协程栈样本手机,CPU样本等。

采样结束后,所有pprof的样本数据最后都会以Protocol Buffers格式序列化数据并通过gzip压缩后写入文件。用户获取该文件后最终将使用go tool pprof对样本文件进行解析。go tool pprof将文件解码并还原为Protocol Buffers格式。

Profile代表一系列样本的集合,主要包含样本类型、样本数组Sample,以及表示函数、行号、文件名等调试信息的Location字段。每个Sample样本都对应一个Location id数组,每个Location id对应一个函数可以避免记录重复的信息。value是一个数组,代表调用链上函数对应的值,该值和样本的类型有关,例如CPU样本是持续时间,而内存样本是内存的大小。

pprof的重要功能是统计搜集到的样本,包括flat与cum这两个重要的指标,

除此之外,还能够以图的形式表示函数的调用链,相同的函数是图中同一个节点,图中的调用关系由两部分决定——父函数和子函数,其中箭头的方向表示父函数调用子函数。核心逻辑可以在newGraph函数中查看