联系:QQ(5163721)
标题:Exadata上CPU相关的设置(感觉已经很好了,除了irqbalance)
作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]
有些情况下,Exadata上我们发现有IO降级的情况,但是检查磁盘和flashcard都没有损坏。
这时候,可能需要检查一下APIC timer功能是否正常(APIC timer没有正确开启可能导致iostat报告的吞吐量有降级的现象)
当发生这类问题时,可以对比vmstat的bi/bo(读和写的平均吞吐量),因为vmstat命令不受APIC timer的影响。
.
APIC Timer(Advanced Programmable Interrupt Controller)是一种时钟中断设备,即 高级可编程中断控制器
CPU通过彼此发送中断来完成它们之间的通信,APIC 就是通过编程触发lapic设备周期产生中断,然后注入到vcpu。
2000年以后的CPU都支持,这是Intel多处理规范的核心。
APIC Timer的模式APIC定时器包含3种定时器模式:
周期触发periodic
一次性触发one-shot
TSC-Deadline模式(最新的CPU里面支持)。
.
老版本的Exadata可以检查 dmesg|grep “Using local APIC timer interrupts”,来确认APIC timer是否正确开启。
新版本的Exadata可以检查 dmesg|grep “Using IOAPIC for interrupt routing”,来确认APIC timer是否正确开启。
.
例如,下面显示在这个1/4配置的Exadata X5-2 上都已经正确开启了APIC timer:
dm01db01: ACPI: Using IOAPIC for interrupt routing dm01db02: ACPI: Using IOAPIC for interrupt routing dm01cel01: ACPI: Using IOAPIC for interrupt routing dm01cel02: ACPI: Using IOAPIC for interrupt routing dm01cel03: ACPI: Using IOAPIC for interrupt routing
此外,影响CPU性能的还有很多因素,比如是否启用动态调频(实际上多数是降频,比如启用节能模式)。
可以使用cpufreq-info来检查cpu的当前频率和是否启用动态调频:
cpufreq-info|grep "current CPU frequency" cpufreq-info|grep "driver" cpufreq-info|grep "The governor" cpufreq-info|grep "cpufreq governors"
例如下面的输出:
dm01db01: current CPU frequency is 2.30 GHz (asserted by call to hardware). dm01db02: current CPU frequency is 2.30 GHz (asserted by call to hardware).
这个是否使当前CPU的最高主频呢?
在Exadata上可以使用很多命令检查CPU型号,主机型号(各种命令一大堆,都有类似功能),这里我使用CheckHWnFWProfile -s来检查:
[root@dm01db01 ~]# /opt/oracle.SupportTools/CheckHWnFWProfile -s|grep E5-2699 <Processor SIGNATURE="Intel(R) Xeon(R) E5-2699 v3 2.30GHz"> <ProcessorModel VALUE="Intel(R) Xeon(R) E5-2699 v3 2.30GHz"/> [root@dm01db01 ~]#
还可以使用/proc/cpuinfo里面的信息:
[root@dm01db01 ibdiagtools]# grep -E '^model name|^cpu MHz' /proc/cpuinfo cpu MHz : 2301.000 model name : Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz ........ [root@dm01cel02 cellos]# grep -E '^model name|^cpu MHz' /proc/cpuinfo cpu MHz : 2401.000 model name : Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz ........
可以看到Exadata X5-2上:
db节点的CPU 是: Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz
cell节点的CPU 是: Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
因此,回到上面的结果,我们看到当前CPU已经是最高主频了。
.
再看下cpufreq-info|grep “driver”的输出:
dm01db01: driver: acpi-cpufreq dm01db02: driver: acpi-cpufreq
这里表示已经正确的启用了ACPI。
看一下cpufreq-info|grep “The governor”的输出:
dm01db01: The governor "performance" may decide which speed to use dm01db02: The governor "performance" may decide which speed to use
这里表示CPU总是在最高主频下工作。
CPU有三种策略,
onemand (表示系统可以通过动态调整频率,降低功耗,具体的调整策略和内核的功耗管理算法有关)
userspace (表示用户可以自己设定cpu的频率)
performance (表示CPU总是在最高主频下工作)
最后,看一下cpufreq-info|grep “cpufreq governors”的输出:
dm01db01: available cpufreq governors: userspace, performance dm01db02: available cpufreq governors: userspace, performance
这里表示CPU总是在最高主频下工作,用户可以自己设定cpu的频率。
从BIOS中还可以看到CPU是否开启了节能(缺省是开启的),这个在一般使用SSD的服务器上都需要关注。
关于SSD上CPU节能设置,回头我们找机器,对着说,O(∩_∩)O哈哈~。
其实还需要关注一下 irqbalance(非Oracle特有,Linux的) ,这东西在老版本的Exadata上很多用户都被坑过,一般我们都关闭,虽然号称他调整CPU终端,提升性能,但实际是不稳定带来的问题太多了,因此,我建议关闭。Exadata 12.1.2.1.0版本上,db节点是缺省开启的,cell节点是缺省关闭的。
后面要对Exadata做压力测试,我关闭了db的一个节点,留一个是缺省的开启状态,到时候看看,在新版本上Oracle是否对此进行了优化。