Linux上下文切换分析工具

命令介绍

每隔5秒输出系统总体上下文切换情况

vmstat 5

列名

含义

cs

每秒上下文切换的次数

in

每秒中断的次数

r

正在运行和等待CPU的进程数

b

不可中断睡眠状态的进程数

每隔5s输出进程上下文切换情况

pidstat -w 5

列名

含义

cswch

每秒自愿上下文切换(进程无法获取资源,等待资源)次数

nvcswch

每秒非自愿上下文切换(系统强制调度进程,争抢CPU)次数

案例分析

安装多线程测试工具sysbench

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
yum -y install sysbench

10个线程运行5分钟模拟多线程切换

sysbench --threads=10 --max-time=300 threads run

r列的正在运行和等待CPU的进程数从1上升到 8,远远超过系统CPU个数 1,意味着大量的CPU竞争。
cs列的上下文切换次数从2k上升到1660k。
us(user)和 sy(system)列的CPU使用率合上升到100%,CPU主要被内核占用。
系统正在运行和等待CPU的进程数过多导致大量的上下文切换,上下文切换又导致了系统 CPU的占用率升高。

pidstat -w -u 1

-w表示输出进程切换指标,-u表示输出CPU使用指标

sysbench占用的CPU使用率最高。

pidstat -wt 1

-wt表示输出线程的上下文切换指标

sysbench线程上下文切换次数很多。

参考资料

数据库测压工具Sysbench的安装和使用
Linux 性能优化实战

posted on 2023-02-11 16:23  王景迁  阅读(74)  评论(0编辑  收藏  举报

导航