IRQ的使用

下面是一台服务器的top后的cpu状态:

    si的意思是system interrupt,也就是系统层面的软中断。也就是说一颗cpu接受一个软件的请求时,需要放弃其他正在处理的工作,这么一切换就是软中断。默认情况下,程序都会使用第一颗CPU,所以会造成第一颗CPU的si较大,而其他核心的si较小,这也就完全失去了服务器多核cpu的意义。所以有时我们需要手动设置程序使用哪颗CPU。但是和nginx可以手动绑定使用哪颗cpu是不同的,因为那种绑定是尽量使用指定的cpu核心,避免si,***能,此时,此颗CPU的idle值很小。而这里指的是避免程序使用一颗CPU。

linux的si可以在/proc/interrupt中看到:

他们的意义如下:

IRQ编号、各个程序再对应cpu核心上发生的si次数、可编程中断控制器、程序名(也叫做设备)

IRQ全称为Interrupt Request,即是“中断请求”的意思,也就是程序请求CPU处理自己的请求。各个程序(设备)都有自己对应的的IRQ编号,这个IRQ编号在/proc/irq目录中,每个数字和程序名字的对应关系如上图。

对于有着高并发场景的服务器来说,网卡对cpu的占用也是相当高的,所以如果让其占用一个cpu核心那么不仅会影响系统性能,而且也会影响

在每台电脑的系统中,是由一个中断控制器8259或是8259A的芯片(现在此芯片大都集成到其它的芯片内)来控制系统中每个硬件的中断控制。目前共有16组IRQ,去掉其中用来作桥接的一组IRQ,实际上只有15组IRQ可供硬件调用。

时间: 2024-10-04 02:44:09

IRQ的使用的相关文章

SMP IRQ Affinity

转:非常有用的方法,调式神器 Background: Whenever a piece of hardware, such as disk controller or ethernet card, needs attention from the CPU, it throws an interrupt.  The interrupt tells the CPU that something has happened and that the CPU should drop what it's d

分布式通讯优化篇 – IRQ affinity

在一次C500K性能压测过程中,发现一个问题:8 processor的CPU,负载基本集中在CPU0,并且负载达到70以上,并通过mpstat发现CPU0每秒总中断(%irq+%soft)次数比较高. 基于对此问题的研究,解决和思考,便有了这篇文章,希望大家能够喜欢,也欢迎大家留言讨论. 在正文开始之前,我们先来看两个跟性能相关的基本概念:中断与上线文切换(在实际场景中,发现90%以上的同学无法解释清楚,希望这篇文章能给你带去比较深刻的理解). 中断         Hardware inter

rtems 4.11 IRQ (arm,beagle)

arm IRQ入口在 cpukit/score/arm/arm_exec_interrupt.S 中,其中BSP最关心就是 bl bsp_interrupt_dispatch 这句,看看beagle BSP的实现, c/src/lib/libbsp/arm/beagle/irq.c,实现很简单,找到是哪一个中断源(vector number)引起的中断,然后调用 bsp_interrupt_handler_dispatch 即可,最后中断处理完后,通知中断控制器中断处理结束,可以引入下一个中断了

Linux 多核下绑定硬件中断到不同 CPU(IRQ Affinity) 转

硬件中断发生频繁,是件很消耗 CPU 资源的事情,在多核 CPU 条件下如果有办法把大量硬件中断分配给不同的 CPU (core) 处理显然能很好的平衡性能.现在的服务器上动不动就是多 CPU 多核.多网卡.多硬盘,如果能让网卡中断独占1个 CPU (core).磁盘 IO 中断独占1个 CPU 的话将会大大减轻单一 CPU 的负担.提高整体处理效率.VPSee 前天收到一位网友的邮件提到了 SMP IRQ Affinity,引发了今天的话题:D,以下操作在 SUN FIre X2100 M2

linux kernel的中断子系统之(三):IRQ number和中断描述符【转】

转自:http://www.wowotech.net/linux_kenrel/interrupt_descriptor.html 一.前言 本文主要围绕IRQ number和中断描述符(interrupt descriptor)这两个概念描述通用中断处理过程.第二章主要描述基本概念,包括什么是IRQ number,什么是中断描述符等.第三章描述中断描述符数据结构的各个成员.第四章描述了初始化中断描述符相关的接口API.第五章描述中断描述符相关的接口API. 二.基本概念 1.通用中断的代码处理

ATMEL精妙的IRQ中断处理过程

A: 从栈地址开始,栈顶为AT91SAM7S64的16K片内RAM尽头0x00204000IRQ_STACK_SIZE = 3*8*4FIQ_STACK_SIZE = 0x004ABT_STACK_SIZE = 0x004UND_STACK_SIZE = 0x004SVC_STACK_SIZE = 0x800SYS_STACK_SIZE = 0x400 irq栈为什么用3*8*4=96B呢?因为irq最多8级嵌套,ARM字长4B,而3,是由于每次进栈均破坏了3个寄存器r0.spsr.lr,所以需

AR9331中Linux内核启动中与IRQ中断相关的文件

先列出框架,具体后继再来分析. 首先是lds文件,该文件设置了各个section在FLASH或RAM中的先后顺序. 位于~/openwrt1407/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.49/arch/mips/kernel/vmlinux.lds 另外一个名字相似的,~/openwrt1407/build_dir/target-mips_34kc_uClibc-0.9.33.2/li

linux的中断子系统简介(汇编和hard irq部分)_ARM平台(S5PV210)

2011年9月份时候做的笔记, 当时阅读中断子系统的代码后做的一个PPT, 内核版本不记得了, 硬件平台是samsung 的S5PV210. 这部分主要是针对汇编和hard irq的部分, 在hard irq处理后的softirq的处理, 以及下半部的处理(tasklet/workqueue)都没有涉及. Agenda ?Interrupts in ARM ?Important structs ?External interrupt resources in S5PV210 ?Code flow

linux kernel的中断子系统之(四):High level irq event handler

一.前言 当外设触发一次中断后,一个大概的处理过程是: 1.具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler 2.machine driver对应的中断处理handler中会根据硬件的信息获取HW interrupt ID,并且通过irq domain模块翻译成IRQ number 3.调用该IRQ number对应的high level irq event handler,在这个high level的handler中