前言

主要介绍一下cpu如何快速定位问题。

正文

cpu 的一些性能指标:

1. cpu 使用率

cpu 使用率描述了非空闲时间占总cpu时间的百分比,根据cpu上运行任务的不同,又被分为用户cpu、系统cpu、 i/o 等待cpu、 软中断、硬中断。

用户cpu使用率,包括用户态cpu使用率,和低优先级用户态cpu 使用率,表示cpu 在用户态运行的时间的百分比。

用户cpu 使用率搞,通常说明应用程序比较繁忙。

  1. 系统cpu使用率,表示cpu在内核态运行的时间百分比(不包括中断)。系统cpu使用率高,说明内核比较繁忙。

  2. 等待i/o 的cpu使用率,通常也称为iowait,表示等待i/o 的时间百分比。 io wait高,说说吗系统与硬件设备的i/o交互时间比较长。

  3. 软中断和硬中断的cpu使用率,分布表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率搞,通常说明系统发送了大量的中断。

2. 平均负载

也就是系统的平均活跃进程数,它反应了系统的整体负债情况,主要包括三个数值,分别指过去1分钟、过去5分钟、过去15分钟的平均负载。

理想情况下,平均负载等于逻辑cpu个数,它表示cpu恰好被充分利用,一般可以大于70%。

3. 进程上下文切换

  1. 无法获取资源导致的资源上下文切换

  2. 被系统强制调度导致的非自愿上下文切换

上下文切换,本身保证了linux 正常运行的一项核心功能。但过多的上下文切换,会将原本运行进程的cpu时间,消耗在寄存器、内核栈、以及虚拟内存等数据的保存和恢复上,

缩短进程真正运行的时间,称为性能瓶颈。

用什么工具来排查呢?

几个案例总结:

  1. 平均负载案例。

先用uptime,查看系统的平均负载;而在平均负载升高后,又用mpstat和pidstat,分布观察了每个cpu 和 每个进程cpu的使用情况,进而找出导致平均负载高的进程,使用的是stress 工具。

  1. 上下文切换的案例

先用vmstat 查看系统上下文切换和中断次数。

然后通过pidstat,观察和进程的自愿上下文切换和非自愿上下文切换情况。最后通过pidstat,观察线程的上下文切换情况,找出上下文切换次数增多的根源,也就是我们的基准测试工具sysbench。

  1. 进程cpu 升高案例,先用top,然后是perf top。

  2. 短时进程问题,系统cpu搞,但是找不到进程。 可能是短时进程,崩溃等。

通过perf record 和 perf report。

短时进程可以使用execsnoop。

  1. 不可中断进程或者僵尸进程的案例。 我们先用top 观察到了iowait升高的问题,并发现了大量的不可中断进程和僵尸进程;

接着我们用dstat 发现是磁盘导致的,于实通过pidstat 找到了相关的进程。 可以用strace查看进程系统调用失了,最后通过perf分析进程调用链,发现磁盘i/o问题。

  1. 软中断案例,通过top 观察到,系统的软中断cpu 使用高。

通过top查看系统的软中断cpu使用率升高;接着查看/proc/softirqs 找到了几种变化快的软中断,通过sar命令,发现网络小包的问题。

最后用tcpdump 找出网络帧的类型和来源,确定是一个syn flood 攻击导致的。

工具表:

示例图:

下一节,内存相关。

