3. 搞玄学?看看进程切换
看看进程切换
$ vmstat 2
procs ------------memory------------ --swap-- -----io---- ---system---- ---cpu--
r b swpd free buff cache si so bi bo in cs us sy id
39 0 0 10823876 2415652 46400008 0 0 28828 3775 190521 308902 16 27 54
8 6 0 10856772 2415652 46400248 0 0 23784 2222 186975 310175 12 18 69
5 0 0 10876804 2415656 46400552 0 0 28852 3420 182219 295182 12 25 59
29 0 0 10845268 2415656 46401136 0 0 24908 3680 189906 308567 14 24 59
26 1 0 10891356 2415656 46401156 0 0 20640 4059 187160 309603 14 23 62
3 0 0 10946284 2415656 46401596 0 0 17920 3622 185902 309350 13 21 65
15 1 0 10894820 2415656 46402168 0 0 19968 4660 180810 302132 14 29 57
6 1 0 10922464 2415656 46402156 0 0 7680 1375 171290 297429 8 11 81vmstat 能汇报操作系统当前的状态, 看上面的第二行, 不同的参数划分成不同类下的指标
进程相关(procs指标)
r = ready. 就绪进程的数量
b = blocked. 不可中断的进程数量
内存相关(memory指标)
swpd = swapped. 虚拟内存使用量
free 还有多少内存可用
进程中断数量(system指标)
in = interrupted. 中断数量(包含进程/线程的中断), 包括因为等待IO, 以及时间片到期等因素
cs = context switch. 上下文切换数量
pidstat 能汇报上下文切换的情况:
cswtch: context switch, 每秒上下文切换次数
nv-cswtch: non-voluntary-context-switch, 每秒非自愿上下文切换次数(指时间片到期)
与进程相关的API
exec: 执行一个新任务, 只不过使用另一个App的镜像
fork: 出一个子进程, 此时父进程如果
不等子进程就直接退出, 子进程全都变成孤儿进程变成1号进程的子进程. 这招我们在pause容器的设计的时候说过, 我们需要pause作为1号进程来负责收集并妥善给所有孤儿进程善后
不使用wait来收集子进程的信息, 故而子进程的进程描述符依旧留在操作系统中, 占用PID信息
Last updated
Was this helpful?