51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 878|回复: 0
打印 上一主题 下一主题

性能测试中的软中断高问题排查

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-14 16:21:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
性能排查对我来说一直是个比较困难的问题,本文记录一下在压测过程中软中断过高的问题。文章分两部分,第一部分是中断的基础知识,第二部分是记录一下本次的排查过程。


  1、基础知识


  1.1、中断

  中断是一种异步的事件处理机制,可以提高系统的并发能力。在计算机系统中,中断用来处理硬件设备的请求,当收到来自硬件的中断请求时,计算机会打断正在处理的进程来处理相应中断请求。

  1.2、硬中断和软中断


  由于中断请求是一个优先级非常高的请求,并会打断正在进行的进程,因此,要求中断处理程序快速高效的执行。为了满足这个要求,计算机把中断分成了两个阶段,分别为:上半部分和下半部分。

  硬中断:中断上半部分,用来快速处理中断,在中断禁止的模型下运行(不接受和处理新的中断),要求速度快,主要处理跟硬件紧密相关的或时间敏感的工作。


  软中断:中断下半部分,通常内核线程处理,延迟执行,完成整个硬中断未完成的工作。


  硬中断和软中断的其他区别包括:


  ·硬中断由外部引发,软中断是执行中断指令产生的(内核命令)

  · 硬中断可屏蔽,软中断不可屏蔽


  1.3、软中断和硬中断类型


  在计算机中,通过/proc/softirqs查看软中断的运行情况,通过/proc/interrupts查看硬中断,通过cat /proc/softirqs可以看到运行的软中断类型有:

  · HI:最高优先级的软中断类型


  · TIMER:Timer定时器的软中断


  · NET_TX:发送网络数据软中断


  · NET_RX:接收网络数据软中断


  · BLOCK:快设备软中断


  · TASKLET:tasklet机制软中断


  · SCHED:进程调度和负载均衡软中断


  · HRTIMER:高精度定时器软中断


  · RCU:RCU服务软中断


  2、软中断过高排查


  2.1、问题发现

  在一次压测过程中通top命令看到si的值不为0,打算查看一下主要的软中断类型,确定是否符合预期。



2.2、排查过程


  1) 通过watch -d cat /proc/softirqs查看软中断的变化率,可以看到变化率最大的为TIMER、NET_RX、SCHED和RCU这几类的中断,了解到TIMER、SCHED和RCU是保证调度、时钟等正常工作所需要

的,频繁变动是正常现象,那么就重点看一下NET_RX,该中断是网络发送的中断,因此,看一下网络的发送情况。




2) 通过sar -n DEV 1,查看网络情况,可以看出网络发送的数量大,而接受的少,大概率是代码中大量的调用其他服务,接下来排查代码。




3)排查代码得出结论,通过对代码的排查,发现调用中间件过多,解决办法是减少和中间件的交换,把需要的数据存到内存,以空间换时间。

  3、测试


  性能排查是一项比较难的工作了,但还是要不断的学习积累,念念不忘,必有回响。这次的排查其实也比较基础,没有遇到很难的问题,本文算是一个简单的记录吧。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 13:48 , Processed in 0.062107 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表