1.背景

当来自设备的中断时,操作系统会暂停它正在执行的操作并开始寻址该中断。

在某些情况下,IRQ一个接一个地非常快,操作系统无法在另一个到达之前完成一个服务。当高速网卡在短时间内收到大量数据包时,就会发生这种情况。

因为操作系统在到达时无法处理IRQ(因为它们一个接一个地到达得太快),

操作系统会将它们排队等待稍后由名为ksoftirqd的/n(n为cpu的逻辑号)的内核线程处理。

每个ksoftirqd/n内核线程都运行ksoftirqd()函数,实际上该函数执行下面的循环:

for (;;)
{set_current_state(TASK_INTERRUPTIBLE);schedule();while (local_softirq_pending()){preempt_disable();do_softirq(); // 处理软中断preempt_enable();cond_resched();}
}

如果ksoftirqd占用的CPU时间超过一小部分,则表示机器处于严重的中断负载下。

2.解决方法

可以用cat /proc/interrupts来查看设备造成的中断情况

例如某天我的是这样

           CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       0:         44          0          0          0          0          0          0          0   IO-APIC   2-edge      timer1:          0          1          1          0          0          0          0          1   IO-APIC   1-edge      i80428:          1          0          0          0          0          0          0          0   IO-APIC   8-edge      rtc09:          0          0          0          0          0          0          0          0   IO-APIC   9-fasteoi   acpi12:          0          0          0          0          2          1          1          0   IO-APIC  12-edge      i804214:         16      35619    2171878      33951    2172032      35710    2172366      35859   IO-APIC  14-edge      ata_piix15:          0          0          0          0          0          0          0          0   IO-APIC  15-edge      ata_piix16:       1492       1492       1492   38096398       1489       1492       1496       1491   IO-APIC  16-fasteoi   ioc019:         38         38         37         38         37         39         38         38   IO-APIC  19-fasteoi   radeon20:          3          3          4          4          5          3          4          4   IO-APIC  20-fasteoi   uhci_hcd:usb3, uhci_hcd:usb521:          4          3          4          3          5          4          4          4   IO-APIC  21-fasteoi   ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb424:          0          0          0          0          0          0          0          0   PCI-MSI 32768-edge      PCIe PME25:          0          0          0          0          0          0          0          0   PCI-MSI 49152-edge      PCIe PME26:          0          0          0          0          0          0          0          0   PCI-MSI 65536-edge      PCIe PME27:          0          0          0          0          0          0          0          0   PCI-MSI 81920-edge      PCIe PME28:          0          0          0          0          0          0          0          0   PCI-MSI 98304-edge      PCIe PME29:          0          0          0          0          0          0          0          0   PCI-MSI 114688-edge      PCIe PME30:          0          0          0          0          0          0          0          0   PCI-MSI 458752-edge      PCIe PME31:       1380       1346       1353       1339       1339       1357       1329       1360   PCI-MSI 3670016-edge      eno232:   85511967   85513711   85083641   83994544   85084225   85501922   85093691   85515746   PCI-MSI 1572864-edge      eno1
NMI:     234694     241328     233682     235747     227371     232679     239850     230941   Non-maskable interrupts
LOC:  809615451  844980307  827224481  872760389  798336595  856256586  824716208  858800687   Local timer interrupts
SPU:          0          0          0          0          0          0          0          0   Spurious interrupts
PMI:     234694     241328     233682     235747     227371     232679     239850     230941   Performance monitoring interrupts
IWI:     234691     241323     233680     235741     227368     232677     239846     230941   IRQ work interrupts
RTR:          0          0          0          0          0          0          0          0   APIC ICR read retries
RES:   50636771   36959166   32328971   32915351   29242823   29889193   29928230   31502838   Rescheduling interrupts
CAL:    4443659    7479033    5592654    1507128    4465404    8053047    5214542    1501877   Function call interrupts
TLB:    6476601    6460251    6517362    6225272    6466684    6345076    6491077    6193616   TLB shootdowns
TRM:          0          0          0          0          0          0          0          0   Thermal event interrupts
THR:          0          0          0          0          0          0          0          0   Threshold APIC interrupts
DFR:          0          0          0          0          0          0          0          0   Deferred Error APIC interrupts
MCE:          0          0          0          0          0          0          0          0   Machine check exceptions
MCP:      22724      22724      22724      22724      22724      22724      22724      22724   Machine check polls
ERR:          0
MIS:          0
PIN:          0          0          0          0          0          0          0          0   Posted-interrupt notification event
PIW:          0          0          0          0          0          0          0          0   Posted-interrupt wakeup event

注意到序号32那爆炸的中断数量,可以断定是网卡瘫痪了。只需要ifdown eno1 && ifup eno1重启网卡即可。

ksoftirqd/n 占用cpu 100%相关推荐

  1. linux 进程 ksoftirqd/n 占用cpu 100%

    1.背景 当来自设备的中断时,操作系统会暂停它正在执行的操作并开始寻址该中断. 在某些情况下,IRQ一个接一个地非常快,操作系统无法在另一个到达之前完成一个服务.当高速网卡在短时间内收到大量数据包时, ...

  2. 使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因

    使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因 原文:使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因 公司的产品一直 ...

  3. kprobe分析内核kworker占用CPU 100%问题总结

    kprobe分析内核kworker占用CPU 100%问题总结 Create by Billow.Jen,2020.3.8 前言 利用linux kernel 动态追踪技术,排查问题本身就可能会变成一 ...

  4. 如何停止Linux系统中占用CPU 100%的进程

    linux 很好,占用系统资源低,低端机都可以流畅的运行.但是偶尔也会遇到像windows下烦人的问题,那就是进程占用CPU100%. 最近我就遇到了这个问题,还好,我使用了一套组合拳,把占用CPU资 ...

  5. spoolsv.exe占用cpu 100%的解决方法

    前几天,太太的笔记本遇到了spoolsv.exe占cpu 99%的的问题,要我帮她重新安装操作系统.我是懒得重装的,所以在网上搜索了一下:大部分关于这个问题的文章都是将相关打印后台服务给禁用解决的,可 ...

  6. eclipse占用内存过大_MySQL 服务占用cpu 100%,如何排查问题? (MySQL面试第七弹)...

    阅读本文大概需要 4 分钟.来自:cnblogs.com/dennyzhangdd/p/11585971.html 一.引子 对于互联网公司,线上CPU飙升的问题很常见(例如某个活动开始,流量突然飙升 ...

  7. svchost.exe占用CPU 100%,也可能是这样的原因

    近来碰到这么个问题,就是电脑在使用一段时间后变得异常迟钝,用任务管理器一看,发现CPU被一个名为svchost.exe的进程占用完了.     一开始的反应是遭遇病毒了,马上到网站上搜索相关的文章,找 ...

  8. python-kafka消费者-占用CPU 100%

    #消费完释放CPU,否则会直接将CPU消耗完 msg = consumer.poll() time.sleep(0.05)

  9. WerFault.exe 占用CPU 100%的问题处理

    转载自:https://technet.microsoft.com/en-us/library/cc754364(v=ws.11).aspx 关于禁用WerFault.exe进程的操作方法,网络上的其 ...

最新文章

  1. Flutter开发之图片加载(九)
  2. 目前用的java几_java目前常用的几种定时任务
  3. 更新MYSQL生成日历表,支持跨年份 存储过程
  4. 交互式多模型_论文深度提升的万金油方法——多属性决策 Ⅱ
  5. visio网络拓扑图_人才测评模型是什么?5步了解好看模型图
  6. 程序员做到年薪60万也不去炫富,背后原因曝光,麻烦做个人吧
  7. Odoo10教程---模块化三:模型约束,高级视图,工作流,安全性,向导,国际化和报表等
  8. c语言指针详解 PPT,最全C语言指针详解.ppt
  9. 戴尔笔记本修改硬盘模式为AHCI再安装ubuntu
  10. 软件测试周刊(第61期):内心强大的人都有三个共性「不和他人作比较」「不对他人有期待」「不批判他人」
  11. win10多显示器设置只有主显示屏显示任务栏
  12. VS中无法解析的外部命令的解决办法
  13. GIS(一)——在js版搜索地图上添加Marker标记
  14. 魔兽世界最新服务器推荐,[大陆]《魔兽世界》全新第六大区推荐服务器
  15. 定位尺寸的严重错误在哪里?
  16. mask rcnn 超详细代码解读(一)
  17. 请尊重我们移动10086每一位前台客服人员(ZZ)
  18. 什么样的女人才是老婆
  19. 关于网络安全设备总结
  20. java面试训练 app_Java面试训练app下载

热门文章

  1. 操作数组常用的几种方法
  2. Doris 平滑缩容,Be 节点卡住不动
  3. CS和BS的差别(转)
  4. 我们一直在说数字化转型,什么才是数字化转型?
  5. python中字符串切片取奇数_Python中的字符串切片(截取字符串)的详解
  6. kubernetes 之Guestbook 留言板
  7. 零基础学Java可行吗?怎么快速入行呢?
  8. PyCharm注释中出现中文运行报错
  9. 湖南软件工程自考本科总结
  10. vs2008破解升级