首页 > 系统相关 >linux 性能自我学习 ———— cpu 快速定位问题 [六]

linux 性能自我学习 ———— cpu 快速定位问题 [六]

时间:2023-06-04 09:33:27浏览次数:80  
标签:上下文 中断 定位问题 切换 linux 进程 使用率 cpu

前言

主要介绍一下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
From: https://www.cnblogs.com/aoximin/p/17453800.html

相关文章

  • Linux会替代Windows吗?
    Windows用户们,去还是留?Windows依然是高居榜首的桌面操作系统,占据90%以上的市场份额,远超macOS和 Linux 。从数据来看,尽管linux并不是Windows的头号接班人,但近几年越来越多用户转向Ubuntu、LinuxMint等发行版,的确为Linux带来了不小的增长。面对Windows10发布......
  • Linux会替代Windows吗?
    Windows用户们,去还是留?Windows依然是高居榜首的桌面操作系统,占据90%以上的市场份额,远超macOS和 Linux 。从数据来看,尽管linux并不是Windows的头号接班人,但近几年越来越多用户转向Ubuntu、LinuxMint等发行版,的确为Linux带来了不小的增长。面对Windows10发布......
  • Linux会替代Windows吗?
    Windows用户们,去还是留?Windows依然是高居榜首的桌面操作系统,占据90%以上的市场份额,远超macOS和 Linux 。从数据来看,尽管linux并不是Windows的头号接班人,但近几年越来越多用户转向Ubuntu、LinuxMint等发行版,的确为Linux带来了不小的增长。面对Windows10发布......
  • linux开通端口命令
    如下(1)开通防火墙:systemctlstartfirewalld(2)开放指定端口:firewall-cmd--zone=public--add-port=1935/tcp--permanent(3)重启防火墙:firewall-cmd--reload(4)查看端口号:netstat-ntlp//查看当前所有tcp端口·(5)开放端口:mysql(3306),nginx,微服务访问端口end......
  • 网安--Linux软件安装
    1、脚本和程序的区别不需要编译:javascript、python、ruby需要编译:c、c++、swift、kotlin、go。。。。解释型:边解释边执行编译型:计算机可以直接执行Linux派系源码安装:红帽:make1.tar包解压缩解压并释放源代码包到指定的目录2../config配置设置安装目录安装模块等选项......
  • Linux进程间通信源码分析
    概览这篇文章从内核源码的角度整理一下Linux的进程间通信机制。众所周知,Linux操作系统的通信机制有以下几种:信号管道(分为匿名管道和有名管道)信号量共享内存消息队列Socket本文主要内容包括其中前五个。其中信号量、共享内存、消息队列在Linux中有两套API,实现方式大不......
  • linux 中awk命令实现输出匹配字符的上下若干行
     001、[root@PC1test3]#lstest.txt[root@PC1test3]#cattest.txt##测试数据jjjjkkkgenejjjddddyyyiiiipppffff999genettteeeemmmaaaannn[root@PC1test3]#awk'BEGIN{idx=0}{ay1[NR]=$0;if($1=="......
  • linux 计算机基础
    1.  GPL、BSD、MIT、Mozilla、Apache和LGPL的区别  GPLGPL许可证的核心:允许任何人观看、修改,并散播程序软件里的原始程序码,条件是如果你要发布修改后的版本就要连源代码一起公布,不允许修改后和衍生的代码做为闭源的商业软件发布和销售。Linux就是采用了GPL协议。......
  • 【Linux中断】Linux系统中断机制简述
    Linux中断Linux中断处理过程1.使能中断,初始化相应的寄存器2.注册中断服务函数,也就是向irqTable数组的指定标号处写入中断服务函数3.中断发生以后进入IRQ中断服务函数,IRQ的中断服务函数在irqTable里面查找具体的中断处理函数,找到以后执行相应的中断处理函数Linux中断处理API函......
  • I/O密集型应用模型 数据密集型应用 Node对CPU密集型的场景不够友好
    语雀https://help.aliyun.com/document_detail/193189.html更新时间:2022-11-2818:16产品详情相关技术圈 我的收藏本文介绍如何通过函数计算,解决语雀CPU密集场景下,进程被阻塞等问题。客户介绍语雀是一个专业的云端知识库,用于团队的文档协作。现在已经是阿里巴......