linux 性能自我学习 ———— cpu 快速定位问题 [六]的更多相关文章

  1. 【转】一文掌握 Linux 性能分析之 CPU 篇

    [转]一文掌握 Linux 性能分析之 CPU 篇 平常工作会涉及到一些 Linux 性能分析的问题,因此决定总结一下常用的一些性能分析手段,仅供参考. 说到性能分析,基本上就是 CPU.内存.磁盘 ...

  2. Linux 性能监控之CPU&内存&I/O监控Shell脚本2

    Linux 性能监控之CPU&内存&I/O监控Shell脚本2   by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...

  3. Linux 性能监控之CPU&内存&I/O监控Shell脚本1

    Linux 性能监控之CPU&内存&I/O监控Shell脚本1   by:授客 QQ:1033553122   #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...

  4. 深挖计算机基础:Linux性能优化学习笔记

    参考极客时间专栏<Linux性能优化实战>学习笔记 一.CPU性能:13讲 Linux性能优化实战学习笔记:第二讲 Linux性能优化实战学习笔记:第三讲 Linux性能优化实战学习笔记: ...

  5. Linux性能优化从入门到实战:01 Linux性能优化学习路线

      我通过阅读各种相关书籍,从操作系统原理.到 Linux内核,再到硬件驱动程序等等.   把观察到的性能问题跟系统原理关联起来,特别是把系统从应用程序.库函数.系统调用.再到内核和硬件等不同的层级贯 ...

  6. linux性能问题(CPU,内存,磁盘I/O,网络)

    一. CPU性能评估 1.vmstat [-V] [-n] [depay [count]] -V : 打印出版本信息,可选参数 -n : 在周期性循环输出时,头部信息仅显示一次 delay : 两次输 ...

  7. Linux性能监测:CPU篇(转)

    http://os.51cto.com/art/201012/239880.htm CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 ...

  8. Linux 性能监测:CPU

    CPU 的占用主要取决于什么样的资源正在 CPU 上面运行,比如拷贝一个文件通常占用较少 CPU,因为大部分工作是由 DMA(Direct Memory Access)完成,只是在完成拷贝以后给一个中 ...

  9. 一文掌握 Linux 性能分析之 CPU 篇

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 平常工作会涉及 ...

  10. Linux性能监测:CPU篇

    CPU 也是一种硬件资源,和任何其他硬件设备一样也需要驱动和管理程序才能使用,我们可以把内核的进程调度看作是 CPU 的管理程序,用来管理和分配 CPU 资源,合理安排进程抢占 CPU,并决定哪个进程 ...

随机推荐

  1. AIGC下一步:如何用AI再度重构或优化媒体处理?

    让媒资中"沉默的大多数"再次焕发光彩. 邹娟|演讲者 编者按 AIGC时代下,媒体内容生产领域随着AI的出现也涌现出更多的变化与挑战.面对AI的巨大冲击,如何优化或重构媒体内容生产 ...

  2. 视觉slam十四讲CH4 ---李群与李代数求导

    视觉slam十四讲 ---CH4 李群与李代数求导 李群与李代数相较于CH3是比较的抽象的数学知识,这个工具的提出目的是解决一些旋转位姿描述的优化问题.本讲最终的目的是解决如何描述对旋转求导的问题. ...

  3. C++ //提高编程 模板(泛型编程 STL) //模板不可以直接使用 它只是一个框架 //模板的通用并不是万能的 //语法 //template<typename T> //函数模板两种方式 //1.自动类型推导 必须推导出一致的数据类型T,才可以使用 //2.显示指定类型 模板必须确定出T的数据类型,才可以使用

    1 //C++提高编程 模板(泛型编程 STL) 2 //模板不可以直接使用 它只是一个框架 3 //模板的通用并不是万能的 4 //语法 5 //template<typename T> ...

  4. C++ //谓词 //一元谓词 //概念:返回bool类型的仿函数称为 谓词 //如果 operator()接受一个参数,那么叫做一元谓词 //如果 operator()接受 2 个参数,那么叫做一元谓词

    1 //谓词 2 //一元谓词 3 //概念:返回bool类型的仿函数称为 谓词 4 //如果 operator()接受一个参数,那么叫做一元谓词 5 //如果 operator()接受 2 个参数, ...

  5. jquery判断滚动条是否到达顶部或者底部

    <script> $(function(){ $(window).scroll(function(){ //离顶部的距离=0 //方法一:var isTop=$(this).scrollT ...

  6. markdown 一键上传发布

    工具介绍 工具由来 对于程序员等常常需要写文档的人来说,将本地markdown文档同步到云端博客平台,是一件比较繁琐的事情,首当其冲的是,大量的本地图片需要"互联网"化,即使网络上 ...

  7. exec函数族使用说明

    exec函数不创建新进程,只用磁盘上的程序替换当前进程的正文段.数据段.堆段和栈段.然后从main函数开始运行. exec函数族使用说明 #include <unistd.h> int e ...

  8. Miracast技术详解(二):RTSP协议

    目录 RTSP概述 抓包准备 WFD能力协商(Capability Negotiation) RTSP M1 Messages RTSP M2 Messages RTSP M3 Messages RT ...

  9. 使用Java给图片添加水印

    什么是水印呢?比如使用手机拍摄一张照片的时候,照片右下角的位置显示得有日期和时间信息,那就表示一个水印. 项目开发中给图片添加水印的操作很常见,比如给图片添加日期和时间,给图片添加公司的logo之类的 ...

  10. 记录--try...catch知识补全

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 说到try...catch都觉得非常熟悉了,不就是用来捕捉代码块中的错误嘛,平时也用得比较多的.然而因为了解不够多,我的面试却栽在了一个简 ...