golang,ebpf和函数持续时间

golang,ebpf和函数持续时间,第1张

golang,ebpf和函数持续时间

这似乎是由内核和用户端之间的填充不匹配引起的。该

data_t
结构实际上是在编译时填充的,等效于以下内容

struct data_t {   u32 pid;   char padding[4];   char comm[TASK_COMM_LEN];   u64 delta;    };

如果您在Go端明确添加相同的填充,您的问题将消失:

type amebaEvent struct {    Pid uint32    Pad [4]byte    Comm [16]byte    Delta uint64}

产生:

PID COMMAND DURATION    RAW8258    a   1.000179625s    10001796258260    a   1.000158337s    1000158337

正如您在评论中提到的,另一种解决方案是使用打包C结构以删除填充

__attribute__((packed))


它与bcc上的这个问题密切相关-尽管不完全相同-https:
//github.com/iovisor/bcc/issues/2017。



欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5564795.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-14
下一篇2022-12-14

发表评论

登录后才能评论

评论列表(0条)

    保存