使用pprof收集k3s性能数据的疑问

环境信息:
K3s 版本: 1.28.2+k3s1

节点 CPU 架构、操作系统和版本:Linux 6.8.0-40-generic #40~22.04.3-Ubuntu SMP PREEMPT_DYNAMIC Tue Jul 30 17:30:19 UTC 2 x86_64 x86_64 x86_64 GNU/Linux

集群配置: 1 server,1 agent

问题描述:

我正在使用pprof工具收集k3s集群的内存消耗情况,就像在k8s中那样,我使用命令go tool pprof http://127.0.0.1:8001/debug/pprof/heap,获得了内存使用的快照(在server节点,全新创建的一个k3s集群),大约稳定在 120MB 左右,但是我使用top命令获得的内存大小在 430MB左右。
我明白会有一定的差异,但是这个差异是否太大了?有人使用pprof进行过相关工作吗?
还有一个问题,我知道在k3s中,不能像k8s那样直接使用pprof获取各组件的端口来获得不同组件的性能(kubelet等),如果我需要得到k3s中各组件的性能表现,有没有可用的方法?


复现步骤:

  • 安装 K3s 的命令:

预期结果:

实际结果:

附加上下文/日志:

日志


问题似乎与pprof收集内存数据的原理有关,pprof只显示当前堆内存的分配情况,而top命令的RES指标包含了堆、栈、内存映射、IO 缓冲区等内存使用。如果有人在使用pprof分析k3s集群的内存占用情况,欢迎一起讨论!~