• Linux 软中断


    中断

    中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。

    由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。

    • 注意:

    中断处理程序在响应中断时,还会临时关闭中断。这就会导致上一次中断处理完成之前,其他中断都不能响应,也就是说中断有可能会丢失。

    软中断(softirq)

    Linux 将中断处理过程分成了两个阶段,也就是上半部和下半部:

    • 上半部用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或时间敏感的工作。也就是我们常说的硬中断,特点是快速执行;
    • 下半部用来延迟处理上半部未完成的工作,通常以内核线程的方式运行。也就是我们常说的软中断,特点是延迟执行。

    查看软中断和内核线程

    • /proc/softirqs 提供了软中断的运行情况;
    • /proc/interrupts 提供了硬中断的运行情况。

    查看软中断在CPU上累计次数:

    // Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型,可以通过查看 /proc/softirqs 来观察软中断的运行情况。
    // TIMER(定时中断)、NET_RX(网络接收)、SCHED(内核调度)、RCU(RCU 锁)
    [root@k8s /proc]# cat softirqs
                        CPU0       CPU1
              HI:          5          1
           TIMER:  444492709  271957759
          NET_TX:      18937      15860
          NET_RX:   34769092  430587974
           BLOCK:   12265925          0
    BLOCK_IOPOLL:          0          0
         TASKLET:        853        592
           SCHED:    4489427   66716813
         HRTIMER:          0          0
             RCU:  151213683  128619479
             
    
    

    每个 CPU 都对应一个软中断内核线程,这个软中断内核线程就叫做 ksoftirqd/CPU 编号。

    // 查看软中断线程运行情况
    [root@k8s /proc]# ps aux | grep softirq
    root         6  0.0  0.0      0     0 ?        S    Apr02   0:06 [ksoftirqd/0]
    root        14  0.0  0.0      0     0 ?        S    Apr02   2:06 [ksoftirqd/1]
    

    Sar

    sar(System Activity Reporter系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等

    [root@k8s /proc]# sar -n DEV 5
    Linux 3.10.0-1062.4.1.el7.x86_64 (instance-010oj085) 	04/07/2020 	_x86_64_	(2 CPU)
    
    04:28:56 PM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s
    04:29:01 PM vethweplf08851b      3.20      3.20      0.24      1.19      0.00      0.00      0.00
    04:29:01 PM vethweplaa5bdc5      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    04:29:01 PM     weave     30.40     31.60      3.54      9.76      0.00      0.00      0.00
    04:29:01 PM vethwepl932b3c7     10.40     12.20      1.56      3.68      0.00      0.00      0.00
    04:29:01 PM vxlan-6784      0.00      0.00      0.00      0.00      0.00      0.00      0.00
    
    • 第一列:表示报告的时间。
    • 第二列:IFACE 表示网卡。
    • 第三、四列:rxpck/s 和 txpck/s 分别表示每秒接收、发送的网络帧数,也就是 PPS。
    • 第五、六列:rxkB/s 和 txkB/s 分别表示每秒接收、发送的千字节数,也就是 BPS

    可以通过这个工具分析网络软中断的情况

    学习笔记
    来自极客时间:《Linux性能优化实战》

  • 相关阅读:
    THINKPHP3.2视频教程
    PHPCMS 学习
    PHPCMS 后台学习
    phpcms 模板学习
    二叉树的创建与遍历(链式存储)
    MySQL基础~~增、删、改、简单查
    队列的基本操作(链队列)
    MySQL基础~~表结构操作
    行编辑程序
    循环链表的基本操作
  • 原文地址:https://www.cnblogs.com/galvin007/p/12661599.html
Copyright © 2020-2023  润新知