前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux系统性能监控与优化(2)–cpu

linux系统性能监控与优化(2)–cpu

作者头像
小小科
发布2018-05-03 12:48:36
1.9K0
发布2018-05-03 12:48:36
举报
文章被收录于专栏:北京马哥教育

cpu scheduler负责调度两种资源:线程和中断 按优先级从高到低: 1)中断:设备告诉内核它们已经处理完成:如网卡发送完成了一个packet或是硬盘完成了一个io请求。 2)内核进程: 3)用户进程:

## 1. context switches:上下文切换

大多数的处理器在同一时刻只能运行一个进程,在多核处理器中,linux内核将每一个core当作一个独立的处理器。 一个内核可以同时运行50~50000个进程。如果只有一个cpu,内核必须负责高度和平衡这些进程。 每个线程将会分配一个时间片,直到这个线程的时间片用完,或是被更高优先级的线程抢占,它才会被重新放回cpu队列。切换线程的过程就是context switch。 每进行一次context switch,就要花费一些资源来将处理CPU寄存器和加入cpu队列。context switch越高,则内核调度的工作负担越大。

## 2.run queue

每个cpu都有一个运行队列。线程,要么在sleep状态(阻塞并等待IO),要么在运行状态。运行队列越长,则等待cpu处理这个线程的时间越长。 load就是用来描述运行队列的。它的值等于当前正在处理的线程+运行队列里面的线程。 比如当前系统核数是2,有两个线程正在执行行,还有4个线程在运行队列里面,那么它的load=2+4

## 3.cpu utilizaion

CPU的利用率。包含: user time: 用户空间的使用时间 system time: 内核空间的使用时间 wait io: 等待IO的时间(阻塞并等待IO) idle: 空闲时间

## 4.cpu性能监控

正常情况下的值: run queues: 每个处理器的run queue长度要<=3 cpu利用率: 56%-70%的user time 30%-35%的system time 0%-5%的idle time context switches:这个值与cpu利用率相关

## 5.cpu性能监控相关工具

vmstat,mpstat:

## 6.性能排查实例

实例1:

高的中断数量,少的上下文切换数量,说明是单个进程在访问硬件设备。 user time消耗了85%的时间,并且上下文切换少说明是可能是单个应用造成的。 实例2:

上下文切换大于中断,说明上下文切换花费的时间过多。 wa过多,表示是在等待IO。 可能是因为大量线程等待IO,需要将线程切换出去。

实例3: CPU0,CPU1正在处理cpu密集型的进程 CPU2空闲 CPU3处理内核和其它系统函数

ps -psr可以看到哪些进程在哪个核心运行 ps -eo pid,ni,pri,pcpu,psr,comm

## 7.总结:

1)每个核的run queue <=3 2)cpu利用率:用户空间(70%)内核空间(30%) 3)如果内核空间战用过多,很可能是负荷过重,内核花太多的资源在进行优先级调度 4)running CPU bound process(绑定CPU) always get penalized while I/O process are rewarded;?

来源链接:http://www.trueeyu.com/?p=1749 网摘文章,如有问题,请联系我们

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
应用性能监控
应用性能监控(Application Performance Management,APM)是一款应用性能管理平台,基于实时多语言应用探针全量采集技术,为您提供分布式性能分析和故障自检能力。APM 协助您在复杂的业务系统里快速定位性能问题,降低 MTTR(平均故障恢复时间),实时了解并追踪应用性能,提升用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档