案例运行环境

机器配置:2 CPU、8 GB 内存。
预先安装 docker、sysstat、sar 、hping3、tcpdump 等工具,比如 apt-get install docker.io sysstat hping3 tcpdump。

新工具

sar、 hping3 和 tcpdump:

  1. sar 是一个系统活动报告工具,既可以实时查看系统的当前活动,又可以配置保存和报告历史统计数据。
  2. hping3 是一个可以构造 TCP/IP 协议数据包的工具,可以对系统进行安全审计、防火墙测试等。
  3. tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。

操作和分析

  1. 安装环境

    # 运行Nginx服务并对外开放80端口
    $ docker run -itd --name=nginx -p 80:80 nginx
    
  2. 确认 Nginx 正常启动

    $ curl http://192.168.0.30/
    <!DOCTYPE html>
    <html>
    <head>
    <title>Welcome to nginx!</title>
    ...
    
  3. hping3模拟客户端请求

    # -S参数表示设置TCP协议的SYN(同步序列号),-p表示目的端口为80
    # -i u100表示每隔100微秒发送一个网络帧
    # 注:如果你在实践过程中现象不明显,可以尝试把100调小,比如调成10甚至1
    $ hping3 -S -p 80 -i u100 192.168.0.30
    

    后面分析过程总忘记此操作,关注问题本身

  4. top命令查看状态

    # top运行后按数字1切换到显示所有CPU
    $ top
    top - 10:50:58 up 1 days, 22:10,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 122 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
    %Cpu0  :  0.0 us,  0.0 sy,  0.0 ni, 96.7 id,  0.0 wa,  0.0 hi,  3.3 si,  0.0 st
    %Cpu1  :  0.0 us,  0.0 sy,  0.0 ni, 95.6 id,  0.0 wa,  0.0 hi,  4.4 si,  0.0 st
    ...PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND7 root      20   0       0      0      0 S   0.3  0.0   0:01.64 ksoftirqd/016 root      20   0       0      0      0 S   0.3  0.0   0:01.97 ksoftirqd/12663 root      20   0  923480  28292  13996 S   0.3  0.3   4:58.66 docker-containe3699 root      20   0       0      0      0 I   0.3  0.0   0:00.13 kworker/u4:03708 root      20   0   44572   4176   3512 R   0.3  0.1   0:00.07 top1 root      20   0  225384   9136   6724 S   0.0  0.1   0:23.25 systemd2 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kthreadd
    ...# top运行后按数字1切换到显示所有CPU
    $ top
    top - 10:50:58 up 1 days, 22:10,  1 user,  load average: 0.00, 0.00, 0.00
    Tasks: 122 total,   1 running,  71 sleeping,   0 stopped,   0 zombie
    %Cpu0  :  0.0 us,  0.0 sy,  0.0 ni, 96.7 id,  0.0 wa,  0.0 hi,  3.3 si,  0.0 st
    %Cpu1  :  0.0 us,  0.0 sy,  0.0 ni, 95.6 id,  0.0 wa,  0.0 hi,  4.4 si,  0.0 st
    ...PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND7 root      20   0       0      0      0 S   0.3  0.0   0:01.64 ksoftirqd/016 root      20   0       0      0      0 S   0.3  0.0   0:01.97 ksoftirqd/12663 root      20   0  923480  28292  13996 S   0.3  0.3   4:58.66 docker-containe3699 root      20   0       0      0      0 I   0.3  0.0   0:00.13 kworker/u4:03708 root      20   0   44572   4176   3512 R   0.3  0.1   0:00.07 top1 root      20   0  225384   9136   6724 S   0.0  0.1   0:23.25 systemd2 root      20   0       0      0      0 S   0.0  0.0   0:00.03 kthreadd
    

从第一行开始,逐个看一下:

  • 平均负载全是 0,就绪队列里面只有一个进程(1 running)。
  • 每个 CPU 的使用率都挺低,最高的 CPU1 的使用率也只有 4.4%,并不算高。
  • 再看进程列表,CPU 使用率最高的进程也只有 0.3%,还是不高呀。
  1. 我们运行下面的命令:
$ watch -d cat /proc/softirqsCPU0       CPU1HI:          0          0TIMER:    1083906    2368646NET_TX:         53          9NET_RX:    1550643    1916776BLOCK:          0          0IRQ_POLL:          0          0TASKLET:     333637       3930SCHED:     963675    2293171HRTIMER:          0          0RCU:    1542111    1590625

通过 /proc/softirqs 文件内容的变化情况,你可以发现, TIMER(定时中断)、NET_RX(网络接收)、SCHED(内核调度)、RCU(RCU 锁)等这几个软中断都在不停变化。

其中,NET_RX,也就是网络数据包接收软中断的变化速率最快。而其他几种类型的软中断,是保证 Linux 调度、时钟和临界区保护这些正常工作所必需的,所以它们有一定的变化倒是正常的。

内核选项命令参数等汇总

  • sar

    系统活动报告工具

  • hping3

    tcp/ip测试工具

  • tcpdump

    抓包工具

  • top

  • curl

  • watch

