Linux性能优化
文章平均质量分 86
Linux性能优化
lenky0401
这个作者很懒,什么都没留下…
展开
-
Intel x86架构之I/O APIC
在中断被lapic接受后,修改掩码位从非屏蔽状态到屏蔽状态对那个中断(即已被lapic接受的中断)没有任何影响,这与在中断递交到处理器之前,设备撤回了中断的情况类似。只有在对应的目标APIC将IRR(Interrupt Request Register)位从0修改为1时,也就是对应中断已经被目标APIC处理掉而不再处于pending未决状态时,那个中断输入引脚上的新信号才会被重新检测到。如果该位设置为0,那么对应的中断信号没有被屏蔽,边缘或水平中断都将被投递到目标lapic。标识中断的当前投递状态。原创 2024-01-07 16:11:22 · 1360 阅读 · 1 评论 -
Intel x86架构之多处理器
APIC架构被设计为可伸缩扩展。82489DX APIC有8bit的ID寄存器,可以表示最多255个APIC设备,此外,它的逻辑目标寄存器(Logical Destination register)可支持32bit,可以表示最多32个设备。一般而言,在集中式APIC的系统上,操作系统必须使用STARTUP IPI来唤醒其它应用处理器(application processors),而在82489DX APIC的系统上,需使用INIT IPI来唤醒其它应用处理器。在多处理器系统上,中断通过APIC进行控制。原创 2024-01-07 16:10:26 · 683 阅读 · 1 评论 -
Intel x86架构之APIC
通过设置MDA为全1,即为广播消息到所有lapic。MDA的28-31bit位为1的广播IPI(应该是接着上一句说的,即在奔四和至强处理器上,0FH不是广播地址,所以这里才说不被支持,后面会提到0FH是P6和奔腾处理器上的广播地址)或被初始化为最低优先投递模式的I/O子系统不被physical目标模式支持,所以软件(这个软件应该设置BIOS或OS)不能做这样的配置。lapic和io apic都是为多处理器系统而设计的,lapic处理来之io apic的中断,或来之其它处理器的IPI中断,或自身产生的中断。原创 2024-01-07 16:08:12 · 1308 阅读 · 1 评论 -
Intel 性能监视器之二
这是因为当系统空闲时,idle进程默认执行的是mwait_idle()函数,其核心指令mwait导致CPU处于停机状态,所以流逝的时钟周期没有统计到计数器内,进而原本要溢出的计数器没有溢出,nmi中断也就没有触发。3,新的nmi_watchdog机制,其nmi中断源不再可以设置为IO-APIC(即nmi_watchdog=1),而只能是local APIC(即nmi_watchdog=2)。2,第1点是旧的nmi_watchdog机制,自2.6.37.x开始,有了新的nmi_watchdog机制。原创 2024-01-07 13:53:10 · 1228 阅读 · 1 评论 -
Intel 性能监视器
架构兼容事件可以在处理器发展过程中逐步增强,也就是可以认为架构兼容事件具有版本更新的概念,即在新型号的处理器上,提供的架构兼容事件可能要比旧型号的处理器要多,同一个架构兼容事件的功能可能也要更强大。针对不同型号的CPU处理器,它们各自拥有的性能计数寄存器是不同的,因此,相对。通过两组寄存器来实现对架构兼容事件的使用,一组为事件选择寄存器(IA32_PERFEVTSELx),一组为计数寄存器(IA32_PMCx),这两组寄存器是一一对应的,另外,它们的个数也非常有限。原创 2024-01-07 13:51:34 · 1121 阅读 · 1 评论 -
Triple Fault的捕获与处理
如果可以,对于捕获Triple Fault,最简便的方法就是使用虚拟机来进行操作,这样在发生Triple Fault时影响的只是虚拟机,在host机器里我们仍然可以做进一步处理。当前虚拟机比较多,比如最常用的Vmware、Qemu、Bochs等,我就试了一下Vmware,发生Triple Fault时Vmware会弹个框进行提示CPU进入shutdown模式,按确定(虚拟机)重启,按取消(虚拟机)关机;在实体机器上的Triple Fault捕获仍然有办法,但这需要更底层的操作,在Intel官方手册。原创 2024-01-07 11:32:53 · 1142 阅读 · 1 评论 -
Double Fault & Triple Fault
Double Fault从字面上来讲,就是前后的动作连续触发两个中断的异常,比如一个缺页异常没有对应的异常中断处理函数(用c代码表示即为NULL,空指针),这就将会引发一个典型的Double Fault,在这种情况下,如果发生缺页异常则将触发一个中断,此时cpu要去调用缺页异常中断处理函数进行处理,但却发现没有这个处理函数,因而这又是一个异常而再次触发中断,此时触发的就是Double Fault异常中断。前32个中断,每个中断的含义都可以在intel手册“原创 2024-01-07 11:26:14 · 909 阅读 · 1 评论