- 查看上下文切换
A context switch (also sometimes referred to as a process switch or a task switch) is the switching of the CPU (central processing unit) from one process or thread to another.- 引起上下文切换原因
- 当前任务的时间片用完之后,系统CPU正常调度下一个任务;
- 当前任务碰到IO阻塞,调度线程将挂起此任务,继续下一个任务;
- 多个任务抢占锁资源,当前任务没有抢到,被调度器挂起,继续下一个任务;
- 用户代码挂起当前任务,让出CPU时间;
- 硬件中断;
LMbench
是带宽(读取缓存文件、内存拷贝、读写内存、管道等)和反应时间(上下文切换、网路、进程创建等)的评测工具;micro-benchmark contextswitch
可以测试不同的CPU在最少多少ns可以进行一次上下文件切换,再转化为秒,我们可以确认该处理器每可以进行的上下文件切换数 ,该工具的使用可以参看tsuna的blog。sar -w
,这个只是能看出主机上总的上下文件切换的情况proc/s
Total number of tasks created per second.cswch/s
Total number of context switches per second.
- pidstat -w 每个进程的context switching情况
- pidstat -wt 细分到每个threads
grep ctxt /proc/$pid/status
voluntary_ctxt_switches
: 41 #自愿的上下文切换nonvoluntary_ctxt_switches
: 16 #非自愿的上下文切换cswch/s
: 每秒任务主动(自愿的)切换上下文的次数,当某一任务处于阻塞等待时,将主动让出自己的CPU资源。nvcswch/s
: 每秒任务被动(不自愿的)切换上下文的次数,CPU分配给某一任务的时间片已经用完,因此将强迫该进程让出CPU的执行权。
cat /proc/stat|grep ctxt
- 引起上下文切换原因
0条评论