九、系统的软中断导致CPU使用率升高,我该怎么办?相关推荐

  1. linux 内核线程 软中断,Linux性能优化实战:系统的软中断CPU使用率升高,我该怎么办?(10)...

    一.坏境准备 1.拓扑图 2.安装包 在第9节的基础上 在VM2上安装hping3依奈包 wget http://www.tcpdump.org/release/libpcap-1.9.0.tar.g ...

  2. linux 使cpu使用率升高_关于linux系统CPU篇---gt;CPU使用率升高

    1.CPU使用率为单位时间内CPU使用情况的统计,以百分比的方式展示. LINUX作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运 ...

  3. VAX计算机CPU,解决“系统”进程的高CPU使用率

    要诊断CPU使用率问题,应使用Windows事件跟踪(ETW)捕获CPU采样数据/配置文件. Windows 10 WPT可以在Windows 8 / Server 2012,Windows 8.1 ...

  4. 10 | 案例篇:系统的软中断CPU使用率升高,我该怎么办?

    上一期我给你讲了软中断的基本原理,我们先来简单复习下. 中断是一种异步的事件处理机制,用来提高系统的并发处理能力.中断事件发生,会触发执行中断处理程序,而中断处理程序被分为上半部和下半部这两个部分. ...

  5. 系统的软中断CPU使用率升高,该怎么办?

    中断是一种异步的事件处理机制,用来提高系统的并发处理能力.中断事件发生,会触发执行中断处理程序,二中断处理程序被分为上半部和下半部这两个部分. 上半部对应硬中断,用来快速处理中断: 下半部对应软中断, ...

  6. 系统的软中断CPU使用率升高,我该怎么办?

    点击关注公众号,利用碎片时间学习 中断是一种异步的事件处理机制,用来提高系统的并发处理能力.中断事件发生,会触发执行中断处理程序,而中断处理程序被分为上半部和下半部这两个部分. 上半部对应硬中断,用来 ...

  7. linux 使cpu使用率升高_Linux系统中CPU占用率较高问题排查思路与解决方法

    Linux服务器上出现CPU负载达到100%居高不下的情况,如果CPU 持续跑高,则会影响业务系统的正常运行: CPU利用率.根据经验来看,用户空间进程占用CPU比例在 65-70%之间,内核(系统) ...

  8. 理解Linux系统平均负载和CPU使用率

    CPU 使用率 CPU 使用率就是 CPU 非空闲态运行的时间占比,它反映了 CPU 的繁忙程度.比如,单核 CPU 1s 内非空闲态运行时间为 0.8s,那么它的 CPU 使用率就是 80%:双核 ...

  9. linux 使cpu使用率升高_Linux程序性能优化:CPU的上下文切换

      linux操作系统是将CPU轮流分配给任务,分时执行的.而每次执行任务时,CPU需要知道CPU寄存器(CPU内置的内存)和程序计数器PC(CPU正在执行指令和下一条指令的位置)值,这些值是CPU执 ...

最新文章

  1. v-html解析的相对地址img 显示不出来_人工智能专题作品解析——APPInventor安卓应用开发AI图像识别简单应用...
  2. java通用象棋游戏_在通用国际象棋界面周围模拟GraphQL包装器
  3. feign调用走不走网关全局拦截_feign服务端出异常客户端处理的方法
  4. P1083 借教室(标记永久化线段树/二分+前缀和)难度⭐⭐⭐★
  5. hibernate 关联总结
  6. 027-日期和时间组件
  7. initializing mysql database:_安装MySQL 出现initializing database安装失败解决办法
  8. 76. Minimum Window Substring
  9. hbase/thrift/go连接失败
  10. java集合转js数值_前端js调用接口转换Map数组数据
  11. MATLAB语言初步学习(四)
  12. 苍南二职计算机专业分数线,苍南第二职业中专2021年招生录取分数线
  13. 快速了解SOLIDWORKS Simulation的有限元分析法
  14. retrofit简单的网络请求
  15. python兼职能挣多少钱-副业赚钱干货【4】Python程序员变现之路
  16. 利用Yocto构建嵌入式Linux教程01--第一个Yocto项目构建
  17. Android计步器算法实现(2)
  18. 网易邮箱出现 FA_INVALID_SESSION
  19. 小程序(十六)小程序仿微信聊天页面及功能
  20. 0基础java好学吗?完整学习路线图速收藏

热门文章

  1. iOS触动精灵模拟触控类外挂原理分析
  2. 认识区块链——思维导图总结
  3. QQ 简洁模式切换失败解决方法
  4. 举例:大学怎么过的一种思路
  5. 百度搜索过滤指定网站
  6. 提高IT项目沟通技巧
  7. java socket 域名解析_在java中,使用域名进行socket通讯
  8. python怎么分析数据差异的方法_如何比较两组数据之间的差异性
  9. React组件的生命周期函数
  10. Helm:问题对应:k3s下使用helm 3提示Kubernetes cluster unreachable