- 通过htop查看cpu使用率,看到哪个进程占用的cpu比较多,然后在看vmstat.看到上下午切换cs的次数很高,在通过pidstat查看是不是sys bench引起的,最后在看看/proc/interrupts 看看是什么中断引起的,最后确认是上下文切换过多引起的性能问题
- 过多上下文切换会缩短进程运行时间
- vmstat 1 1:分析内存使用情况、cpu上下文切换和中断的次数。cs每秒上下文切换的次数,in每秒中断的次数,r运行或等待cpu的进程数,b中断睡眠状态的进程数。
- pidstat -w 5:查看
- 每个进程详细情况。cswch(每秒自愿)上下文切换次数,如系统资源不足导致,nvcswch每秒非自愿上下文切换次数,如cpu时间片用完或高优先级线程
- 案例分析:
- sysbench:多线程的基准测试工具,模拟context switch
- 终端1:sysbench --threads=10 --max-time=300 threads run
- 终端2:vmstat 1:sys列占用84%说明主要被内核占用,ur占用16%;r就绪队列8;in中断处理1w,cs切换139w==>等待进程过多,频繁上下文切换,内核cpu占用率升高
- 终端3:pidstat -w -u 1:sysbench的cpu占用100%(-wt发现子线程切换过多),其他进程导致上下文切换
- watch -d cat /proc/interupts :查看另一个指标中断次数,在/proc/interupts中读取,发现重调度中断res变化速度最快
- 总结:cswch过多说明资源IO问题,nvcswch过多说明调度争抢cpu过多,中断次数变多说明cpu被中断程序调用
- cs数值其实取决于系统本身的 CPU 性能。如果系统的上下文切换次数比较稳定,那么从数百到一万以内,都应该算是正常的。但当上下文切换次数超过一万次,或者切换次数出

本文通过htop、vmstat、pidstat和/proc/interrupts等工具,分析了CPU性能问题,尤其是上下文切换过多引起的问题。过多的上下文切换可能导致进程运行时间缩短,影响系统性能。通过观察vmstat的cs、in参数,pidstat的cswch、nvcswch指标,以及中断次数,可以定位到问题源头。自愿和非自愿上下文切换的增加分别可能与I/O问题和CPU争抢有关,中断次数增多则可能意味着CPU被中断程序占用。这些工具和分析方法有助于排查和解决性能问题。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



