k8s pod vm causes host to lag
k8s pod vm causes host to lag
perf sched record sleep 10
1 |
|
perf sched latency
1 |
|
1 |
|
perf sched latency -s max
1 |
|
perf sched latency -s avg
1 |
|
perf sched latency -s switch
1 |
|
perf sched latency -s runtime
1 |
|
perf stat -e 'sched:sched_switch' -a -- sleep 10
1 |
|
分析
perf stat -e 'sched:sched_switch'
输出
1. 关键指标
sched:sched_switch
次数:608,122 次(10 秒内)- 上下文切换频率:约 60,812 次/秒
2. 正常范围参考
- 一般服务器:通常 1,000~10,000 次/秒(取决于负载)。
- 高负载系统:可能达到 20,000~50,000 次/秒。
- 当前值(60k/s):显著偏高,可能存在调度瓶颈。
vmstat 1
1 |
|
从 vmstat 1
的输出来看,系统的整体负载和资源使用情况似乎较为正常,但结合之前
perf sched latency
中观测到的高调度延迟(如
kubelet
最大延迟 10.7
秒),需要进一步深入分析。以下是关键点解读和排查建议:
1. vmstat
关键指标分析
CPU
使用率(us
/sy
/id
)
us
(用户态):1% 左右,正常。sy
(内核态):1% 左右,无异常飙升。id
(空闲):98%~99%,CPU 资源充足。
矛盾点:CPU 空闲率高,但perf sched
显示高调度延迟,可能是 锁竞争 或 进程阻塞在 I/O 等待(尽管wa
为 0)。
上下文切换(cs
)
cs
:约 40k~80k 次/秒,偏高(通常建议低于 10k/秒)。
可能原因:- 大量线程频繁切换(如 Kubernetes 相关进程)。
- 锁竞争导致无效切换。
中断(in
)
in
:30k~50k 次/秒,非常高(正常应低于 1k/秒)。
可能原因:- 网络或磁盘中断风暴(如高频率网络包或磁盘 I/O)。
- 虚拟化层(如 KVM)的中断处理瓶颈。
I/O
情况(bi
/bo
)
bi
(块设备读取):波动较大(0~14k blocks/s),可能存在突发磁盘读操作。
bo
(块设备写入):偶发峰值(如 35k blocks/s),需检查日志或持久化操作。
dstat -tam
1 |
|
从 dstat -tam
的输出来看,系统的整体资源使用率较低(CPU
空闲 idl
在 90%~98%),但结合之前的
perf sched latency
和 vmstat
数据,高调度延迟问题可能源于局部资源争用或内核态瓶颈。以下是关键分析和排查建议:
1. 关键指标解读
(1) CPU 使用率
usr
(用户态):1%~2%,正常。sys
(内核态):0%~1%,无异常。idl
(空闲):90%~98%,CPU 资源充足。
矛盾点:高空闲率与高调度延迟并存,说明问题可能发生在 内核调度器、锁竞争或中断处理 等非 CPU 算力层面。
(2) 内存和 I/O
- 内存:
used
:50GB,free
:125GB,无内存压力。
buf/cach
:约 2.4GB/9.9GB,正常。
- 磁盘 I/O(
dsk/total
):- 读/写波动较大(如 29MB/s 读、3.8MB/s 写),但
wai
(I/O 等待)为 0%,磁盘无阻塞。
- 读/写波动较大(如 29MB/s 读、3.8MB/s 写),但
- 网络(
net/total
):- 流量峰值较高(如 47MB/s 接收、16MB/s 发送),可能触发网络中断。
(3) 系统调用和中断
int
(中断):27k~48k 次/秒,偏高(正常应 <1k/秒)。
csw
(上下文切换):40k~77k 次/秒,偏高。
可能原因:- 高频网络中断(如 Pod 间通信或 Kube API 调用)。
- 锁竞争导致线程频繁切换(如
kubelet
或containerd
内部锁)。
- 高频网络中断(如 Pod 间通信或 Kube API 调用)。
perf stat -e 'kvm:*' -a -- sleep 10
1 |
|
1 |
|
perf kvm stat live
1 |
|
cat /prco/interrupts
1 |
|
/proc/softirqs
1 |
|
- NET_RX (网络接收) 的计数在多个 CPU 上特别高,尤其是
CPU 9(
3230100
)和 CPU 7(2544705
),说明网络流量主要由这些 CPU 处理。 - SCHED (调度) 在所有 CPU 上的计数较高,说明进程切换较频繁。
- TIMER (定时器) 在所有 CPU 上都很活跃,这与定时器事件的触发相关。
- TASKLET 主要集中在 CPU 6 和 CPU 7,可能与网络或存储驱动相关。
- BLOCK (块设备) 的计数相对较低,说明磁盘 I/O 负载不高。
- HI、HRTIMER、IRQ_POLL 的计数基本为零或很低,说明高优先级中断、定时器触发的软中断和中断轮询都不是系统的主要负载。
1 |
|
1 |
|

1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
1 |
|
k8s pod vm causes host to lag
https://realwujing.github.io/linux/kernel/task/bugs/k8s-pod-vm/k8s pod vm causes host to lag/