#BPF

golang 常见类型字节数

ebpf 分析golang程序时,离不开对参数大小的判断。这里列出来一些基本类型的大小,并通过汇编对应验证函数的方式来肯定判断结果。

信息

这里列出基本类型及其作为参数传递时,占用的空间大小如下表。

类型长度说明
指针8B64位机为 8Byte, 32位机位4Byte
context16Binterface 类型。其中,前8B是类型信息,后8B是对象的指针信息
interface16B2 个指针,详见draveness-go-interface,或者 runtime/runtime2.go iface/eface 定义
int648B-
int8B64位机为 8Byte, 32位机位4Byte
string16B8B 地址 + 8B string长度
slice24B8B地址 + 8B slice 成员数量 + 8B slice capability
func8Bfunc 作为函数参数时,传递的是 func 的地址

需要注意的是,作为函数参数传递时,golang会对参数按照 8B 进行对齐。

·2min·李岩
golang 常见类型字节数

challenges of bpf tracing go

·1min·李岩
challenges of bpf tracing go

centos 安装docker并构建golang镜像

工作需要(抛弃了kubectl搞一套环境的方法),需要在centos8上构建一套docker镜像并运行golang程序。这里记录下docker安装及golang程序打包镜像的过程。

·1min·李岩
centos 安装docker并构建golang镜像

eBPF及其对可观测的意义【译文】

最近在做 eBPF 的技术调研。看到很多对 eBPF 的介绍。为了加强对内容的理解,笔者选择了其中的一篇尝试翻译。本着便于笔者自己理解的角度,很多内容加入了自己的一些理解,因此并不能算是严格意义上的“翻译”。文章涉及了 eBPF 的介绍、优势、不足,算是一篇 eBPF 的很好的介绍。现在把它贴上来,算是纪念自己的第一篇“译文”。
原文地址:What Is eBPF and Why Does It Matter for Observability?

·11min·李岩
eBPF及其对可观测的意义【译文】

centos 构建 local-k8s

工作原因,需要安装一个 local-k8s。中间碰了很多坑,做个记录。 环境:Linux test 4.18.0-193.el8.x86_64

·2min·李岩
centos 构建 local-k8s